我正在开发一个three.js项目,该项目要求我创建大量人群作为可视化的一部分。
我已经确定使用精灵而不是3D模型将是一个很好的性能解决方案,因为从理论上讲,我可以拥有性能影响最小的逼真人物。
我在创建一个具有许多女性精灵的粒子系统方面取得了相当的成功。显然,当相机移动并且女人继续面对相机时,幻觉就会消失。那就是说,这是我的问题:
有没有办法让我可以制作three.js 调整用于精灵的实际图像的可见部分(取决于相机指向它的角度相对于指定的物体方向?
这项技术在许多视频游戏中都很明显,例如Mario Kart 64,其中高级3D模型的图像只是从许多角度拍摄并包含在一个大的spritesheet中。根据需要用字符的正确部分替换字符图像,以创建高质量字符的幻觉。
Mario Kart 64 video(注意巧妙地使用精灵来表示角色和物品) https://www.youtube.com/watch?v=aundeN2eX_E
这种错觉对于我的情况来说是相当完美的,因为人群中的人物的逼真质量与流畅的表现相结合将很容易弥补“跳跃”的轻微刺耳的视觉效果。从一个角度到另一个角度,特别是因为人群不会成为主要焦点。
如果可以,有没有办法可以创建这些特殊精灵对象的粒子系统,以便在性能方面以低成本填充所需区域?
附注
(理想情况下,我当然希望这个区域能够填充第一部分中不同的人选,但有些事情告诉我这将是最不重要的问题)
(另一方面说明,我的初始测试场景在查看精灵的透明部分时产生了一些奇怪的效果 - 只有一些会被渲染 - 尽管我仍在研究这个问题)
我非常感谢有关此主题的任何帮助。我担心我对三个人的了解。我只是不能与我在这里需要做的事情相提并论。如果这一切都不可能,任何人都可能有任何其他的建议,如何创造大量人群的错觉,而不会产生数百个复杂的3D模型的巨大性能成本。
非常感谢你提前。
答案 0 :(得分:2)
有趣!还有很多东西需要考虑,所以不要在这里写一个文字墙,而只是我身边的大脑转储:
viewHeight = cos(atan(abs(cameraPosition.y - position.y) / length(position.xz - cameraPosition.xz)));
(2 (walk) + 1 (stand)) * 8 (angles) = 24 images per character
,加上一张普通地图。所以我建议使用不同的角色是将它们从3D模型渲染到精灵表上,然后重新构造它们以便有几个不同的角色。我想到的(相对较小的)缺点:
顺便说一句:在3D术语中,spritesheet是一个“纹理图集”,你在片段着色器中为你的spritesheet设置了“纹理图集查找”。
如果有什么东西出现在我脑海里,我明天会写更多关于它的信息:) gl hf!