我正在加载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>
答案 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
# ...