【发布时间】:2022-12-01 01:35:21
【问题描述】:
标签: javascript reactjs 3d blender react-three-fiber
标签: javascript reactjs 3d blender react-three-fiber
如果你对 jsx https://gltf.pmnd.rs/ 使用 gltf,你可以使用:
<mesh onClick={handleClick}/>
该模型将分解为声明性部分,您可以在之后逐一修改。
要通过拖动来旋转网格的某些部分,最简单的方法是使用 Gesture 包,基本的管道是这样的:
// mesh / object reference
const ref = useRef()
// cursor movement XY delta
const delta = useRef(null)
useFrame(() => {
if (delta !== null)
ref.current.rotation.set([delta.x,delta.y, 0])
})
return ( <…
<mesh ref={ref}/>
…/>)
请注意,您需要设置delta.current = { x, y }
自己在某个地方
拖动https://use-gesture.netlify.app/docs/options/#transform的那个例子
【讨论】:
好吧好吧好吧,我找到了解决方案,我要感谢@antokhio,他让我思考:)
我的解决方案:
useFrame((state, delta) => (ref.current.children[0].rotation.y -= 0.1001 * Math.PI / 180));
useFrame((state, delta) => (ref.current.children[1].rotation.z += 0.1001 * Math.PI / 180));
如您所见,我们只是从具有 3d 对象组件的对象中获取子项。所以……就这样吧!谢谢!
【讨论】: