/**
* 把一个对象移动到另一个父容器,并应用变换
* @param mesh 移动的对象
* @param newParent 要移动到的父容器
*/
const moveMesh = (mesh: THREE.Object3D, newParent: THREE.Object3D) => {
// 1. 获取世界矩阵
mesh.updateWorldMatrix(true, true)
const worldMatrix = mesh.matrixWorld.clone()
// 2. 解除父级关系
mesh.parent?.remove(mesh)
// 3. 添加到新父级
newParent.add(mesh)
// 4. 更新新父级矩阵
newParent.updateWorldMatrix(true, true)
// 5. 计算相对矩阵(核心)
const inverseParentMatrix = new THREE.Matrix4().copy(newParent.matrixWorld).invert()
goods.matrix.multiplyMatrices(inverseParentMatrix, worldMatrix)
goods.matrix.decompose(goods.position, goods.quaternion, goods.scale)
}
Three.js-移动对象到新的父容器并应用变换
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 本篇简单介绍three.js中矩阵变换及两种旋转表达方式。 矩阵变换 three.js使用矩阵来保存Object3...
- 时间:2018年8月13日 周一 数组相同对象进行分组,存储到新的数组直接上实现代码在设计上增强了方法的扩展性,可...