Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 旋转围绕球体排列的对象以查看原点,然后再次旋转_Three.js - Fatal编程技术网

Three.js 旋转围绕球体排列的对象以查看原点,然后再次旋转

Three.js 旋转围绕球体排列的对象以查看原点,然后再次旋转,three.js,Three.js,我知道如何旋转围绕球体排列的对象,使其看起来像原点,但如何沿着从对象中心到球体原点的轴再次旋转它 在这里拉小提琴: 我尝试过的一切都没有奏效,包括我以前使用的代码,它与lookAt做了相同的事情,但我还添加了额外的轮换 我想我错过了一些非常简单的东西-任何指针?您可以使用makeRotationAxis()沿轴从球体原点旋转到网格。假设球体的原点为(0,0,0),可以执行以下操作: var axis = new THREE.Vector3( mesh.position.x, mesh.posit

我知道如何旋转围绕球体排列的对象,使其看起来像原点,但如何沿着从对象中心到球体原点的轴再次旋转它

在这里拉小提琴:

我尝试过的一切都没有奏效,包括我以前使用的代码,它与
lookAt
做了相同的事情,但我还添加了额外的轮换


我想我错过了一些非常简单的东西-任何指针?

您可以使用makeRotationAxis()沿轴从球体原点旋转到网格。假设球体的原点为(0,0,0),可以执行以下操作:

var axis = new THREE.Vector3( mesh.position.x, mesh.position.y, mesh.position.z );
var angle = someAmountYoudLike * Math.PI / 256;
var matrix = new THREE.Matrix4();
matrix.makeRotationAxis( axis.normalize(), angle ); 
mesh.rotation.setFromRotationMatrix( matrix );

正如我想象的那样,答案非常简单

在我的对象上调用
rotateZ(角度)
,成功了


此处演示:

谢谢Bob-我之前尝试过,所以我希望您的解决方案中有一条线我遗漏了,但它似乎仍然不正确-我遗漏了什么吗?我怀疑我最初对问题的描述是错误的-想象一下海洋上有一个大浮子-我想让它平放在水面上,但绕着浮子中心的轴旋转到地球的中心。