Sto tentando di caricare file obj in una scena WebGL utilizzando Three.js. Ho visto alcuni codici di esempio come quello qui sotto, che funziona alla grande, ma voglio sapere cosa fa il comandoCosa significa "traversa dell'oggetto" in Three.js?
object.traverse();
fare? Cosa succederà se non attraversiamo? Grazie.
// prepare loader and load the model
var oLoader = new THREE.OBJLoader();
oLoader.load('models/chair.obj', function(object, materials) {
// var material = new THREE.MeshFaceMaterial(materials);
var material2 = new THREE.MeshLambertMaterial({ color: 0xa65e00 });
object.traverse(function(child) {
if (child instanceof THREE.Mesh) {
// apply custom material
child.material = material2;
// enable casting shadows
child.castShadow = true;
child.receiveShadow = true;
}
});
object.position.x = 0;
object.position.y = 0;
object.position.z = 0;
object.scale.set(1, 1, 1);
lesson6.scene.add(object);
});
Quindi, il modo in cui ottengo questo è: la funzione scritta all'interno dell'argomento trasversale verrà applicata a tutti i figli del nostro oggetto. Destra? Ora, solo per renderlo più chiaro per me stesso, se non vogliamo usare la funzione traversa, dovremmo applicare la nostra funzione (quella scritta in argomenti trasversali) per ogni oggetto della scena e unire tutti i risultati? – mfaieghi
Sì, hai capito bene. –
'object.traverse' sarà chiamato su child of child? In caso contrario, qual è la differenza tra la chiamata di 'object.traverse' e' object.child.forEach', o 'for' loop? – Halt