vue加载three模型成功,但显示黑屏?

遇到问题解决方案:

遇到问题:导入到场景内的模型无法查看,而且也没有报错

这种会有可能有多种情况造成的,一般情况下都是下面两种情况造成的:

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)
  }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章