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
3d 绘制更新的webGL网格/曲面的最佳方法_3d_Three.js_Webgl - Fatal编程技术网

3d 绘制更新的webGL网格/曲面的最佳方法

3d 绘制更新的webGL网格/曲面的最佳方法,3d,three.js,webgl,3d,Three.js,Webgl,我需要在WebGL中创建一个曲面或网格(或粒子系统),以给定的时间间隔使用新行进行更新。这本质上是一种光谱显示(类似于瀑布,但它需要是3D的),在这种显示中,每隔2秒,显示器需要添加一列额外的光谱信息。我希望它逐渐成长为一个具有彩色顶点/面/粒子的曲面,该曲面基于相对于整体最大高度的相对高度 总而言之,我认为这是一项非常简单的努力。然而,出于性能原因,我很难找到哪种类型的几何体最适合用于此目的。最终,构成一个曲面的点多达1000x1000个,并且场景中一次至少有两个这样的曲面 到目前为止,我使用

我需要在WebGL中创建一个曲面或网格(或粒子系统),以给定的时间间隔使用新行进行更新。这本质上是一种光谱显示(类似于瀑布,但它需要是3D的),在这种显示中,每隔2秒,显示器需要添加一列额外的光谱信息。我希望它逐渐成长为一个具有彩色顶点/面/粒子的曲面,该曲面基于相对于整体最大高度的相对高度

总而言之,我认为这是一项非常简单的努力。然而,出于性能原因,我很难找到哪种类型的几何体最适合用于此目的。最终,构成一个曲面的点多达1000x1000个,并且场景中一次至少有两个这样的曲面

到目前为止,我使用的选项包括:

  • 使用粒子系统材料的缓冲几何。这似乎表现最好,但我找不到一个优雅的方式来实时更新它。因此,当更新它时,整个场景都会锁定
  • 使用网格。但是,没有简单的方法可以实时添加一行点,对整个几何体进行三角剖分,生成面等。这再次阻塞或助手三角剖分函数阻塞(看起来是随机的)
  • 使用尺寸默认设置为1000x1000的PlaneGeometry,然后在收到数据列时修改每个点。我还没有真正尝试过……但我突然想到这是一个(不受欢迎的)选择

然而,我尝试过的前两个选项都没有我所需要的那么好。每2秒,接收到一行约1000个点,需要将其添加到(现有)几何图形中。这真的是一项如此复杂的工作吗?非常感谢任何提示

您正在寻找流顶点缓冲区

创建缓冲区时,您可以指定“如何”使用它()

我相信
STREAM\u DRAW
最适合您的需要

因此,您会逐渐收到日期,并仅更新需要更新的缓冲区部分(
gl.bufferSubData
等),此参数将为您优化某些内容

在一些较新的GPU上,大约200万点应该不是问题

教程:


使用Three.js->(但没有流媒体)制作百万封信的动画。

谢谢,流媒体顶点缓冲区确实是我想要的。仍然试图找到比您提供的更完整的样本,但感谢您让我开始寻找正确的轨道!谷歌搜索“opengl流缓冲区”将为您提供大量的阅读/学习资源,但如果可以在webGL中编写代码,您需要注意ogl版本。祝你好运