2016-07-01 17 views
6

Cerco di scrivere un'esportazione di un software di modellazione di piante 3-d su Three.js ma sono rimasto bloccato con le rotazioni e le traduzioni degli oggetti.Three.js rotazione e posizionamento di geometrie

Finora ho provato a utilizzare i quaternioni e le matrici di trasformazione ma entrambi i risultati non sono soddisfacenti. Per i miei test io uso un semplice albero binario che sembra in origine così:

enter image description here

i risultati della mia esportazione sono questo:

enter image description here

È possibile trovare il codice di entrambi esportazione sotto

http://ufgb966.forst.uni-goettingen.de/three/test2Quaternion.html

http://ufgb966.forst.uni-goettingen.de/three/test2Matrix.html

Mi pare che le mie rotazioni siano fatte attorno al punto sbagliato. Ogni rotazione dovrebbe essere fatta attorno all'origine di ogni geometria. Quale sarebbe un metodo per ottenere il risultato che sto cercando?

+0

consideri approccio a (linee 54-73) a [threejs.org/examples/webgl_geometry_hierarchy.html](http://threejs.org/examples/webgl_geometry_hierarchy.html) – gallygator

+0

@gallygator questo approccio è con angoli di Eulero che non ho e ricalcolarli dal matirx normalmente non è una buona idea. –

+1

Penso che il problema sia come hai costruito il tuo oggetto dalle sue parti componenti. L'obiettivo sarebbe stabilire una _object hierarchy_ per le geometrie dei componenti che trasformerebbero _together_ nello spazio mondiale. – gallygator

risposta

5

Nel caso non lo si fosse già, si potrebbe dare un'occhiata a questo: Using Matrices & Object3Ds in THREE e questo How to use matrix for transformation, mi ha aiutato. Nota inoltre che three.js utilizza un sistema di coordinate della mano destra che probabilmente conosci.

Se si esporta da Blender, provare -Z Forward, Y su.

+0

Si trattava di un problema di "destrorsa vs sistema di coordinate mancino". In seguito a questa [trasformazione della matrice] (http://stackoverflow.com/a/1264880/2421048) ho risolto il mio problema. –

0

Secondo me è necessario modificare la sequenza delle trasformazioni di traslazione e rotazione: il problema è nella sequenza delle trasformazioni.

Problemi correlati