反应三纤维在画布上显示多个蒙皮的网格

时间:2020-07-19 09:03:37

标签: reactjs three.js react-three-fiber

嗨,编码向导社区。这是我第一次使用react-tree-fiber。我有放在画布上的3D皮肤模型。这是sandbox。我要实现的目标是能够根据某个事件(例如按下按钮等)在场景中放置多个角色。到目前为止,我找不到任何可以帮助我实现目标的东西。 Here可以提供帮助,但是我无法将其合并到我的代码中。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

useLoader缓存数据,因此两个实例都试图在同一模型上运行。可能适用于几何体,但是我不认为您可以有两个蒙皮的网格引用相同的骨架。甚至不确定是否可以克隆它,看来在threejs中是不可能的。

因此解决方案很简单。就像在普通threejs中一样。代替useLoader用GLTFLoader加载gltf。它执行两个提取请求,两次提取并解析模型。

const [model, set] = useState()
useEffect(() => new GLTFLoader().load(url, set), [url])
return model ? <primitive object={model.scene} /> : null

演示:https://codesandbox.io/s/r3f-bones-7zw1c?file=/src/Stacy.js

否则,我将提出不同的问题或提出一个新的问题。尝试在useMemo中克隆该对象,并找出为什么它不起作用。应该,所以可能是threejs中的错误。