【问题标题】:Three js - Multiple textures/images on single object三个 js - 单个对象上的多个纹理/图像
【发布时间】:2020-01-12 14:01:24
【问题描述】:

我想实现以下目标:从搅拌机导出 1 个对象 -> 将 2 个不同的纹理应用到 2 个不同的顶点组(包的把手和主体)

加载模型的函数:


      function loadModel() {
        var textureLoader = new THREE.TextureLoader();
        var map = textureLoader.load('./leather.jpg');
        var material = new THREE.MeshPhongMaterial({map: map});

        var loader = new THREE.OBJLoader();
        loader.load("bag.obj", function(object) {
          object.rotation.y = 90;
          scene.add(object);
          object.traverse( function ( node ) {
              if ( node.isMesh ) node.material = material;

            } );

          document.querySelector("h1").style.display = "none";
        });
      }

这将给出:

如何访问不同的顶点组并为它们分配不同的纹理?例如,把手可以是木头的。

【问题讨论】:

    标签: three.js blender


    【解决方案1】:

    在 Blender 的 Outliner 中,分离您的顶点组/网格并相应地重命名为“bagHandle”和“bagBody”。

    以下代码应该可以工作。

    function loadModel() {
      var textureLoader = new THREE.TextureLoader();
      var bagBodyMap = textureLoader.load('./leather.jpg');
      var bagBodyMaterial = new THREE.MeshPhongMaterial({map: bagBodyMap});
      var bagHandleMap = textureLoader.load('./wood.jpg');
      var bagHandleMaterial = new THREE.MeshPhongMaterial({map: bagHandleMap});
      var loader = new THREE.OBJLoader();
      loader.load("bag.obj", function(object) {
          object.rotation.y = 90;
          scene.add(object);
          object.traverse( function ( node ) {
              if ( node.isMesh ){
                  if ( node.name == "bagHandle" ){
                      node.material = bagHandleMaterial;
                  } else if ( node.name == "bagBody" ){
                      node.material = bagBodyMaterial;
                  }
              }
          });
          document.querySelector("h1").style.display = "none";
      });
    };
    

    【讨论】:

    • 感谢您的回复!但是,我确实设法自己考虑了这一点并获得了它的概念。关键是一个 .obj 可以容纳多个网格,并且您可以通过 object.traverse 遍历它们,正如您所说。有用的代码,非常感谢!
    猜你喜欢
    • 2020-02-04
    • 2017-06-25
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多