3D地形编程——之GeoMipMap基础(1)

HoneyCat游戏编程学习笔记---3D地形编程

原著《Focus on 3D Terrain Programming

翻译:邱涛 风轻炫舞 HoneyCat

Emailqiutaoleo@163.com

Bloghttp://blog.csdn.net/honeycat/

QQ241855668

说明:英语水平有限,在自己学习时候同时记录下来的,希望能与大家技术交流互相学习,翻译有误的地方欢迎指出。Good luck to you.

 

 

5

Geomipmapping For The CLOD Impaired

 

嚯!你现在开始学习所有地形编程的核心部分,他们又难以置信的复杂算法组成。实际上,这是一个谎话。在这一章我将讲述3个算法,选择他们是因为他们简单而且高效。并且,再一次在这本书,我将让你省略漫长的介绍而简要的告诉你这章的事项:

 

n         连续层次细节(CLOD)含义的解释

n         GeomipmappingGeometrica Mipmap)的理论知识

n         实现GeoMipMapping的方法

 

为了简单,我打破了这3个事项。不管这些分类,这章就太庞大了。不过,别让这章的大小吓到你;这些具体内容将一如既往的用一种有趣且简单的方法描述。然而,注意我将改变一些学习的风格。第567章比前面的章节更多关注算法的讲解和伪代码。在随后几章,我仍然为你提供我自己的示例和实现,但这些实现是简单的,而且你应该只有在它们同文字关联起来时使用。照之前说的,我们开始吧。

 

CLOD Terrain 101

你已经在这本书里听过Continuous Level of Detail(CLOD)几次了,但现在是我告诉你它到底是什么的时候了。连续层次细节(CLOD)算法用一句话来说,是一个动态多边形网格“给”需要更多细节的区域额外的三角形。那是个简单的描述,但是你将在这节结束前明白更多关于连续层次细节(CLOD)的东西,你将更多知道这章结束了。如果你现在还没理解连续层次细节(CLOD)是什么,别烦恼。

 

CLOD 地形为什么麻烦

连续层次细节(CLOD)算法需要更多探究,比代码更难,平均比蛮力(brute force)方法占用更多CPU周期。同那些一起在你的心里,为什么你希望麻烦的连续层次细节(CLOD)算法?答案真的简单:为了创建更真实的、更细致的、最重要的、更快速的地形片。

 

更多细节添加到需要更多细节的地方

连续层次细节(CLOD)的一个基本想法是我们添加更多的细节(更多三角形)到需要它们的地方。举例来说,如果我们有一个相当平滑的地形片(见图5.1),比起我们想要一个复杂的多的地形片(见图5.2),我们想要平均较少的三角形。

 

 

5.1 需要较少的三角形渲染这个平滑地形。

 

 

5.2 需要许多三角形渲染这个复杂地形

 

然而,不是所有算法都担心需要细化的区域中三角形的分布。Geomipmapping不对需要细化的区域放置更多三角形,但是Rottger的四叉树(Quadtree)算法(在第6章,“攀登四叉树”)是这样做的。因此,做为一个整体来看对连续层次细节(CLOD)而言,对需要细化的区域增加更多细节,并不总是真的,但是绝大多数情况是。我已经完全把你搞混乱了吗?

 

剔出你以前从未剔除的!

另外可以确定的是连续层次细节基础(CLOD-based)算法它们允许比蛮力(brute force)算法拣选更多的多边形剔除。这意味着那些多边形不可见、不会发送给API。举例来说,我们从一系列地形片开始工作以实现Geomipmapping。如果一个图块是不可见的,我们清除潜在的289个渲染顶点(17×17的顶点块)象掉下一般。这极大减轻显卡加载的负担,并且剔除也没让CPU繁忙(剔除载CPU中进行)。用简单的方法,象一个整体样的我们让GPUCPU两者都满意,也让主板高兴。

 

不是在CLOD地形大陆的每件事都高兴

尽管,使用连续层次细节(CLOD)算法有一些缺点。很神奇的,全世界的都帮助我写下这一节,在今天早些时候我的邮箱收到了8月发行的Game Developer Magazine。在大多数连续层次细节(CLOD)算法中主要的缺点是在每帧多边形网格更新时复杂的“薄记”。

这个“薄记”的缺点在大多数这些算法(GeomipmappingRottger的四叉树算法、ROAM)被设计时几乎不流行。那是因为在这些算法希望大部分工作量放在CPU,并且只有少量需要的信息传给GPU。从那时起,尽管事情完全改变了一小部分。现在我们希望比放在CPU更多的焦点放在GPU上。

 

包装你对CLOD地形的入门

很显然,如果GeomipmappingQuadtreeROAM算法都过时了,现在你就不会读到他们了,意思就是某人,某时对每个算法优化后仍旧让它们成为当今重要的地形渲染。在这个观点下,我们将走出连续层次细节(CLOD)的入门期,并且开始进入Geomipmapping实现的入门。

 

半弱的CLODGeomipmapping理论

