* .obj文件中的法线贴图

时间:2015-04-22 14:09:04

标签: three.js blender wavefront

在blender中我创建了一个法线贴图,我将像OBJ(Wawefront)一样导出到混合器中,并存储在* .mtl文件中,如" map_Bump"。

map_Bump总是有相同的bumpsacale。 MTL文件中的parramter定义了THREE.JS中的bumpscale?

我的MTL文件:

newmtl ship_white
Ns 0.000000
Ka 0.000000 0.000000 0.000000
Kd 0.656604 0.656604 0.656604
Ks 0.433962 0.433962 0.433962
Ni 1.000000
d 1.000000
illum 2
map_Kd 2t3l.png
map_Bump 2t3l_normal.jpg

1 个答案:

答案 0 :(得分:3)

目前不支持此功能。但是,您可以从文件中删除凹凸贴图并在Three.js中手动映射。

加载纹理。

sudo npm link express

您需要遍历模型并找到它的材料。 e.g。

var bmap = THREE.ImageUtils.loadTexture('bumpmap.jpg');

然后直接指定您需要的材料。或者创建一个新的三个JS网格并在那里分配它。但是要注意,如果OBJ包含多个网格,则需要找到“正确”网格。

    object.traverse( function( node ) {
        if ( node instanceof THREE.Mesh ) {
            // for smoothing
            node.geometry.computeVertexNormals();
            console.log(node);
        }
        if (node instanceof THREE.Mesh && node.material instanceof THREE.MeshPhongMaterial ) {
            // console.log(node);
            geometry = node.geometry;
            material = node.material;
        }
    });