【问题标题】:Double sided, obj model in ThreeJSThreeJS中的双面,obj模型
【发布时间】:2017-09-10 10:04:44
【问题描述】:

如何设置 obj 模型,以在 threejs (r.84) 中进行双面渲染?

这是 obj 加载器代码:

THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
  var mtlLoader = new THREE.MTLLoader();
  mtlLoader.setPath('house3/');
  mtlLoader.load( 'House.mtl', function( materials ) {
      materials.preload();
      var objLoader = new THREE.OBJLoader();
      objLoader.setMaterials( materials );
      objLoader.setPath( 'house3/' );
      objLoader.load( 'House.obj', function ( object ) {
          scene.add( object );
      });
  });

【问题讨论】:

  • THREE.DoubleSide 是你的朋友。在您加载 OBJ 的情况下,请查看类似的问题 here
  • 我尝试了该解决方案,但没有成功。有什么建议吗?

标签: javascript three.js


【解决方案1】:

三个js版本84没有OBJMTLLoader: https://github.com/mrdoob/three.js/issues/8105

linked 解决方案只需稍作修改即可工作:

THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
  var mtlLoader = new THREE.MTLLoader();
  mtlLoader.setPath('house3/');
  mtlLoader.load( 'House.mtl', function( materials ) {
      materials.preload();
      var objLoader = new THREE.OBJLoader();
      objLoader.setMaterials( materials );
      objLoader.setPath( 'house3/' );
      objLoader.load( 'House.obj', function ( object ) {
          object.traverse( function( node ) {
              if( node.material ) {
                  node.material.side = THREE.DoubleSide;
              }
          });
          scene.add( object );
      });
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 2015-03-23
    • 2016-07-18
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多