GeomipmappingWillem H. de Boer开发,是一个友好的GPU连续层次细节(CLOD)算法。它也是完美转变到CLOD大陆的简单算法。我们继续前进,你也许会想查阅实际Geomipmapping的白皮书,为了你方便浏览放在CD-ROM里。(Algorithm Whitepapers/geomipmapping.pdf)

 

简单的基础

如果你对Mipmap纹理映射的概念很熟悉,那么Geomipmapping似乎对你来说也应该很浅显。它们的概念是一样的,除此之外我们不是对纹理而言,而是对地图片的顶点而言。继续Geomipmapping的概念,需要规则的地形片。意思就是,一个片的大小是5个顶点(5×5的格子)。5×5的块将有许多级别(level)的细节,级别0是最细致的,在这里面级别2是最粗糙的。如果你需要每个块不同级别的直观展示请看图5.3。在图中黑色顶点不会被送到渲染API,但是白色顶点会。

 

如果你想查阅Willem de BoerGeomipmapping白皮书,你也许会注意到三角形排列方式在图5.3与白皮书中的方式有些稍微不同。这么做的原因在晚一点说,但是现在就只需要知道我这么做是有原因的。

 

现在是时候我们讨论Geomipmapping更多一点的内容。之前你已经知道了基础,但是现在是时候让你了解所有……

 

 

5.3 地图块的三角形排列方式,最高细节排列在左边,最底细节排列在右边。

 

好的,几乎所有事。我也许会保留些信息。

 

如同我之前所说的,GeomipmappingMapMip纹理映射相似,除了用陆地块代替纹理块以外。我们需要做什么呢,从我们在3D空间中的点(摄像机观察点的位置)开始,这让在观看者周围的所有块都是最高细节,因为这些块占据了用户视野的大部分。在一个特定的距离之外,我们将选择低一些级别细节的块。同时,在又一个距离外,我们选择更低级别的细节。图5.4形象的展示了这些内容。

 

如同你在图中所看的,这些块在观看者所在的当前区域是0细节级别(Level of Detail简称LOD),这个意思就是这些块是最高细节级别。随着块变的更远,他们变成级别1,这是第2高细节级别。在距离观看者更远的距离,图块是级别2,这是图像呈现的最低细节级别。

 

让三角形排列简单

早些时候,你也许注意到我在图5.3中使用的三角形排列方式与我让你查阅的Geomipmapping文章(在CD中或者互联网上,网址在这章的末尾)中有些不同。实际上你不必现在就打开那篇文章,图5.5中展示了文章建议的三角形排列看起来象什么样。

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《学习 3D 中的地形》,英文名《focus on 3D terrain》,作者 Trent Polack,大小 10 Mb,本书是为英文版。内容简介: 游戏开发:3D地形篇《Focus On 3D Terrain Programming》,此教程在全球销量相当好! 你是不是每次见到有相当漂亮地形图面的游戏感到特别吃惊!当你在完3D游戏时.是不是有时画面的真实度,敌方会从各各角度来攻击你.这就需要非常好的地形开发人员来完成游戏的界面设计.这套教程就像给予程序员一个最喜爱的主题.其实对于地形的开发.并不是一个简单的问题.而是相当复杂的过程.本游戏地形开发教程.给你最好的解决办法,并让你设计出一个完美的幻境世界的思维。其实,甚至可以说,目录游戏地形地貌的开发算法,很多已在书中提到。值得相关设计师阅读! 这一系列游戏开发方面的电子书的主编都是一个人!他就是大师Andre LaMothe,它写过一本叫做游戏开发大师技巧的书,好几千页,分上下卷,上卷已经出版了,由一位叫做沙鹰的人翻译的,书籍翻译的质量极高,而且书也是写的非常好!它不愧是大师,它的一整本书会让你读的茅塞顿开,让你恍然大悟,让你非常痛快.所有的大型书店应该都有这本书,大家不信可以去翻翻看看!或者到www.china-pub.com网站上看看关于这本书的书评.入门的话用这本书不会错! 游戏开发职业虽然含金量较高,但从业门槛也高高在上,因此,学习前一定要先看看自己是否适合这一职业。判断标准主要有以下七点:一看学历,一般需有大专以上的教育背景;二看年龄,游戏业是年轻人的行业,18-35岁是最佳年龄段;三看逻辑性,从业人员除具备IT基本知识外,还要有相当强的逻辑能力,否则将难以担当复杂的编程工作;四看知识面,游戏软件开发设计编剧、美术、音乐、动画、程序等诸多方面,知识面宽泛;五看创新能力,游戏开发需要经常翻花头,对开发者创新能力的要求较高;六看合作能力,游戏软件开发往往由一个小组负责,需要开发者有团队合作精神;七看兴趣,游戏开发是一项异常枯燥的工作,如果对此没有足够的兴趣,将很难做好。 发布的这些书都是原版的英文书籍,没有中文的,因为中文翻译的慢!大家如果想从事游戏开发,我真的建议大家先学英语,英语是你一切的一切的基础!大家也可以下载一个金山词霸来边翻译边看!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值