three.js - 替换 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/
解决方案
不建议直接修改Object3D.children
,因为这不会Object3D.parent
正确更新。始终使用Object3D.add()
和Object3D.remove()
。如果您编写replaceWrite()
如下函数,则一切正常:
function replaceChild() {
group.remove( mesh );
group.add( mesh2 );
}
https://jsfiddle.net/qy1wzf2L/
three.js R108
推荐阅读
- html - 单击在闪电输入字段查找中显示所有结果时发生错误
- c - 适用于哈希表中的所有函数不起作用
- spring-boot - @WebMvcTest requires mocking beans unrelated to test
- android - Firebase admin sdk verifyIdToken verifies any token from any firebase projects
- spring - 使用 SecurityJackson2Modules 进行 Spring Security 会话对象序列化
- html - 在具有多个 div 的父 div 中居中特定子 div
- asp.net - 无法使用 AWS Net Core 3.1 Secrets.json 设置解析服务类型
- mysql - 获取具有类别的电影
- c++ - 离开团队副本后移除玩家某些增益的艾泽拉斯核心模块
- javascript - 仅为匿名登录设置 Firestore 规则