2016-03-22 9 views
0

Ich bin ein Neuling in 3D-Computergrafik und sah eine seltsame Sache.XTK - Toolkit .. der Würfel bewegt sich sollte nur rotieren

Ich habe das XTK-Toolkit benutzt, das ist großartig mit DICOM. Ich füge einen Würfel in die Szene ein und übersetze ihn weit vom Zentrum (http://jsfiddle.net/64L47wtd/2/).

, wenn der Würfel drehen sieht es aus wie es ist

bewegen Ist das ein Fehler in XTK oder ein prinzipielles Problem mit 3D-Rendering?

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

Indem Sie Ihre Geige beobachten, ist es ziemlich klar, dass der Drehpunkt nicht mit dem Mittelpunkt des Würfels identisch ist. Das liegt an der Übersetzung der Koordinaten auf dem Würfel. Rotation und Translation werden beide auf dieselbe Referenz angewendet: Würfel. Ich würde empfehlen, ein separates Containerobjekt zu verwenden, um das Übersetzungs- oder Überprüfungs-Toolkit für die Verwendung anderer Ansätze zum "Verschieben" des Cubes zu verwenden. – cepharum

Antwort

0

Sie vermissen den Würfel ein Verbundobjekt, bestehend aus mehreren Scheitelpunkten, Kanten und/oder Flächen zu betrachten. Als zusammengesetztes Objekt verwendet es lokales Koordinatensystem, das aus den Achsen X, Y, Z besteht. Der tatsächliche Würfel wird intern unter Verwendung von Koordinaten für Scheitelpunkte beschrieben, die sich auf dieses kubisch-lokale Koordinatensystem beziehen.

Mit "übersetzen" deklarieren Sie die relativen Koordinaten der Vertices, die vor dem Anwenden innerhalb dieses lokalen Koordinatensystems angepasst werden. Die Rotation arbeitet dann noch an den Achsen dieses lokalen Koordinatensystems.

Dies ist also kein Fehler von X Toolkit.

Möglicherweise müssen Sie den Würfel in ein anderes (wahrscheinlich vollständig transparentes) Containerobjekt einfügen, um ihn zu verschieben/verschieben, aber den Würfel selbst weiter drehen.

Ich habe versucht, Ihre Geige entsprechend zu erweitern, aber es ist überhaupt nicht gelungen. Unter Berücksichtigung der offensichtlichen Absichten von X Toolkit könnte dies eine beabsichtigte Einschränkung dieses Toolkits sein, da es offensichtlich nicht die programmatische Konstruktion komplexer Szenen unterstützt, die aus mehrstufigen Objekthierarchien bestehen, indem es sich nur auf seine API verlässt.

+0

Dank dir, ich gebe mit xtk auf und wechseln zu three.js .. mit nrrd anstelle von DICOM. Für meinen Zweck brauche ich ein oder zwei dynamisch transformierbare Objekte (Translation und Rotation) in Bezug auf das dicom/nrrd-Volumen. – vagus1975

Verwandte Themen