XTK - 工具包..立方体移动应该只旋转

XTK - Toolkit.. the cube moves by should only rotating

我是 3D 计算机图形学的新手,看到了一件奇怪的事情。

我使用了 XTK-Toolkit, 非常适合 DICOM。我在场景中添加了一个立方体并将其平移到远离中心的位置 (http://jsfiddle.net/64L47wtd/2/)。

立方体旋转时看起来像是在移动

这是XTK的bug,还是3D渲染的原理性问题?

window.onload = function() {

  // create and initialize a 3D renderer
  var r = new X.renderer3D();
  r.init();
  
  // create a cube
  cube = new X.cube();
  // skin it..
  cube.texture.file = 'http://x.babymri.org/?xtk.png';
  cube.transform.translateX(250);
  cube.transform.translateY(200);
  cube.transform.translateX(270);
  r.add(cube); // add the cube to the renderer
  r.render(); // ..and render it
  
  // add some animation
  r.onRender = function() {

    // rotation by 1 degree in X and Y directions
    cube.transform.rotateX(1);
    cube.transform.rotateY(1);
    
  };
  
};

您没有将立方体视为由多个顶点、边 and/or 面组成的复合对象。作为复合对象,它使用由 X、Y、Z 轴组成的 局部坐标系 。实际的立方体在内部使用与该立方体局部坐标系相关的顶点坐标进行描述。

通过"translating",您声明在局部坐标系内应用之前调整的那些顶点的相对坐标。然后旋转仍在该局部坐标系的轴上进行。

因此,这不是 X 工具包的错误。

您可能需要将立方体放入另一个(可能是完全透明的)容器对象以 translate/move 它,但要继续旋转立方体本身。

我尝试相应地延长您的 fiddle 但完全没有成功。考虑到 X Toolkit 的明显意图,这可能是该工具包的一个有意限制,因为它显然不支持仅依靠其 API 由多级对象层次结构组成的复杂场景的编程构造。