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 向three.js几何体动态添加面_Javascript_Three.js - Fatal编程技术网

Javascript 向three.js几何体动态添加面

Javascript 向three.js几何体动态添加面,javascript,three.js,Javascript,Three.js,我正在开发一些用于生成三维模型的webgl软件,并且依赖于动态几何体。我观察到了一些非常奇怪的行为,我能够在其中孤立出来 似乎在将几何体实例添加到场景后添加的任何新面,都不会(正确)渲染添加的任何新面。在线框模式下(如示例中所示),根本不会渲染新几何体。使用纹理材质时,我还观察到,有时新几何体不会根据摄影机的角度进行渲染 回到JSFIDLE,我使用了一个现有的three.js代码示例(misc_exporter_obj.html)作为支架,但在第7行,我创建了一个通用函数来向几何体添加一个三角

我正在开发一些用于生成三维模型的webgl软件,并且依赖于动态几何体。我观察到了一些非常奇怪的行为,我能够在其中孤立出来

似乎在将几何体实例添加到场景后添加的任何新面,都不会(正确)渲染添加的任何新面。在线框模式下(如示例中所示),根本不会渲染新几何体。使用纹理材质时,我还观察到,有时新几何体不会根据摄影机的角度进行渲染

回到JSFIDLE,我使用了一个现有的three.js代码示例(misc_exporter_obj.html)作为支架,但在第7行,我创建了一个通用函数来向几何体添加一个三角形。启动时调用
addGeometry
函数,如果取消注释第36行,则可以看到预期结果:

var material=new THREE.MeshBasicMaterial({线框:true});
几何体=新的三个。几何体();
addTriangle(-50,-50,50,-50,50,50);
//添加三角形(-50,-50,-50,50,50,50);//取消注释以测试最终输出的外观。

添加(新的三个网格(几何体、材质))要将面添加到现有几何图形中

由于缓冲区无法调整大小,最好的解决方案是切换到
BufferGeometry
,预先分配足够大小的缓冲区,并设置绘图范围。看见也是

如果添加顶点,则需要重新计算圆台剔除的边界球体才能正常工作

geometry.computeBoundingSphere();
或者,如您所说,您可以禁用截锥剔除:

mesh.frustumCulled = false;

3.js.r.91

再读一遍。不能调整缓冲区的大小。该文档解释了如何使用
BufferGeometry
。该文档说您不能调整
BufferGeometry
的缓冲区大小,我使用的是
Geometry
。您是否建议切换到
BufferGeometry
?使用
Geometry
时会在后台创建
BufferGeometry
。您也无法调整
几何体.顶点
数组的大小。切换到
BufferGeometry
,预先分配足够大小的缓冲区,并设置
绘图范围。您可以更改任何缓冲区的内容。谢谢。这似乎正是我所需要的。