我需要战略帮助才能开始。
我需要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缓冲区属性
[我预计帧率会大幅下降] - 有一个
currentColor和nextColor缓冲区属性(当前小时和下一小时),在每一步(2.5秒)中重新上传到GPU并在着色器中进行插值(使用额外的时间delta统一)
[对我来说似乎是最好的选择] - 最初将所有数据上传到 GPU,使用多个自定义属性或一个非常大的缓冲区数组,并在着色器中进行迭代和插值[如果
可能的话可能会更好;我知道我可以设置缓冲区数组的偏移量以读取每个顶点,但不确定这是否像我认为的那样工作......] - 在两者之间做一些事情,比如上传一天的数据,而不是所有数据或每小时数据
场景和想法有意义吗?如果是这样:
- 这样做最合适的方法是什么?
- 我感谢任何额外的建议。