2

我正在尝试编写一个小型 4d 游戏。我使用 C++ 和 OpenGL。这个网站很好地解释了如何增强 4d 图像:
http ://eusebeia.dyndns.org/4d/vis/07-hsr.html#Enhancing_4D_Projection_Images

他们告诉应用 4d 隐藏表面去除 (HSR) 算法。
我不得不说我是编程和算法方面的新手,我真的不知道从哪里开始组装 4d HSR 或 3d HSR。
如果有人对这类算法有经验,可以解释一下如何用 C++ 翻译它吗?

顺便说一句:我将 4d 空间投影到 3d 中,所以我需要一个顶点移除算法,而不是像素修改,或者至少是我认为的......我可能是错的......

4

1 回答 1

0

在许多情况下,3d 隐藏表面去除意味着当你绘制一个表面时,你还记得你绘制的每个像素的深度(到“眼睛”的距离)。当你去绘制一个已经绘制了表面的表面时,你只在它比已经存在的像素更靠近眼睛时才绘制像素。在 3d 图形库 OpenGL(将 3d 场景描述投射到 2d 显示器)中,这称为深度缓冲测试

您还可以跟踪曲面所面向的方向。如果它背向“眼睛”,则根本不要画它。在 OpenGL 中,这是调用背面剔除。如果要创建文章描述的分层透明度外观,则必须根据深度对像素进行排序并首先绘制最深的像素。然后在顶部绘制较近的像素,用旧像素颜色和当前表面颜色的凸组合替换当前像素。

对于您的 4d 案例,您需要确定投影 4d 事物的含义。我认为任何具有动画效果的 3d 模型实际上都是 4d 模型。如果需要,您可以像使用这个模拟壁球运动员一样一次绘制所有帧: 4d 壁球运动员

在此图像中,时间在这里用灰度值表示。所以你可以看到球员在球场上移动并击球,所有这些都在一个单一的静态图像中。当然,正确的 4d 到 2d 投影可能不会显示一堆离散的时间框架,而是连接连接时间的顶点,这样您就不会看到一堆单独的球,而是看到一个“管”代表球的轨迹。但是,在您链接的文章中提到了一种类似的东西,在某些情况下,这可能会减少交流。

于 2011-08-25T16:08:33.887 回答