如何绘制3D表面并隐藏不可见的线条?

nop*_*ole 3 3d

有人知道如何绘制3D表面并隐藏不可见的线条吗?

我记得从Apple II书中读过一些代码,BASIC中只有大约25行,它可以绘制一些3D表面,例如山峰或看起来像水波纹的形状.首先显示了不可见的线条,但在添加几行代码后,隐形线也消失了.

有人知道如何做到这一点或知道网上的资源吗?

Gen*_*ror 5

这取决于您如何绘制多边形.我建议您阅读一些关于OpenGL或DirectX的内容,因为它们旨在为您解决许多这些问题.如果您不想直接使用它们,那么已经有许多基于这些API构建的优秀引擎.

假设您正在绘制填充多边形(纹理,实体等),您可以使用以下几种常用算法:

  • 按照距离相机的距离对多边形进行排序,然后首先绘制最远的多边形,也称为" 画家算法".这种方法被许多旧的3D游戏使用,如经典的Doom,它也使用BSP树进行有效排序.

  • 将距离相机最近的距离存储在屏幕上的每个pizel上,不要画得更远,否则称为Z-Buffering.现代3D视频卡,OpenGL和DirectX很好地支持这种方法.

  • 使用自然具有隐藏表面去除的光线跟踪算法.