遇到问题解决方案:
遇到问题:导入到场景内的模型无法查看,而且也没有报错
这种会有可能有多种情况造成的,一般情况下都是下面两种情况造成的:
1.模型太小或者太大,这种情况可以尝试放大一千倍或者缩小一千倍来查看效果。
2. 模型的位置太偏,根本不在相机照射范围内,这种问题我们可以将模型居中到相机照射的焦点位置看
获取模型的大小:
// 获取模型大小
let box = new THREE.Box3().setFromObject( object );
let size = box.size();
根据实际情况进行缩放(放大或者缩小)
// 模型缩放
object.scale.set(0.0001, 0.0001, 0.0001);
再不行就再调整相机角度。
initModel () {
// texture
let manager = new THREE.LoadingManager()
manager.onProgress = function ( item, loaded, total ) {
console.log( item, loaded, total )
}
let textureLoader = new THREE.TextureLoader( manager )
let texture = textureLoader.load( this.textureImgSrc )
// model
let onProgress = function ( xhr ) {
if ( xhr.lengthComputable ) {
let percentComplete = xhr.loaded / xhr.total * 100
console.log( Math.round(percentComplete, 2) + '% downloaded' )
}
}
let onError = function ( xhr ) {
console.log(xhr)
}
let self = this
//创建fbx加载器
var loader = new OBJLoader();
loader.load('models/changfang.obj', function (object) {
object.scale.set(0.001, 0.001, 0.001);
let box = new THREE.Box3().setFromObject( object );
let size = box.size();
console.log(size)
object.traverse( function ( child ) {
let material = new THREE.MeshPhongMaterial({
// color:0xff0000,
specular:0x4488ee,
shininess:12,
opacity: 0.5,
transparent:true,
map:texture
})
child.material = material
if ( child.isMesh ) {
child.castShadow = true
child.receiveShadow = true
}
})
self.scene.add(object);
}, onProgress, onError)
}