相关疑难解决方法(0)

在Three.js中围绕一个点旋转对象的正确方法是什么?

大多数关于three.js的教程/问题都建议使用Three.js围绕对象旋转对象的方法是在要旋转的位置创建父对象,附加对象,然后移动子对象。然后,当父母旋转时,孩子绕该点旋转。例如;

//Make a pivot
var pivot = new THREE.Object3D();
//Make an object
var object = new THREE.Mesh( new THREE.BoxGeometry(2,2,2), new THREE.MeshBasicMaterial() );
//Add object to pivot
pivot.add(object);

//Move object away from pivot
object.position.set(new THREE.Vector3(5,0,0));

//rotate the object 90 degrees around pivot
pivot.rotation.y = Math.PI / 2;
Run Code Online (Sandbox Code Playgroud)

这行得通,但它的局限性令人难以置信-如果您想围绕另一个点旋转对象,则不能这样做,因为一个对象不能有两个父对象。

下一个可行的方法是将旋转矩阵应用于对象的位置,例如:

//Make an object
var object = new THREE.Mesh( new THREE.BoxGeometry(2,2,2), new THREE.MeshBasicMaterial() );
//Move the object
object.position.set(new THREE.Vector3(5,0,0);

//Create a matrix
var matrix = new THREE.Matrix4();
//Rotate the matrix
matrix.makeRotationY(Math.PI / 2); …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

10
推荐指数
2
解决办法
8999
查看次数

我们如何在不修改场景树结构或几何体的情况下更改 Three.js 对象的旋转原点(枢轴点)?

我知道我们可以让对象有一个新的父对象作为枢轴,或者我们可以调整网格内的几何位置。

但是,我们如何在不重新指定对象的父对象或修改对象的父对象,并且不修改对象的几何形状(如果它是网格)的情况下在数学上实现这一点?

换句话说,我们需要对它的变换矩阵(或部分、旋转、位置、四元数等)做些什么才能达到相同的效果,同时满足上述不接触父级或几何体的要求?

javascript transform matrix rotational-matrices three.js

6
推荐指数
1
解决办法
5001
查看次数

围绕给定轴和角度的枢轴点正确旋转对象

在 Three.js 中似乎有相当多的旋转方式,我个人觉得不是很直观。请参阅示例
http://cloud.engineering-bear.com/apps/robot/robot.html 机器人图片

当我对多个对象应用旋转时,我得到了非常奇怪的意想不到的效果。例如,当我旋转已相互添加的对象并开始旋转父对象时,各个对象将突然彼此以不同的方式放置,而不是它们原来的位置。我现在正在尝试分组,并希望避免同样的效果。

请参阅http://pi-q-robot.bitplan.com/example/robot?robot=/models/thing3088064.json了解当前的情况,并查看https://github.com/BITPlan/PI-Q-Robot了解更多信息源代码。

因此,我根据不同的 API 选项搜索了正确的示例:

回转

function renderScene() {
    stats.update();
    //side1.rotation.z += 0.02;
    pivot.rotation.z += 0.02;
Run Code Online (Sandbox Code Playgroud)

轴旋转

绕世界轴旋转

   object.rotateAroundWorldAxis(p, ax, r * Math.PI * 2 / frames);
Run Code Online (Sandbox Code Playgroud)

在世界轴上旋转

object.rotateOnWorldAxis( axis, angle );
Run Code Online (Sandbox Code Playgroud)

旋转关于点

设置从轴角度旋转

setEulerFrom四元数

   quaternion = new THREE.Quaternion().setFromAxisAngle( axisOfRotation, angleOfRotation );
   object.rotation.setEulerFromQuaternion( …
Run Code Online (Sandbox Code Playgroud)

rotation inverse-kinematics three.js

5
推荐指数
1
解决办法
2834
查看次数

三维空间中点的旋转

我有一个与3D空间中的点旋转有关的问题.

假设我有一个带X,Y和Z坐标的点.

现在我想通过以下三种方式之一指定旋转来旋转它:

  1. 按用户定义的程度
  2. 通过用户定义的旋转轴
  3. 围绕(相对于)用户定义的点

我在这里找到了很好的链接,但它没有解决第3点.任何人都可以帮我解决这个问题吗?

algorithm math geometry rotation

1
推荐指数
1
解决办法
5666
查看次数