*.obj 文件中的法线贴图

Normal map in *.obj file

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

map_Bump 总是一样的颠簸。 MTL 文件中的哪个参数定义了 THREE.JS 中的凹凸比例?

我的 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

目前不支持。但是,您可以从文件中删除凹凸贴图并在 Three.js.

中手动映射它

正在加载纹理。

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

您将需要遍历您的模型并找到它 material。例如

    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;
        }
    });

然后直接赋值给你需要的material。或者创建一个新的 Three JS 网格并将其分配到那里。请注意,如果 OBJ 包含多个网格,您将需要找到 'right' 一个。

mesh = new THREE.Mesh( geometry, material);
material.bumpMap = bmap;
material.bumpScale = 1;