从对象复制THRE.js矩阵
copy THREE.js matrix from object
我需要在Three.js中多次使用相同的矩阵。我有一个Object3D,在执行此操作时,我将正确的矩阵放在console.log中:
console.log (scene.getObjectByName( "Pointer" ).matrix)
结果是:
T…E.Matrix4{elements:Float32Array[16]}elements:Float32Array[16]0:11:02:03:04:05:16:07:08:09:00:11 1:0 12:-150 13:0 14:0 15:1
请注意,第12个元素的值为-150(在obj.translationX(-150)之后)
var newMat = new THREE.Matrix4();
console.log(scene.getObjectByName("Pointer").matrix.elements)
// output: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
newMat = newMat.copy(scene.getObjectByName("Pointer").matrix);
console.log(newMat);
// output:elements: Float32Array[16] 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
返回一个恒等矩阵(意味着第12个元素是:0)
这里怎么了?
更新:在renderloop内部。。。newMat.copy(…)..工作正常!
three.js在根据对象的位置、比例和旋转来渲染页面时,会更新对象矩阵。因此,当你设置对象矩阵时,它会很快被重写。若要手动设置对象矩阵,必须将autoupdate设置为false。
object.matrixAutoUpdate = false;
然后使用您的代码。
var newMat = new THREE.Matrix4();
console.log(scene.getObjectByName("Pointer").matrix.elements)
// output: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
newMat = newMat.copy(scene.getObjectByName("Pointer").matrix);
console.log(newMat);
相关文章:
- 从对象复制THRE.js矩阵
- 三.js设置旋转矩阵超过90度时的奇怪行为
- 三.js使用矩阵旋转时对象位置问题
- jscript 垃圾收集器的速度有多快?三.js矩阵旋转
- Json Google 用 JS 映射矩阵数据
- 计算骨骼的矩阵以在三.js中查看对象
- 如何使用javascript(jquery,native js)创建带有sum矩阵的透视表
- 设置three.js投影矩阵方向
- 自动或随机散点图矩阵选择d3.js
- 用JS矩阵形成网格
- 如何在Raphael JS 2中应用变换矩阵到路径坐标
- 旋转对象随机矩阵(Three.js)
- 如何在Node.js中将灰度图像矩阵转换为图像
- 使用JS的有向图矩阵可视化
- Node.js中的矩阵乘法与多线程
- JS矩阵乘法问题
- 使用d3.js创建类似矩阵的HTML表
- 使用undercore.js快速矩阵转置
- js更新相机矩阵世界
- 如何得到一个矩阵的逆在three.js