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

原著《Focus on 3D Terrain Programming》

翻译:邱涛 风轻炫舞 HoneyCat

Email:qiutaoleo@163.com

Blog:http://blog.csdn.net/honeycat/

QQ:241855668

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

5

Geomipmapping For The CLOD Impaired

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

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

n         Geomipmapping(Geometrica Mipmap)的理论知识

n         实现GeoMipMapping的方法

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

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中进行)。用简单的方法,象一个整体样的我们让GPU和CPU两者都满意,也让主板高兴。

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

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

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

包装你对CLOD地形的入门

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

半弱的CLODGeomipmapping理论

Geomipmapping由Willem 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 Boer的Geomipmapping白皮书,你也许会注意到三角形排列方式在图5.3与白皮书中的方式有些稍微不同。这么做的原因在晚一点说,但是现在就只需要知道我这么做是有原因的。

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

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

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

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

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

让三角形排列简单

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

3D地形编程——之GeoMipMap基础(1)相关推荐

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

    HoneyCat游戏编程学习笔记---之3D地形编程 原著<Focus on 3D Terrain Programming> 翻译:邱涛 风轻炫舞 HoneyCat Email:qiuta ...

  2. 聚焦3D地形编程第五章GeomipMapping for the CLOD

    第二部分高级地形编程 聚焦3D地形编程第五章GeomipMapping for the CLOD 译者: 神杀中龙 邵小宁 microsoftxiao@163.com 翻译的烂请见谅 原著 <F ...

  3. 【3D游戏编程与设计】四 游戏对象与图形基础 : 构建游戏场景+牧师与魔鬼 动作分离版

    [3D游戏编程与设计]四 游戏对象与图形基础 : 构建游戏场景+牧师与魔鬼 动作分离版 基本操作演练 下载 Fantasy Skybox FREE, 构建自己的游戏场景 下载 Fantasy Skyb ...

  4. 3d游戏编程(转帖)

    3d游戏编程(转帖) 我先声明,我不是编程高手,我还只是个初学者,但我觉得我所知道的对刚入门3D游戏编程的新手,应该能让他们少走弯路,我也很想用朝语来写,但是朝语的词 汇库很久没有更新过了,有些专业的 ...

  5. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  6. 现代3D图形编程学习-关于本书(译)

    本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬 ...

  7. ArcGIS Portal 10.4 本地坐标系的web 3d地形展示制作说明

    ArcGIS Portal 10.4 本地坐标系的web 3d地形展示制作说明 By 李远祥 ArcGIS Portal在10.4版本开始支持本地坐标系的三维展示,可以说是ArcGIS产品Web3D的 ...

  8. 关于如何学好游戏3D引擎编程的一些经验

    原帖地址:http://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=2202&extra=page%3D1 此篇文章献给那些为了游 ...

  9. 如何学好游戏3D引擎编程(摘抄)

    网上看到,觉得很好,因此收藏一下,侵删. <如何学好游戏3D引擎编程> 此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术 ...

最新文章

  1. 算法导论之排序和顺序统计学
  2. SAP UI5 应用开发教程之十五 - 对话框和 Fragments 的使用方式
  3. java中@value的环境配置
  4. spring boot访问templates目录下的html静态页面
  5. redis学习-redis事务
  6. Hierarchical line matching based on Line–Junction–Line structure
  7. 中国喷漆室保护膜市场趋势报告、技术动态创新及市场预测
  8. js高级学习笔记(b站尚硅谷)-8-关于语句分号的问题
  9. python是一种什么类型的植物_植被类型预测
  10. 魔百和CM201-1 线机教程 救砖(大部分情况能用)
  11. 等额本金等额本息计算器
  12. 触动人心:如何设计优秀的iPhone应用
  13. windows2003中了一键还原7.9的招了
  14. 最详细的知识图谱的技术与应用
  15. opencv去除图片水印
  16. android 常用机型尺寸_Android中获取手机屏幕大小的方法
  17. python 标准输入设备_实时获取MIDI设备的输入(Python)
  18. 推荐5款Windows桌面效率工具
  19. 第1章 面向对象分析和设计
  20. 王者荣耀服务器维修多久,王者荣耀服务器正在维护中,具体维护时间及更新内容可留意官网更新公告_游戏吧...

热门文章

  1. 后台管理框架 Vue Admin
  2. JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况——保姆级别,真的不能再详细了,代码拿来即用)
  3. python3去掉表格中的重复项
  4. 基于HI3516DV300平台GT911触摸屏调试
  5. 找个native老外润色_给我司老外技术总监润色PPT的一些感想
  6. 中考计算机操作题试题文档,初中信息技术_中考信息技术操作题
  7. camstar portal使用webapi,vue elementui前后端分离开发
  8. Camstar 客户端Modeling管理系统
  9. 矩阵向量求导 (转载与整理)
  10. 射雕英雄传ol显示服务器断开,射雕OL边移动边攻击,告别站桩输出