javascript - Three.js 中的光照贴图

标签 javascript three.js

光照贴图独立于其他纹理,对吧?

所以我必须设置第二组 UV。

我已使用第二组 UV 导出 JSON 对象并添加以下内容。

geometry.faceVertexUvs[0] = geometry.faceVertexUvs[1];

我没有得到任何工作结果。我缺少什么?也许有人可以告诉我一个方向。 Three.js r.73

loader.load("model.js", function(geometry){
geometry.faceVertexUvs[0] = geometry.faceVertexUvs[1];

var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial( {
  color: 0x777777,
  lightMap: THREE.ImageUtils.loadTexture( "lightmap.png" ),
  normalMap: THREE.ImageUtils.loadTexture( "normalmap.png" ),
  specularMap: THREE.ImageUtils.loadTexture( "specularmap.png" )
}));
scene.add(mesh );
});

最佳答案

Three.js 中的光照贴图需要第二组 UV。一种解决方案是通过复制第一组 UV 来添加第二组 UV。

对于 THREE.Geometry 你可以这样做:

geometry.faceVertexUvs[ 1 ] = geometry.faceVertexUvs[ 0 ];

对于THREE.BufferGeometry,使用此模式;

var uvs = geometry.attributes.uv.array;
geometry.addAttribute( 'uv2', new THREE.BufferAttribute( uvs, 2 ) );

三.js r.73

关于javascript - Three.js 中的光照贴图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054388/

相关文章:

javascript - css 变换高度不起作用

javascript - 表单输入不接受空格

javascript - Threejs - 几何坐标系到屏幕坐标系

javascript - 主干集合获取渲染在第一次加载时使用路由器运行两次

javascript - 在 div 中第二次加载相同内容时浏览器中的 ID 出现问题

3d - Three.js:地面反射。怎么运行的?

javascript - Three.js 三 Angular 形未绘制

javascript - Three.js 不拉伸(stretch)网格纹理(图像) - 使其覆盖其容器

javascript - threejs限制一行的长度

javascript - 对于 <input type ="submit"/> 元素,使用 JavaScript 更改按钮文本在 Opera (11.11) 中不起作用。为什么?