我有大量的星星(粒子),几乎没有散布在广阔的空间中。我需要以某种方式可视化这个空间,包括其中的导航。显然,我不能只为 OpenGL 提供我的粒子的所有真实空间坐标,看起来我需要执行严格的处理并想出一些易于渲染的东西,比如纹理或少量与 OpenGL 友好的点坐标。所以,问题是,有没有解决这个任务的通用技术,如果没有 - 你会怎么做?
问问题
1467 次
2 回答
6
您可以相当容易地绕过深度缓冲区精度限制。您只需要将所有星星分类到不同的距离。不知道有没有名字,只是在几个地方看到过
假设您的深度缓冲区/投影矩阵在出现精度问题之前可以达到 10,000,但您的星星远达 27,000。你可以根据它们的距离对你的星星进行分类。0 到 10,000 的星星放在第一个箱子里,10,000 到 20,000 颗放在第二个箱子里,依此类推。然后开始画它们:
- 清除颜色和深度缓冲区
- 将投影矩阵设置为 near=20,000 和 far=30,000
- 画出 20,000 到 30,000 之间的所有星星
- 仅清除深度缓冲区
- 将投影矩阵设置为 near=10,000 和 far=20,000
- 画出 10,000 到 20,000 之间的所有星星
- 仅清除深度缓冲区
- 将投影矩阵设置为 near=0 和 far=10,000
- 绘制 0 到 10,000 之间的所有星星
由于您知道 10-20 bin 中的所有星星都在 20-30 bin 中的所有星星前面,因此您可以安全地清除深度缓冲区,让您绕过深度缓冲区的精度限制并将事物绘制为随心所欲
于 2012-09-19T20:38:37.000 回答
0
您可以使用分层天空立方体的方法,在其上渲染星星和物体。如果事情相对接近,您可以在立方体的“matroyshka”排列上使用视差滚动方法。
于 2012-09-18T08:52:08.683 回答