三.js - 有没有一种简单的方法来更改 Object3D 的旋转枢轴
Three.js - Is there a simple way to change rotation-pivot of Object3D?
有没有一种简单的方法来更改THREE.Object3D
的旋转枢轴?默认点是Object3d
的位置点。
我有一组(实现为 THREE.Object3D
个)对象,我想围绕THREE.Vector3
可以在运行时更改的点将所有对象旋转在一起。
注意:组的位置无法更改。
我已经尝试过这个(在 Derte Trdelnik 的帮助下),但它不起作用:
someButton.onClick(function () {
var object = editor.selected;
if (!object instanceof THREE.Object3D) return;
var pivot = new THREE.Vector3(100, 0, 0);
var vectorToPivot = object.position.sub(pivot);
var moveToPivot = new THREE.Matrix4().makeTranslation(vectorToPivot.x,
vectorToPivot.y, vectorToPivot.z);
var rotation = new THREE.Matrix4().makeRotationZ(Math.PI);
var inverseMove = new THREE.Matrix4().makeTranslation(-vectorToPivot.x,-vectorToPivot.y, -vectorToPivot.z);
var matrix = inverseMove.clone().multiply(rotation).multiply(moveToPivot);
object.applyMatrix(matrix);
editor.signals.objectChanged.dispatch(object);
});
提前感谢!
你不必改变位置,只需创建一个你想要的矩阵:
var vectorToPivot = object.position.sub(pivot);
var moveToPivot = new THREE.Matrix4().makeTranslation(vectorToPivot.x,
vectorToPivot.y,vectorToPivot.z);
var rotation = new THREE.Matrix().makeRotationX(Math.PI/2);
var inverseMove = new THREE.Matrix().makeTranslation(-vectorToPivot.x,
-vectorToPivot.y,-vectorToPivot.z);
var matrix = inverseMove.clone().multiply(rotation).multiply(moveToPivot);
object.applyMatrix(matrix);
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 有条件更新d3.js力图中节点的最佳方法
- 三.js - 有没有一种简单的方法来更改 Object3D 的旋转枢轴
- 任何从three.js Object3D中获取边界框的方法