首页 > 解决方案 > 替换 THREE.Group() 的子元素会导致组的旋转和平移停止

问题描述

我创建了一个网格并将其添加到一个 THREE.Group() 中。组正在旋转,一切都很好,但是当我用另一个网格替换组的孩子(我们的网格)时,旋转停止了。

这里一切都很好:

group = new THREE.Group();
mesh = new THREE.Mesh(geometry, material);

group.add(mesh);
scene.add(group);

render() {
   group.rotation.x += 0.1;
}

但是当我更换网格时,旋转停止:

group.children[0] = mesh2;

这是一个小提琴:https ://jsfiddle.net/o6f5gx02/

标签: three.js

解决方案


不建议直接修改Object3D.children,因为这不会Object3D.parent正确更新。始终使用Object3D.add()Object3D.remove()。如果您编写replaceWrite()如下函数,则一切正常:

function replaceChild() {

    group.remove( mesh );
    group.add( mesh2 );

}

https://jsfiddle.net/qy1wzf2L/

three.js R108


推荐阅读