He centrado un modelo 3D GLTF importado alrededor de los ejes:
Sin embargo, cuando lo giro usando
scene.rotation.y += 0.01Gira alrededor de un conjunto de ejes completamente diferente: Ver aquí para gif .
Aquí está mi código (está dentro de una aplicación de reacción. App.UseEffect ):
const test = new SceneInit('myThreeJsCanvas'); test.initialize(); //seperate file for setting up camera and lighting etc test.animate(); let loadedModel; const glftLoader = new GLTFLoader(); glftLoader.load('./assets/planet/scene.gltf', (gltfScene) => { loadedModel = gltfScene; const center = new THREE.Vector3(); center.z = -5 gltfScene.scene.position.sub(center); //centering gltfScene.scene.scale.set(0.01, 0.01, 0.01); test.scene.add(gltfScene.scene); }); const animate = () => { if (loadedModel) { //loadedModel.scene.rotation.x += 0.01; loadedModel.scene.rotation.y += 0.01; //loadedModel.scene.rotation.z += 0.01; } requestAnimationFrame(animate); }; animate(); ¿Qué estoy haciendo mal aquí? He seguido muchas otras publicaciones y métodos, la mayoría incluida la geometry ahora obsoleta, todo fue en vano.
De hecho, esto no tenía nada que ver con mi código. Tenía que ver con el propio origen del modelo establecido en el archivo gltf . Para solucionarlo, busqué en el archivo con un editor de texto y cambié la matriz de transformación para que se centrara correctamente. Después de esto, giró perfectamente.