如何在 React Three Fiber 中执行就地动画
How to Perform Inplace Animations in React Three Fiber
我从 Mixamo 导入了一个带有一些动画的 3D 模型,想知道如何执行动画?
我从 npx gltfjsx 创建的 GLTF 文件:
const { nodes, materials, animations } = useGLTF("/Mannequin.glb");
const { actions } = useAnimations(animations, heroRef);
return (
<>
<group ref={heroRef} dispose={null}>
<group rotation={[Math.PI / 2, 0, 0]} scale={0.01}>
<primitive object={nodes.mixamorig1Hips} />
<skinnedMesh
geometry={nodes.Ch36.geometry}
material={materials.Ch36_Body}
skeleton={nodes.Ch36.skeleton}
/>
</group>
{/* <gridHelper args={[25, 25]}/> */}
</group>
</>
);
}
useGLTF.preload("/Mannequin.glb");
例如,我希望模型在不改变位置的情况下执行 运行 动画(运行ning 在现场),这样如果我可以执行平移模型的用户控件并使用动画循环,看起来它们实际上是 运行ning。
有没有办法做到这一点?我已经搜索过,但找不到任何东西。
useEffect(() => {
console.log(actions) // find out the name of your action
actions.someAction.play()
});
这将使动画播放到位,如果它是从 mixamo 中导出的,则有一个设置。
然后你可以在你的网格周围放置一个并让它根据你的控制移动
我从 Mixamo 导入了一个带有一些动画的 3D 模型,想知道如何执行动画? 我从 npx gltfjsx 创建的 GLTF 文件:
const { nodes, materials, animations } = useGLTF("/Mannequin.glb");
const { actions } = useAnimations(animations, heroRef);
return (
<>
<group ref={heroRef} dispose={null}>
<group rotation={[Math.PI / 2, 0, 0]} scale={0.01}>
<primitive object={nodes.mixamorig1Hips} />
<skinnedMesh
geometry={nodes.Ch36.geometry}
material={materials.Ch36_Body}
skeleton={nodes.Ch36.skeleton}
/>
</group>
{/* <gridHelper args={[25, 25]}/> */}
</group>
</>
);
}
useGLTF.preload("/Mannequin.glb");
例如,我希望模型在不改变位置的情况下执行 运行 动画(运行ning 在现场),这样如果我可以执行平移模型的用户控件并使用动画循环,看起来它们实际上是 运行ning。
有没有办法做到这一点?我已经搜索过,但找不到任何东西。
useEffect(() => {
console.log(actions) // find out the name of your action
actions.someAction.play()
});
这将使动画播放到位,如果它是从 mixamo 中导出的,则有一个设置。
然后你可以在你的网格周围放置一个并让它根据你的控制移动