为什么当我更改Three.js网格的比例时,我的旋转会出错
Why does my rotation go awry when I change the scale of a Three.js mesh?
我想绕世界x和y轴旋转一个球体。我用这个代码成功地实现了这一点:
// Update ball rotation.
var tempMat = new THREE.Matrix4();
tempMat.makeRotationAxis(new THREE.Vector3(0,1,0), stepX/ballRadius);
tempMat.multiplySelf(ballMesh.matrix);
ballMesh.matrix = tempMat;
tempMat = new THREE.Matrix4();
tempMat.makeRotationAxis(new THREE.Vector3(1,0,0), -stepY/ballRadius);
tempMat.multiplySelf(ballMesh.matrix);
ballMesh.matrix = tempMat;
ballMesh.rotation.getRotationFromMatrix(ballMesh.matrix);
然而,当我以任何远离(1,1,1)的方式缩放ballMesh
时,旋转会以一种难以描述的方式出错。我在这里举了一个jsfiddle示例:
http://jsfiddle.net/pxTTv/26/(使用箭头键旋转)
如果你把比例(在jsfiddle代码中指示)改回(1,1,1),它会像我预期的那样工作
造成这种情况的原因是什么?我该如何解决?
您将scale
参数排除在对vector.getRotationFromMatrix( matrix, scale )
的调用之外。
此外,最好不要打乱对象矩阵——除非你真的知道自己在做什么。相反,只需设置对象的旋转、位置和比例,并让库更新矩阵。
在您的情况下,您覆盖了对象的矩阵,但幸运的是,它在渲染调用中被重新计算。
这是一把经过校正的小提琴:http://jsfiddle.net/pxTTv/27/
相关文章:
- 知道为什么我的旋转木马不会自动更改图片吗
- 我的自定义javascript旋转木马无法正常工作
- 如何使我的功能360度旋转并上下移动
- 为什么当我更改Three.js网格的比例时,我的旋转会出错
- 如何停止多次单击下一个以破坏我的图像旋转器
- 知道我的物品是否是最新的 - 猫头鹰旋转木马
- 为什么我的文本网格不恒定旋转
- 为什么我的猫头鹰旋转木马在我的第一组中不起作用?请问我的错误在哪里
- 如果我希望旋转后所有圆柱体的高度都是固定值,我将如何计算原始高度
- 如何让我的箭头小部件在第二次单击时向后旋转以开始
- 我的iPhone 5s无法使用钛合金进行水平旋转
- 在Prototype UI中将循环滚动添加到我的旋转木马中
- 当我的旋转木马动画到10,000+像素时,它会闪烁.这是jQuery的问题吗?
- 把我的旋转木马移到另一边
- 当附加项目时,我如何使我的旋转木马上的单击功能工作
- 如何将html、css和javascript编码结合起来使我的旋转木马工作
- 关于如何避免在我的旋转木马上进行昂贵的重新喷漆的建议
- 我如何才能使我的旋转木马自动播放,直到用户与之交互
- 为什么我的旋转木马会在用户交互中快速到达顶部
- 为什么我的旋转木马不转了?