三个js,只将纹理加载到特定的mtl

时间:2015-05-27 15:16:25

标签: three.js

我正在加载obj&使用OBJMTLLoader的mtl文件。对象中有多种材质。我想要的是将纹理应用于对象内的特定材质。

EG。我有一个Bag对象,它有Handle,品牌名称,Wheels作为不同的材料。我想为每个人添加不同的纹理。材质文件中不存在纹理。我想仅使用代码添加它。

<pre>
    var loader = new THREE.OBJMTLLoader();
    loader.load( 'obj/Test.obj', 'obj/Test.mtl', function ( object ) {

    var tex = new THREE.MeshLambertMaterial({map:THREE.ImageUtils.loadTexture(     'obj/texture.png')});

    object.traverse( function(child) {
    if (child instanceof THREE.Mesh) {
    // apply custom material
    child.material = tex;

    // enable casting shadows
    child.castShadow = true;
    child.receiveShadow = true;
    }
    });
</pre>

1 个答案:

答案 0 :(得分:0)

您可以通过检查您在mtl文件中写入的材料的名称,然后指定纹理来完成此操作。

您的.mtl文件如下所示:

Example of glob.
----------------
$dir=realpath( $_SERVER['DOCUMENT_ROOT'] . '/path/to/folder' );
$col=glob( $dir . '/*.*' );
print_r( $col );

并在代码中:

newmtl wheels
Ka  1.0 1.0 1.0
Kd  1.0 1.0 1.0
d  1.0
# ...