使用THREE.SubdivisionModifier时,为什么不能正常渲染normalMap?

时间:2015-02-15 19:23:15

标签: javascript three.js

我需要使用法线贴图渲染“软”立方体。运行代码时我没有收到任何错误或警告,但是当我在函数调用中指定普通的map参数并刷新浏览器时,我看到一个黑色的对象。如果我删除法线贴图,我可以使用Phong材质成功渲染一个立方体。有趣的是,如果我将材质更改为普通材质,并尝试对立方体进行纹理处理,则会应用我要使用的实际RGB法线贴图。此外,如果我不在立方体上使用THREE.SubdivisionModifier(),并且只是渲染一个锋利的立方体,我可以使法线贴图正常工作。有任何想法吗?提前致谢。这是我的代码:

var cube_geo = new THREE.BoxGeometry(.1, .1, .1, 5, 5, 5);
   var smooth = cube_geo.clone();
   var modifier = new THREE.SubdivisionModifier(5);
     modifier.modify(smooth);
var cube_mat = new THREE.MeshPhongMaterial(
  {
    color: 0x000000,
    specular: 0x222222,
    normalMap: cube_normal_map,
  }
);
cube = new THREE.Mesh(smooth, cube_mat);
  scene.add(cube);  

1 个答案:

答案 0 :(得分:2)

Three.SubdivisionModifier目前有一个限制,即不处理UV。

请参阅SubdivisionModifier.js源代码中的注释。

three.js r.70