旋转真的是个难点
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", { diameter: 0.25 }, scene, true);
box.rotation.x = Math.PI / 3;
box.position = new BABYLON.Vector3(1, 2, 3);
var matrix = box.computeWorldMatrix(true); // force calculation of world matrix
var local_pos = new BABYLON.Vector3(0, 0.5, 0);
//top middle of box relative to box
var global_pos = BABYLON.Vector3.TransformCoordinates(local_pos, matrix);
//calculate world position
sphere.position = global_pos; //position sphere relative to world
控制台输出 console.log("box",matrix)得出的结果
box.computeWorldMatrix(true)获取的是以世界坐标系为准则进行变化得到的
按照绝对坐标变换的准则 相对左乘原则 由于box先x旋转 再 平移
对应左乘变化矩阵 W=T*R=[1 0 0 1
0 0.5 -0.86 2
0 0.86 0.5 3
0 0 0 1]
BABYLON里面以列来进行排序 0123分为对应W矩阵的a11 a21 a31 a41 4-7对应第二列
demo里面已知圆球相对于正方体的相对坐标 如何在经过矩阵变化后仍保持相对不动
用局W*局部坐标 获取圆球在世界坐标系的坐标即可
文章探讨了在Babylon.js中,如何处理旋转和矩阵变换,特别是如何保持物体的相对位置不变。通过示例代码展示了如何计算世界坐标和局部坐标的转换,以及矩阵W的构造和应用。
783

被折叠的 条评论
为什么被折叠?



