正确的方法来实现这个旧的R70 threejs代码以使用更新的版本

时间:2017-08-29 16:04:12

标签: javascript three.js camera quaternions

我有一些错误的代码。但是,它适用于这个jsfiddle就好了。我试图旋转一个立方体,并用轨迹球控件平移它。这适用于小提琴,但当我把它带入视觉工作室时,它会把这个错误扔进chrome,"无法读取属性 ' multiplyQuaternions'未定义"。

https://jsfiddle.net/perrinprograms/n6u6asza/668/

这是我试图实现的代码。我猜它是因为小提琴使用的是旧版本的three.js而我在我的项目中使用的是较新的版本。有没有人知道是否有办法正确写出这一行," geometry.quaternion"?谢谢。

var geometry = new THREE.Geometry(); 

deltaRotationQuaternion = new THREE.Quaternion()
                    .setFromEuler(new THREE.Euler(
                        toRadians(deltaMove.y * 0.4),
                        toRadians(deltaMove.x * 0.4),
                        0,
                        'XYZ'
                    ));
            geometry.quaternion.multiplyQuaternions(deltaRotationQuaternion, geometry.quaternion);
         }

1 个答案:

答案 0 :(得分:1)

THREE.Geometry没有quaternion属性(据我所知,r70也没有)。

THREE.Object3D 确实拥有该属性,并且是THREE.Mesh的基类,因此您可以像这样使用它:

var myMesh = new THREE.Mesh(geometry, material);
myMesh.quaternion.multiplyQuaternions(deltaRotationQuaternion, myMesh.quaternion);

编辑:看着你的小提琴,看起来你已经想出来了,对吗?

three.js r87