首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绘制3D表面和隐藏不可见的线?

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

Stack Overflow用户
提问于 2009-05-29 03:40:57
回答 3查看 1.8K关注 0票数 3

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

我记得我读过一本Apple II书中的一些代码,它在BASIC中只有25行左右,它可以绘制一些3D表面,比如一座山或一个看起来像水波的形状。最初显示的是不可见的行,但在添加了几行代码后,不可见的行也消失了。

有没有人知道怎么做,或者知道网络上的资源?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-29 03:52:34

这在一定程度上取决于绘制多边形的方式。我建议您阅读一些关于OpenGL或DirectX的文章,因为它们旨在为您解决许多此类问题。如果你不想直接使用它们,那么已经有很多很棒的引擎构建在这些API之上了。

假设你正在绘制填充的多边形(纹理,实体等),这里有几个你可以使用的常用算法:

  • 根据与摄影机的距离对多边形进行排序,并首先绘制距离最远的多边形,也称为Painters Algorithm。许多老的3D游戏都使用这种方法,比如经典的“末日”,它也使用BSP Tree进行有效的排序。
  • 存储从摄像头到屏幕上每个披萨的最近距离,不要再画更远的东西,也就是所谓的Z-Buffering。这种方法得到了现代3D显卡、OpenGL和DirectX的很好支持。
  • 使用ray tracing算法,该算法自然具有隐藏表面删除功能。
票数 5
EN

Stack Overflow用户

发布于 2009-05-29 03:45:33

我记得那本书。如果我没记错的话,这些是曲面图,使用的技巧是从前到后绘制线条,跟踪每个x绘制的最小和最大y。可能线条抽屉是Bresenham,修改为跳过所绘制的点,除非它们大于max或小于min。

这个算法的优点是你也可以做曲线。而不仅仅是线段。可能波纹图像是以x和y为参数的trig函数的某种组合。

我还能在脑海中看到那些情节。会很想知道那是哪本书的。

票数 4
EN

Stack Overflow用户

发布于 2009-05-29 04:06:34

如果绘制三角形网格,则应该对每个三角形进行背面剔除,并且不要绘制具有背面法线的三角形的边。将法线计算为三角形中两个连续边的叉积。

如果只想打印轮廓,则只打印法线朝前的三角形和法线朝后的三角形之间的边。

或者您使用OpenGL,打开深度缓冲区,然后忘记所有底层数学:-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/924286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档