3D引擎为什么使用三角形绘制曲面

这个问题是我第一次接触3D开发就有的疑问,最近在看《游戏引擎架构》(Game Engine Architecture),在书中找到了答案。

三角网格(Triangle Mesh),游戏开发者会使用三角形网格来建模。三角形是表面的分段线性逼近,如果用多条相连的线段分段逼近一个函数或曲线。 实时渲染之所以选用三角形,是因为三角形有以下的优点:

  • 三角形是最简单的多边形,少于3个顶点就不能成为一个表面;
  • 三角形必然是平坦的,含4个或以上的顶点的多边形,不一定平坦,三个点确定一个平面,多余的点可能在这个面之上或者之下;
  • 三角形经多种转换之后,仍然是三角形,这对于仿射转换和透视转换也成立。最坏的情况下,从三角形的边去看,三角形会退化为线段。在其它角度观察,仍能维持是三角形;
  • 几乎所有商用图形加速硬件都是为三角形光栅化而设计的。

三个点才能构成一个平面,而且仅有三个面才能保证面是平的,多一个点不能保证面是平的,少一个点不能构成一个平面,所以不多不少正好是三个。

通常会使用“三角形/秒”作为CPU性能的一项重要指标。如果你有兴趣,不妨读一读知乎专栏上的这篇文章《GPU原理解密(一)画个三角形居然这么难》

https://zhuanlan.zhihu.com/p/20918974

在3D模型中,通常面数越多(也就是三角形的数量),模型越精细,反之则越粗糙(根据面数多少也就有了高模与低模之分)  ——(如下图所示)

(图片来源:http://www.atangeo.com/examples/horse

所以从视觉和美术的角度来看,面数当然是多多益善,但是从程序和性能的角度来看,面数是越少越好,少即意味着运算量变小,渲染速度会更快、耗电量都降低不少,所以需要平衡。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏段石石的专栏

Word2Vec 的迁移实践:Tag2Vec

今天我们就来重点关注下基于用户行为的内容表示的一些有意思的东西。

1.1K20
来自专栏深度学习自然语言处理

大数定律和中心极限定理的区别和联系

昨天看了中心极限定理,今天写本科论文期间,又抽业余时间看了看大数定律,刚开始差点把本小博主给看蒙了O.O,对就是这样。后来去了知乎上瞅了瞅,还是瞬间懂了。知乎上...

15810
来自专栏奔跑的蛙牛技术博客

递归简论递归的重要法则

10320
来自专栏数据结构与算法

P1850 换教室

题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。 在可以选择的课程中,有  节课程安排在 nn 个时间段上。在第  ...

396130
来自专栏专知

双人协作游戏带你理解变分自编码器-Part1

22460
来自专栏机器之心

前沿 | 首次大规模神经机器翻译架构分析结果出炉,LSTM 优于GRU

选自arxiv 作者:Denny Britz等 机器之心编译 参与:微胖、蒋思源、吴攀 这样的实验只有谷歌级别的公司才能处理的了。这篇文章对大型 NMT 模型训...

460100
来自专栏BestSDK

知其所以然之永不遗忘的算法

image.png 相信大部分同学曾经都学习过快速排序、Huffman、KMP、Dijkstra等经典算法,初次学习时我们惊叹于算法的巧妙,同时被设计者的智慧所...

27870
来自专栏AI科技大本营的专栏

谷歌大脑深度学习从入门到精通视频课程[6.7]:自动编码器——contractive 自编码器

AI100 已经引入 Hugo Larochelle 教授的深度学习课程,会在公众号中推送,并且对视频中的 PPT 进行讲解。课后,我们会设计一系列的问题来巩...

43480
来自专栏牛客网

机器学习:2018校招面经真题网易:创业公司:

先说下楼主的情况吧。楼主统计专业本科生,无实习经历,项目也很水,两个数据分析比赛,没有名次。我估计牛客没有几个比我背景更差的了,但是最后还是拿到offer了,所...

546110
来自专栏PPV课数据科学社区

【黑科技】数据分析师的秘密-QQ聊天记录分析(三)

? 上两篇分析了群的活跃状况,成员活跃状况,以及一些文本的分析,包括词云,聊天关键字, 实体识别,情感分析等等,这篇只围绕一个问题来,那就是提取谈话内容的问题...

34650

扫码关注云+社区

领取腾讯云代金券