0

我需要战略帮助才能开始。

我需要THREE.LineSegments使用自定义(顶点)颜色(RGBA)为一个大型网络(大约 150k 段,静态)制作动画。对于每个段,我在 7 天内有 24 个测量值
[所以5.04 × 10^7测量值或2.016 × 10^8 vec4颜色缓冲区数组大小,大小约为 770Mb float32array]。动画以 2.5 秒的步长为每一天的每一小时播放一次,并且需要在每帧的基础上(通过 time )

将插值颜色应用于每个片段。delta为了能够将 alpha 值应用于顶点颜色,我需要使用THREE.ShaderMaterial带有vec4颜色属性的 a。

我不明白的是如何最好地处理每个顶点的数据量。有些想法是

  • 计算渲染循环中的 RGBA 值(在当前颜色数组和未来一小时的颜色数组之间,通过插值 time delta)并更新color缓冲区属性
    [我预计帧率会大幅下降]
  • 有一个currentColornextColor缓冲区属性(当前小时和下一小时),在每一步(2.5秒)中重新上传到GPU并在着色器中进行插值(使用额外的时间delta统一)
    [对我来说似乎是最好的选择]
  • 最初将所有数据上传到 GPU,使用多个自定义属性或一个非常大的缓冲区数组,并在着色器中进行迭代和插值[如果
    可能的话可能会更好;我知道我可以设置缓冲区数组的偏移量以读取每个顶点,但不确定这是否像我认为的那样工作......]
  • 在两者之间做一些事情,比如上传一天的数据,而不是所有数据或每小时数据

场景和想法有意义吗?如果是这样:

  • 这样做最合适的方法是什么?
  • 我感谢任何额外的建议。
4

0 回答 0