在three.js中显示数千个图像
我在一个场景中有多达20万个单独的图像(到目前为止,是用精灵完成的)。我想看看这些精灵,当我在周围飞行时,它们应该总是面对相机(就像精灵一样)。 我的问题是:如何在WebGL方面实现最佳性能?使用useScreenCoordinates:false的精灵是否渲染为使用GL_点? 此时fps下降,图像计数已经非常低。到目前为止,我正在使用mipmapping和sprite。因为他们需要转身面对我,所以我不想使用缓冲几何 我非常感谢一些想法和投入:)谢谢在three.js中显示数千个图像,three.js,Three.js,我在一个场景中有多达20万个单独的图像(到目前为止,是用精灵完成的)。我想看看这些精灵,当我在周围飞行时,它们应该总是面对相机(就像精灵一样)。 我的问题是:如何在WebGL方面实现最佳性能?使用useScreenCoordinates:false的精灵是否渲染为使用GL_点? 此时fps下降,图像计数已经非常低。到目前为止,我正在使用mipmapping和sprite。因为他们需要转身面对我,所以我不想使用缓冲几何 我非常感谢一些想法和投入:)谢谢 PS:这一切的意义在于,你可以“飞”过20万
PS:这一切的意义在于,你可以“飞”过20万张图片,停下来/选择那些你认为有趣的图片使用了大量的技术和材料,一旦一切正常,我就会写下来我的团队也需要完成这项工作,不幸的是,在项目完成之前,Doidel的笔记就消失了。我们开发了一个用于图像的3.js可视化层: 我在这里整理了一篇博客文章,概述了细节:
简言之,如果其他人面临此问题,您将希望创建一个几何体(理想情况下),其中一个大型图像图集(大小为2048px x x 2048px的单个jpg,包含许多较小的图像)用作几何体的纹理。为每个要显示的小图像添加顶点、面和顶点,并从atlas纹理中提取每个图像。是否为200000个不同的图像?还是都是一样的?哦,嘿。我现在编码了一些东西。不同的图像。到目前为止,我所做的是:ParticleSystem(GL_POINT)与缓冲几何体一起用于更远的图像,在最近邻搜索后异步加载图像(在我的例子中是kd树)+视图截锥剔除。我对粒子使用了精灵,就像一个假图像:)但是现在我在kd树上遇到了麻烦。一个由3.Vector3()组成的20万点数组的大小约为10MB,而长度为20万*3的Float32Array的大小约为1.5MB。但是我找不到像数据结构这样的属性的最近邻搜索^^^可能需要自己编写代码:(如果你有任何进一步的优化想法,请告诉我!我也在IRC顺便说一句:Doidel^^我写了我自己的就地quicksearch+kdtree,我现在运行200k+pointsprites,速度为60 FPS,内存使用量为2MB^^^ mrdoob,你能告诉我如何申请将代码贡献给three.js项目吗?很好!想看看:)对于贡献,您需要在github上创建一个帐户,fork the three.js repo,签出dev分支,提交您的贡献,推送到您的源站点并执行拉请求。您是否有到已完成站点的链接?或者您是否曾经在github上创建过拉请求?看起来您分叉了three.js,但从未将提交推送到您的fork上,博客注意到从未完成。如果你有一个网站的实时链接,或旧代码的副本,我很乐意看到它!