微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过 TransformControls 在 Three.js 中围绕自己的中心旋转 Object3D

如何解决如何通过 TransformControls 在 Three.js 中围绕自己的中心旋转 Object3D

我想将 Object3D(它的网格组)旋转 TransformControls
所以我将 TransformControls 附加到 Object3D 并将 TransformControls 的位置设置为 Object3D 的中心。

这是尝试过的代码

let transformControl = new THREE.TransformControls(viewer.camera,viewer.canvas);
transformControl.setMode("rotate");
transformControl.setSpace("local");

let meshGroup = new THREE.Group();

// here I added lot of mesh to meshGroup.
............ 

let bBox = new THREE.Box3();
bBox.setFromObject(meshGroup);
let center = new THREE.Vector3(0,0);
center = bBox.getCenter(center);
center.sub(meshGroup.position);
transformControl.position.set(center.x,center.y,center.z);
transformControl.attach(meshGroup);

但是当我尝试使用 TransformControls 旋转时,Object3D 围绕世界轴而不是他自己的中心旋转。
我该如何解决
请任何人帮忙。

PS:我不想移动 meshGroup 的位置。

解决方法

我遇到了同样的问题,我通过移动对象位置解决了居中问题。

看看下面的stackblitz。我在不知道您使用什么框架/库的情况下创建了这个示例,但我是用打字稿制作的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。