javascript - 为什么使用 THREE.SubdivisionModifier 时法线贴图无法正确渲染?

标签 javascript three.js

我需要用法线贴图渲染一个“软”立方体。运行代码时,我没有收到任何错误或警告,但是当我在函数调用中指定法线贴图参数并刷新浏览器时,我看到一个黑色对象。如果删除法线贴图,我可以成功渲染具有 Phong Material 的立方体。有趣的是,如果我将 Material 更改为法线 Material ,并尝试对立方体进行纹理处理,则会应用我尝试使用的实际 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);  

最佳答案

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

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

三.js r.70

关于javascript - 为什么使用 THREE.SubdivisionModifier 时法线贴图无法正确渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530125/

相关文章:

javascript - 将 renderer.clear() 放在 render() 的末尾会使我的场景变黑

javascript - (THREE.js) 软件渲染器未在 Node 中渲染我的场景

javascript - 带参数的 Vuex 映射 setter/getter - 缓存?

javascript - 如何在 RowDataPacket 中循环数据

javascript - 指定来自不受信任主机的脚本的散列

javascript - 三.js : Can i create mesh to replace lot of object

javascript - Three.js - 2D + 3D 网格

javascript - 在 Javascript 中比较 x ='' 和 x = 0

javascript - 修改 Cordova 插件加载行为以加快加载时间

javascript - Three.js - 合并多个几何体/网格移除公共(public)区域