Javascript 向three.js几何体动态添加面
我正在开发一些用于生成三维模型的webgl软件,并且依赖于动态几何体。我观察到了一些非常奇怪的行为,我能够在其中孤立出来 似乎在将几何体实例添加到场景后添加的任何新面,都不会(正确)渲染添加的任何新面。在线框模式下(如示例中所示),根本不会渲染新几何体。使用纹理材质时,我还观察到,有时新几何体不会根据摄影机的角度进行渲染 回到JSFIDLE,我使用了一个现有的three.js代码示例(misc_exporter_obj.html)作为支架,但在第7行,我创建了一个通用函数来向几何体添加一个三角形。启动时调用Javascript 向three.js几何体动态添加面,javascript,three.js,Javascript,Three.js,我正在开发一些用于生成三维模型的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
,预先分配足够大小的缓冲区,并设置绘图范围。您可以更改任何缓冲区的内容。谢谢。这似乎正是我所需要的。