2017-10-10 1 views
0

J'ai un script qui positionne des cubes de largeurs, de hauteurs et de profondeurs différentes et qui peine à les aligner avec précision en fonction des xAxis, yAxis et zAxis (qui varient également).three.js - comment traduire la géométrie

var geometry = new THREE.BoxGeometry(width, height, depth); 
var cube = new THREE.Mesh(geometry, material); 
cube.position.set(xAxis, yAxis, -zAxis); 
scene.add(cube); 

Je crois que c'est parce que le cube est positionné en fonction de son centre, est pourtant là une méthode pour la positionner basée sur l'avant, à gauche et coin - qui résoudrait ce problème pour faire varier les cubes de taille?

+0

Salut Tout exemple sur jsfiddle? –

+0

Ou une image avec le résultat souhaité, car il est difficile à comprendre, au moins pour moi, ce que _ "avant, gauche et coin" _ est. – prisoner849

+0

* "J'ai du mal à les aligner avec précision sur les xAxis, yAxis et zAxis" * - quel est le problème exact? Peut-être qu'une image serait utile. –

Répondre

2

Vous pouvez traduire la géométrie si un coin de la boîte se trouve à l'origine:

var geometry = new THREE.BoxGeometry(width, height, depth); 
geometry.translate(width/2, height/2, depth/2); 

Si vous avez plusieurs instances de cube de différentes tailles, il est préférable d'utiliser ce modèle:

var geometry = new THREE.BoxGeometry(1, 1, 1); // create once and reuse 
geometry.translate(0.5, 0.5, 0.5); 

var cube_1 = new THREE.Mesh(geometry, material); 
cube_1.scale.set(width, height, depth); 

trois.js r.87

+0

Merci @WestLangley - a fonctionné parfaitement! – wrdevelop