Sto usando il seguente codice per ridimensionare e centrare un oggetto compresso msgpack caricato usando ObjectLoader e non funziona. Penso che il mio oggetto abbia una rotazione su di esso, e quindi causa strani comportamenti. Su alcuni oggetti, si centra con successo, ma su altri il centraggio è sfalsato e anche il ridimensionamento non è corretto.Come centrare e ridimensionare l'oggetto threejs
In questo frammento, il risultato è la scena da ObjectLoader. Il mio pensiero era che l'oggetto non fosse molto ben formato, ma non ne sono sicuro. Volevo che la tabella sull'immagine o qualsiasi altro utente inserisse la mesh in cima alla griglia, centrata e ridimensionata in modo che la dimensione massima fosse di 1 unità.
Ogni misure quadrati 0.25, l'asse sono a 0,0,0 http://i.stack.imgur.com/fkKYC.png
// result is a threejs scene
var geometry = result.children[0].geometry;
var mesh = result.children[0];
geometry.computeBoundingBox();
var middle = new THREE.Vector3();
middle.x = (geometry.boundingBox.max.x + geometry.boundingBox.min.x)/2;
middle.y = -geometry.boundingBox.min.y;
middle.z = (geometry.boundingBox.max.z + geometry.boundingBox.min.z)/2;
middle.negate();
mesh.position.copy(middle);
// scales the mesh up to maxsize
var maxSize = 1;
// gets the biggest axis
var maxVal = geometry.boundingBox.max.x - geometry.boundingBox.min.x;
if (maxVal < geometry.boundingBox.max.y - geometry.boundingBox.min.y) {
maxVal = geometry.boundingBox.max.y - geometry.boundingBox.min.y;
}
if (maxVal < geometry.boundingBox.max.z - geometry.boundingBox.min.z) {
maxVal = geometry.boundingBox.max.z - geometry.boundingBox.min.z;
// scales the current size proportional to the maxval, times maxsize
mesh.scale.divideScalar(maxVal * maxSize);
self.scene.add(result);
Il riquadro di selezione è il quadrato rosso attorno all'oggetto. –