【问题标题】:render OBJ file using THREE.OBJLoader使用 THREE.OBJLoader 渲染 OBJ 文件
【发布时间】:2018-04-27 09:53:34
【问题描述】:

如何使用 THREE.OBJLoader 方法渲染 OBJ 文件,我有一个示例 OBJ 格式,但它不会渲染任何东西,也不会在 chrome 开发工具中看到错误

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    查看https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_obj.html#L75 上的 OBJLoader 使用示例

    (在行动http://mrdoob.github.com/three.js/examples/webgl_loader_obj.html

    var loader = new THREE.OBJLoader();
    loader.load( objURL, function ( object ) {
      scene.add( object );
    } );
    

    【讨论】:

      【解决方案2】:

      尝试在场景中添加灯光或只为 Obj 分配一个 MeshBasicMaterial 以查看其形状:

          var objLoader = new THREE.OBJLoader();
          var material = new THREE.MeshBasicMaterial({color: 'yellow', side: THREE.DoubleSide});
          objLoader.load('file.obj', function (obj) {
              obj.traverse(function (child) {
      
                  if (child instanceof THREE.Mesh) {
                      child.material = material;
                  }
      
              });
              scene.add(obj);
          });
      

      然后你可以看到模型实际上已经被加载了。如果没有,请尝试调整相机的位置。

      文档忽略了这一点,因此对于包括我在内的初学者来说,这似乎很混乱。 :)

      【讨论】:

      • 我知道这是一个相当老的答案,但你知道是否有办法在 loader.load() 的回调函数之外将对象添加到场景中?
      • @stefannew 那么恐怕你必须将 Obj 模型嵌入到同一个脚本中,这样浏览器就不需要 AJAX 获取它,因此不需要回调。
      猜你喜欢
      • 2014-04-06
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 2013-12-11
      • 2012-09-13
      • 2011-12-12
      • 2019-04-24
      • 1970-01-01
      相关资源
      最近更新 更多