主要代碼。如下,不加 .geometry.center() 自轉。軸心不在物體中心點 ,加上geometry.center() 可以正常自轉。但物體位置改變了。輪子脫離了汽車。前面設定的position也無效。求大神指點。
在3dmax 軟體中調整輪子軸心后再匯出也是無效。
/** 加入模型 */
function createModel() {
// model
var onProgress = function ( xhr ) {
if ( xhr.lengthComputable ) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
}
};
var onError = function () { };
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
//加載模型
new THREE.OBJLoader()
.setPath( 'models/obj/bentley_motors/' )
.load('qc10.obj', function ( object ) {//加載模型
object.position.y =-180;
object.position.x =-350;
object.position.z =200;
object.scale.x = 0.04;
object.scale.y = 0.04;
object.scale.z = 0.04;
left_front_wheel = new THREE.Object3D;
left_front_wheel.position.y =-180;
left_front_wheel.position.x =-350;
left_front_wheel.position.z =200;
left_front_wheel.scale.x = 0.04;
left_front_wheel.scale.y = 0.04;
left_front_wheel.scale.z = 0.04;
var left_front_1,left_front_2 ;
object.traverse(function(child) {
if(child instanceof THREE.Mesh) {
if(child.name=="left_front_wheel"){
left_front_2= child;
}
console.log("元素——"+child.name)
console.log(child)
}
})
left_front_wheel.add(left_front_2);
//left_front_wheel.children[0].geometry.center()
scene.add( left_front_wheel );
ready=true;
return object;
}, onProgress, onError );
}
//輪子自轉 影片
function updateWheel(){
left_front_wheel.rotation.x-=speed;
}
uj5u.com熱心網友回復:
木有人么
uj5u.com熱心網友回復:
// 先獲取geometey的中心點位置并留存let center = new THREE.Vector3();
geometry.computeBoundingBox();
geometry.boundingBox.getCenter(center);
let x = center.x;
let y = center.y;
let z = center.z;
// 把物件放到坐標原點
geometry.center();
// 繞軸旋轉
geometry.rotateZ(0.1);
// 再把物件放回原來的地方
geometry.translate(x, y, z);
// 這種方式是不會重繪顯示的,需要執行一下render
renderer.render(scene, camera);
// 需要做成影片效果的話,就是重復放到原點-旋轉-放回原處-重繪顯示的操作
uj5u.com熱心網友回復:
我也遇到這個問題。我先讓它回歸坐標原點,然后其他組件按照它的位置來擺放。uj5u.com熱心網友回復:
問題解決了嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/269894.html
標籤:其他
下一篇:計數器的疑問
