有人知道如何绘制3D表面和隐藏不可见的线吗?
我记得我读过一本Apple II书中的一些代码,它在BASIC中只有25行左右,它可以绘制一些3D表面,比如一座山或一个看起来像水波的形状。最初显示的是不可见的行,但在添加了几行代码后,不可见的行也消失了。
有没有人知道怎么做,或者知道网络上的资源?
发布于 2009-05-29 03:52:34
这在一定程度上取决于绘制多边形的方式。我建议您阅读一些关于OpenGL或DirectX的文章,因为它们旨在为您解决许多此类问题。如果你不想直接使用它们,那么已经有很多很棒的引擎构建在这些API之上了。
假设你正在绘制填充的多边形(纹理,实体等),这里有几个你可以使用的常用算法:
发布于 2009-05-29 03:45:33
我记得那本书。如果我没记错的话,这些是曲面图,使用的技巧是从前到后绘制线条,跟踪每个x绘制的最小和最大y。可能线条抽屉是Bresenham,修改为跳过所绘制的点,除非它们大于max或小于min。
这个算法的优点是你也可以做曲线。而不仅仅是线段。可能波纹图像是以x和y为参数的trig函数的某种组合。
我还能在脑海中看到那些情节。会很想知道那是哪本书的。
发布于 2009-05-29 04:06:34
如果绘制三角形网格,则应该对每个三角形进行背面剔除,并且不要绘制具有背面法线的三角形的边。将法线计算为三角形中两个连续边的叉积。
如果只想打印轮廓,则只打印法线朝前的三角形和法线朝后的三角形之间的边。
或者您使用OpenGL,打开深度缓冲区,然后忘记所有底层数学:-)
https://stackoverflow.com/questions/924286
复制相似问题