2016-03-22 1 views
0

Я новичок в 3D компьютерной графике и видел странную вещь.XTK - Инструментарий .. перемещение куба должно только вращаться

Я использовал XTK-Toolkit, ведьма отлично подходит для DICOM. Я добавляю куб в сцену и переводил его далеко от центра (http://jsfiddle.net/64L47wtd/2/).

когда куб вращается, похоже, она движется

Является ли это ошибка в XTK, или принцип проблемы с 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); 
 
    
 
    }; 
 
    
 
};

+0

Наблюдая за своей скрипкой, совершенно ясно, что центр вращения не идентичен центру куба. Это связано с переводом координат на кубе. Вращение и перевод применяются к одной и той же ссылке: куб. Я бы посоветовал использовать отдельный объект-контейнер для выполнения перевода или инструментария проверки для использования других подходов для «перемещения» куба. – cepharum

ответ

0

Скучает рассматривать куб составной объект, состоящий из нескольких вершин, ребер и/или граней. В качестве составного объекта используется локальная система координат, состоящая из осей X, Y, Z. Фактический куб описывается внутренне с использованием координат для вершин, связанных с этой локальной системой координат куба.

Под «переводом» вы указываете, какие относительные координаты вершин корректируются до применения внутри этой локальной системы координат. Затем вращение по-прежнему работает над осями этой локальной системы координат.

Таким образом, это не ошибка инструментария X.

Возможно, вам нужно будет поместить куб в другой (возможно, полностью прозрачный) контейнерный объект, чтобы перевести/переместить его, но продолжать вращать сам куб.

Я попытался увеличить вашу скрипку, но не смог добиться успеха. Принимая во внимание очевидные намерения X Toolkit, это может быть предполагаемое ограничение этого инструментария для него, очевидно, не поддерживает программное построение сложных сцен, состоящих из многоуровневых иерархий объектов, опираясь только на его API.

+0

Благодаря вам я отказываюсь от использования xtk и переключаюсь на three.js .. используя nrrd вместо DICOM. Для моей цели мне нужен один или два динамически трансформируемых объекта (перевод и ротация) в отношении объема dicom/nrrd. – vagus1975

Смежные вопросы