2016-02-24 62 views
1

我正在使用一个SEA3D模型,加载为BufferGeometry,并在外部添加了一个aoMapthree.js - 使用aoMap和第二个uv坐标的缓冲区几何体

但是这两个地图都存在一些问题。

  • aoMap只是不影响模型的颜色。

在three.js所文档,有一个参考

的aoMap要求的第二组UV的。

BufferGeometry,我知道UV信息是在geometry.attributes.uv

我如何得到第二套UV,所以我可以得到aoMap

谢谢

+0

您可以像下面这样将一组第二组UV添加到'BufferGeometry'中:'var uvs = geometry.attributes.uv.array; geometry.addAttribute('uv2',new THREE.BufferAttribute(uvs,2));'尝试一下并重新发布你的问题。 – WestLangley

+0

谢谢@WestLangley。我添加它,但我仍然没有得到激活aoMap的结果。 lightMap似乎工作。 任何想法为什么 我可以看到这与displacementMap也没有关系.. 我可以添加一个链接到dev版本.. –

+0

得到它的工作,得到它的工作,我需要更新缓存..非常感谢你@WestLangley我改变了这个问题,所以如果你想添加你的anwser我会投票正确的。 –

回答

3

您可以在第2组UV的添加到BufferGeometry像这样:(当然,使用这种模式,第二盘将比赛第一盘)

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

three.js r.74

1

我目前使用r89,似乎上面的代码不再工作。我访问过three.js文档页面,发现你不需要复制数组然后创建BufferAttribute对象的新实例,你可以使用BufferAttribute对象的复制方法。

这为我

geometry.attributes.uv2 = geometry.attributes.uv.clone() 

曾在以前的答案,你将最终获得两组相同的UV的。

+0

接受的答案适用于我。在你的答案中,简单地做到这一点就足够了:'geometry.attributes.uv2 = geometry.attributes.uv;'。 – WestLangley

相关问题