我现在很困惑:基本的X.transform.rotate()函数为我提供了意想不到的结果,即使是非常简单的场景!
旋转角度正常,您可以在此处看到: http://jsfiddle.net/1sv25uLx/
前一个场景仅包含Y = 0的对象。黄色平行六面体的旋转很好。
但是,如果我引入更多对象,则会添加翻译,我无法理解原因: http://jsfiddle.net/1bo7zdfs/1/
// create XYZ widgets with spheres
trysphere = new X.sphere();
trysphere.center = [0, 0, 0];
trysphere.color = [1, 1, 1];
trysphereX = new X.sphere();
trysphereX.center = [50, 0, 0];
trysphereX.color = [1, 0, 0];
trysphereY = new X.sphere();
trysphereY.center = [0, 50, 0];
trysphereY.color = [0, 1, 0];
trysphereZ = new X.sphere();
trysphereZ.center = [0, 0, 50];
trysphereZ.color = [0, 0, 1];
r.add(trysphere);
r.add(trysphereX);
r.add(trysphereY);
r.add(trysphereZ);
// create a parallelepiped
cube = new X.cube();
cube.center = [0, 0, 0];
cube.color = [1, 1, 0];
// orient it along X
cube.lengthY = cube.lengthZ = 5;
cube.lengthX = 40;
// add it
r.add(cube);
// rotate it (same result if done before or after .add)
cube.transform.rotateY(90);
我尝试过使用旧版本的插件,手动输入旋转矩阵,更改.add,.transform和.render的顺序......但我无法摆脱这些烦人的偏移。< / p>
有人可以帮帮我吗? @haehn:我正在研究Ricola3D的界面,他无法在2012年完成这项工作。
编辑:我看到你在X / Wiki / Future中谈论这个问题。但是,我不介意必须将对象的位置设置为[0,0,0],旋转它,然后定位它,但它甚至不会那样工作。
答案 0 :(得分:0)
好的,我找到了问题的根源:你必须在添加旋转对象之前调用r.resetBoundingBox()。