Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在自定义材质和Object Three.js上添加纹理_Three.js_Textures_Texture Mapping - Fatal编程技术网

在自定义材质和Object Three.js上添加纹理

在自定义材质和Object Three.js上添加纹理,three.js,textures,texture-mapping,Three.js,Textures,Texture Mapping,在下面的代码中,我从Marvelous designer导入了对象和材料,我可以使用它们。现在我想在材质和对象上添加纹理(.jpg文件)。我该怎么做 const objLoader = new THREE.OBJLoader(); const mtlLoader = new THREE.MTLLoader(); mtlLoader.setMaterialOptions({side:THREE.DoubleSide}); //loaded mat

在下面的代码中,我从Marvelous designer导入了对象和材料,我可以使用它们。现在我想在材质和对象上添加纹理(.jpg文件)。我该怎么做

  const objLoader = new THREE.OBJLoader();
  const mtlLoader = new THREE.MTLLoader();
  mtlLoader.setMaterialOptions({side:THREE.DoubleSide});
                    //loaded material here
        mtlLoader.load( 'mrv_shirt6.mtl', function( materials ) {
            materials.preload();
                            //loaded object here
            objLoader.setMaterials( materials );
            objLoader.load( 'mrv_shirt6.obj', function ( object ) {
                object.position.set( 0, -4.2, 0 );
                scene.add( object );
            },
    // onProgress callback
    function ( xhr ) {
        console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
    },

    // onError callback
    function ( err ) {
        console.log( 'An error happened' );
    });
        });

  function render(){
    requestAnimationFrame(render);
    renderer.render(scene,camera);
  }
如您所见,我使用导入的材质和对象。现在我想用我的自定义纹理(即.jpg文件)覆盖该材质和对象

我尝试了下面的代码来加载纹理,但它没有像我预期的那样工作:

  const objLoader = new THREE.OBJLoader();
  const mtlLoader = new THREE.MTLLoader();
  mtlLoader.setMaterialOptions({side:THREE.DoubleSide});

        mtlLoader.load( 'mrv_shirt6.mtl', function( materials ) {
            materials.preload();

            objLoader.setMaterials( materials );
            objLoader.load( 'mrv_shirt6.obj', function ( object ) {
                object.position.set( 0, -4.2, 0 );

      // texture
      var textureLoader = new THREE.TextureLoader( );
      texture = textureLoader.load("kumas/kumas1.jpg");
      object.traverse( function ( child ) {
                //if ( child.isMesh ) child.material.map = texture;
                if ( child.isMesh ) child.material = new THREE.MeshPhongMaterial({
                        //color:     0x996633,
                        //specular:  0x050505,
                        //shininess: my_shine_value,
                        map:       texture,
                        //side:      THREE.DoubleSide
                });
            } );

                scene.add( object );
            },
    // onProgress callback
    function ( xhr ) {
        console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
    },

    // onError callback
    function ( err ) {
        console.log( 'An error happened' );
    });
        });

  function render(){
    requestAnimationFrame(render);
    renderer.render(scene,camera);
  }

  render();
上面的代码对材质或对象的颜色进行了更改,但我看不到任何图案更改,我的意思是我看不到对象上纹理的图案。我只看到纹理的主颜色应用于对象。例如,物体变成红色、蓝色或粉色。但没有图案或纹理,只有单色变化。 寻找你的想法
谢谢

一个合理的猜测是你的。obj模型没有定义顶点uv。嗯,你是伟大的@WestLangley。我不知道什么是UV,但我意识到有一部分是“浓缩UV坐标”,我选择了这些首选项进行了尝试。现在物体的四分之一部分显示纹理。有趣的是,只有右下角的四分之一部分显示了正确的纹理。我正在分享显示正确纹理的图像:另一个合理的猜测是尝试
texture.wrapps=texture.wrapT=THREE.RepeatWrapping@WestLangley你太棒了,这就是解决办法。非常感谢。你建议我读哪本教程?你能和我分享一些与3J、材质和纹理相关的链接吗。我看了一些到三个JS文档,但不知怎么的,它对我来说很复杂。我愿意接受你的建议。谢谢合理的猜测是你的。obj模型没有定义顶点uv。嗯,你是伟大的@WestLangley。我不知道什么是UV,但我意识到有一部分是“浓缩UV坐标”,我选择了这些首选项进行了尝试。现在物体的四分之一部分显示纹理。有趣的是,只有右下角的四分之一部分显示了正确的纹理。我正在分享显示正确纹理的图像:另一个合理的猜测是尝试
texture.wrapps=texture.wrapT=THREE.RepeatWrapping@WestLangley你太棒了,这就是解决办法。非常感谢。你建议我读哪本教程?你能和我分享一些与3J、材质和纹理相关的链接吗。我看了一些到三个JS文档,但不知怎么的,它对我来说很复杂。我愿意接受你的建议。谢谢