Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 缓冲区几何体网格面材质实现r68_Javascript_Three.js_Buffer Geometry - Fatal编程技术网

Javascript 缓冲区几何体网格面材质实现r68

Javascript 缓冲区几何体网格面材质实现r68,javascript,three.js,buffer-geometry,Javascript,Three.js,Buffer Geometry,我们最近切换到r68,并将所有几何图形移动到THREE.BufferGeometry 我们在很多地方使用了THREE.MeshFaceMaterial,根据THREE.BufferGeometry不支持它。解决方案似乎是创建多个网格,我尝试了这一点,但它似乎不工作,我没有得到任何错误 我的做法如下: var oldGeometry = ... // THREE.Geometry from our loader var materials = ... // Material array from

我们最近切换到r68,并将所有几何图形移动到
THREE.BufferGeometry

我们在很多地方使用了
THREE.MeshFaceMaterial
,根据
THREE.BufferGeometry
不支持它。解决方案似乎是创建多个网格,我尝试了这一点,但它似乎不工作,我没有得到任何错误

我的做法如下:

var oldGeometry = ... // THREE.Geometry from our loader
var materials = ... // Material array from our loader, uses lightmaps, normalmaps etc.
var bufferGeometry = new THREE.BufferGeometry();
var geometry = bufferGeometry.fromGeometry(oldGeometry);

var group = new THREE.Object3D();

materials.forEach(function(material){
  group.add(new THREE.Mesh(geometry, material));
});

geometry.attributes.uv = geometry.attributes.uvs;
这工作正常,没有错误,但渲染时,所有光照贴图等似乎都不工作,几何体看起来很好,但只有一种颜色

有没有关于如何正确实现这一点的提示

编辑:

紫外线问题:

编辑2:

在深入研究WebGLRenderer源代码之后,我认为实现这一点比现在值得做的工作多得多。现在我们将继续使用旧的几何图形,但我仍然愿意接受建议;)

编辑3: 您可以在此处找到自己完成此操作的基本方法:


此处正在进行改进three.js导出器的工作,例如导出具有多种材质的缓冲几何体。

在处理r68中的UV时,
bufferGeometry.fromGeometry()
中存在错误

尝试以下解决方法:

bufferGeometry.attributes.uv = bufferGeometry.attributes.uvs;

不幸的是,这并没有真正起到帮助作用。如果我分离不同的网格(不同的位置),我可以看到每个网格都有自己的材质,但是当组合时,只有一个可见。我试着先用贴图创建网格,就像这里建议的那样,但也没用。有没有使用多种材质的BufferGeometry的工作示例,或者你能给我指出uv问题吗?我刚刚意识到材质会应用于整个几何体,因此如果我有一种带有纹理的材质,它看起来非常有趣。我想我必须分割我的几何体,这使得这很难^^