游戏内的地图场景有哪些软件测试工具有哪些点

不再自动弹出
> 正文
诛仙手游游戏地图是什么 各场景地图介绍
打开微信"扫一扫"将本文分享至朋友圈。97973手游网微信号:m97973,最好玩的手游资讯。
11:38:25& &来源:网络
  诛仙手游游戏地图是什么?诛仙手游将于8.10号开启全平台公测,那么整个游戏的世界地图是什么样子的呢?各个场景的地图是什么样子的呢?赶快来认识认识吧,不然小心迷路哦!
  97973诛仙手游官方群
  1、世界地图
  世界场景及等级对应关系:
  2、场景介绍
  河阳城
  位于青云山山阳之处的神州中原重镇,大河“洪川”环城而过,依山傍水,风景秀丽。城内商贾云集,不时有来往的修真之士在此落脚,端的是一副 “人间天堂”的盛景。不料兽妖入侵,天时剧变,城外不时有魑魅魍魉的鬼影作祟,更有土匪贼寇趁机而起,兴风做乱,给这繁华锦绣之处平添了几分危险。
  青云山
  青云山脉巍峨高耸,虎踞中原。连绵百里,峰峦起伏,山有七峰,高耸入云,平日里只见白云环绕山腰,不识山顶真容。山间巍林密布,飞瀑奇岩,珍禽异兽,在所多有,景色幽险奇峻,天下闻名。七峰之上,复有天下闻名的修真门派--青云门,扼天地之咽喉,炼来往之真气,以求反朴归真,荡魔诛妖。
  逍遥涧
  [涧]本意为夹在山间的水沟,则逍遥涧极为傍山临水区域。逍遥涧中建筑多以水上建筑为主。青云一战,合欢一派伤亡不少,更是发现门派异宝合欢铃在鬼王宗手上。魔教之间派阀斗争日趋白热化,合欢各弟子应以振兴本派为己任,暗中蛰伏等待时机。
  狐岐山
  狐岐山从山脚望上去,但见乱石穿空,突兀险峻,山上无一草一木,极为荒凉。山脉左侧有地底泉水汇聚而成的河流“胜水”。魔教三大派阀之一的“鬼王宗”总堂,就建在这座高山的岩石腹地之中。
  须弥山
  天音寺位于须弥山上,由一条朝圣石阶连接山下与半山大雄宝殿。大雄宝殿开放给百姓烧香礼佛。后山分为小天音寺和无字玉壁区域。大雄宝殿右侧为寺中弟子起居生活的禅院。左侧多为千佛石窟景观。
  空桑山
  空桑山为魔教炼血堂(八百年前黑心老人所创)总部所在。空桑山上有万蝠古窟,万蝠古窟中有死灵渊,死灵渊下有无情海,无情海中有黑水玄蛇。出自《山海经》第四卷《东山经》:东次二经之首,曰空桑之山,(此山出琴瑟材,见《周礼》也,)北临食水,东望沮吴,南望沙陵,西望泯泽。
  小池镇
  小池镇位于空桑山以北,再往东北方向去就是流波山。小池镇东边临海,为沿海城市。镇南区域多以住所和商区为主,镇北为茂密树林,树林中有满月古井区域和黑石洞区域;镇西为龙池书院景观;镇东为仙人祠堂,镇中心有布告石台;东北边有前往流波的渡口。
  流波山
  入海七千里的神州极东之地,烟波浩淼似水流,山下惊涛拍岸,山上乱石穿空,其间生长着无数名贵灵药却又被猛兽毒物所守,自兽妖入侵之后更是凶险异常。
  大王村
  大王村是死亡沼泽外最近的一个村子,生活环境十分恶劣,导致村子人口稀少,平时也无外来人员。直到死亡沼泽中传出有稀世宝物出现的传闻传出,陆陆续续的修真之人都来到了这个村子。
  死亡沼泽
  位于神州浩土西南水泽之地,方圆几达八千里,连绵不绝,自古人烟罕见。而其中又分作两层地界:一是外泽,属死泽外围,占去死泽十之七八土地,其中巨树参天,无底泥坑密布,毒虫极多。一为内泽,其间终年被剧毒沼气围绕,阴灵怨鬼不计其数,凄风苦雨连绵不绝,误入者十有八九无觅其踪,不知生死。
  焚香谷
  半为中原秀景,半为南疆风土。风格迥异,景致截然不同。往北而行,均是中原大地的青山秀水。向南而去,多为南疆的群山丛林。往来一番倒似胜过阴阳界走个来回。梵香谷弟子一直据守在此,但凡有南疆十万大山中的兽妖向北行进,此处便为要路之一。谷内建筑则顾名思义,重“梵”字所意。屋顶檐瓦为红色,造型多呈火焰状。谷中香气扑鼻,火坛随处可见。
  七里峒
  七里峒,历史上苗人最大的聚居地,因为传闻有七里之大之广而得名。何时开发已不可考,毁于元末明初官兵围剿。传说此地易守难攻,只有一条狭窄通道连接外道,向来是苗人世界的精神支柱。
  十万大山
  十万大山,位于神州大地的西南部,属西南山地勾漏山系。因山脉连绵, 峰峦重叠,点不清,数不尽,故称十万大山。山脉呈东北—西南走向,海拔700-1000米,十万大山主峰位于南部鸡笼隘附近的莳良岭,海拔1462米。山地境内有热带季雨林生长,热带、亚热带植物品种繁多。
  毒蛇谷
  毒蛇谷位于中土西南方向山脉之中,处在焚香谷西南方,谷中深处蛇蟒横行,毒虫遍地。相传谷中有百蛇之王称号的“灵蛇”,为了保护蛇王,越来越多的蛇进入山中栖息,也是魔教四大门阀之一万毒门的总坛所在。《山海经·中山经》:“浮戏之山,……其东有谷,因名曰蛇谷。”
  一望无际的荒凉戈壁,世人称之为“蛮荒之地”,其上百年无雨,气候干燥之极,偶尔有些许绿洲,却也多为猛兽凶物所占,自然普通人一进便是死路一条。而在传言中,蛮荒深处,有一处宏大圣殿,正是魔教发祥之地。蛮荒之地十分凶险,附近不单有兽妖的威胁,还有当地的蛮族在窥视着外来人的一举一动。传说这片土地上有着通往其他世界的入口,各大门派的重要人物已经来到了蛮荒之地,不知道是否又会有一场血战。
  《神魔异志录》有记:万山之祖,名曰昆仑。昆仑之虚,方八百里,高万仞,其外绝以弱水之深,又环以群玉、符阳、翼望之山;其内有冷云、灵台之镇,镇中多上古奇人异士,通搬山捣海之能;其中有九天之池,池内有苍蛟翻腾,雄伟至极。其虚空八千里处,有昆仑之颠,上古神人居所“昆仑仙境”,仙境之中,珍禽异兽,仙草灵药,林林总总,不一而足。
  鸿蒙古地
  传说在盘古开天辟地之前,世界是一团混沌的元气,这种自然的元气叫做鸿蒙。鸿蒙古地则指神界。
  六界之中,非天之所,故名修罗。修罗界中景色玄奇诡异,以修罗王城“寂灭天”为依托,有风火、樱木、阎浮、法莲六道,六道之中有修罗魔王,奴役苍生,御使鬼神,以至哀号悲怆之声响彻云霄,终年不绝。“寂灭天”中更有修罗王执持世界,力洞无畏,于六界之中兴风做浪,以谋夺位。
  以上资料仅供参考,请以游戏内实际内容为准。
  以上就是本篇《诛仙手游游戏地图是什么 各场景地图介绍》的全部内容了,要想了解更多游戏资讯,游戏攻略,游戏视频等尽在97973手游网,期待你的到来!
  全民手游攻略下载地址:点击下载 &&&
扫描二维码下载全民手游攻略
  全民手游攻略微信公众号二维码:
扫描二维码关注全民手游攻略微信
  关于全民手游攻略
  全民手游攻略致力于为广大玩家提供最新、最全、最详尽的手游攻略,在这里你可以查询到任何你想要了解的内容。问答社区服务为玩家们提供了相互交流并相互解惑的平台,让玩家们的疑问尽快得到解决。
97973手游网声明:97973手游网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
价格:免费
类别:角色扮演
大小:暂未开放下载
搜索需要的App: 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于地图定位的场景交互游戏测试计划
下载积分:1000
内容提示:基于地图定位的场景交互游戏测试计划
文档格式:DOCX|
浏览次数:1|
上传日期: 20:03:05|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
基于地图定位的场景交互游戏测试计划
官方公共微信酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
有两件事物,我愈是时常反覆地思索,就愈是感受到发自心底的由衷的赞美和无边的敬畏&&这就是我头顶灿烂的星空,和我内心的道德准则。 - 康德
早些时候在知乎上看到这个有趣的题目,忍不住写两笔吧 :)
原题目:开放世界游戏中的大地图背后有哪些实现技术?
补充说明:诸如GTA,武装突袭之类的游戏中,开发者是如何实现超大地形的?对于这一问题有什么主流的解决方案?
补充:例如一些开发者提到的浮点精度问题是如何解决的?又如果npc在玩家视野之外是如何运算的??
以下部分是我的答案:
首先肯定一下,这是一个非常有趣的问题。在这个答案里,我将尝试先回答主干问题,再对补充说明里的几个问题简单说一下。
下面是本文将涉及到的一些相关技术的列表,(需要说明的是,这些技术单独来看并不复杂,实际动手实现并理解各种取舍以后,在项目当中针对具体的需求去设计和搭配才是关窍之所在)
一、程序技术篇:算法和架构(Programming Algorithms & Architecture)
无限循环的平铺地图(Infinite Tiling)
可预测随机数和无限宇宙(Predictable Random)
精度问题解决方案(Precision Problem Solving)
超大地形的处理 (Terrain Visualization)
4.1 古典算法(从 GeoMipMapping,Progressive Mesh 到 ROAM)
4.2 层次的艺术(Quadtree 和 Chunked LOD)
4.3 以GPU为主的技术(Paging,Clipmap 到 GPU Terrain)
id tech 5 的 megatexture (超大地表上的非重复性海量贴图)
过程式内容生成 (Procedural Content Generation)
6.1 过程式纹理(Procedural Texturing)
6.2 过程式建模(Procedural Modeling)
二、内容制作篇:设计和创造(Content Design & Creation)
随机地图类游戏 (Diablo II) 中地图的拼接
无缝大世界 (World of Warcraft) 中区域地图的拼接
卫星地质数据的导入,规整化和再加工(一些飞行模拟类游戏)
超大地图的协同编辑:并行操作,数据同步,手动和自动锁的运用
三、异次元篇:我们的征途是星辰大海
终极沙盒(EVE):当规模大到一定程度&&宇宙级别的混沌理论与蝴蝶效应
打通两个宇宙(EVE & Dust):发现更广阔的世界&&宇宙沙盒游戏和行星射击游戏联动
一、程序技术篇:算法和架构(Programming Algorithms & Architecture)
1. 无限循环的平铺地图(Infinite Tiling)
我们就从最平淡无奇的无限循环平铺地图说起吧。这应该是最原始,也是最没有技术含量的开放世界构筑方式了。
技术上由于过于朴素,也没什么好说的,就是在同一个坐标系内像铺地砖那样展开,坐标对齐即可,就是接头处需要注意一下,不要穿帮就行。但是千万别因为简单就小看这个技术哟,上面列表里面的不少技术都是在循环平铺的基础上发展起来的,下面我们就来瞧一瞧吧。
按照维度的不同,循环平铺有下面三大类:
a. 在一维方向上扩展的横版卷轴游戏(以动作类游戏为主)和纵版卷轴游戏(以射击类游戏为主)。这些类型的游戏里,为了避免循环平铺给玩家带来的重复的疲劳,卷轴游戏会添加一些随机或动态的元素,比如超级玛丽里的背景上云朵的位置,分出多个层次以不同速率卷动的背景层,等等。
b. 在二维方向上循环平铺的固定视角2D游戏。这一类游戏里,比较典型的就是 Diablo。暗黑中的随机地图生成,在本质上,就是叠加了一定的随机性,约束和边界条件的循环平铺效果。
c. 在 3D 游戏里循环平铺高度图,形成连绵不断的地形效果。这在早期的模拟飞行射击类游戏里比较常见,现在已经很难搜到图了,我在上大学的时候写的第一个地形渲染 demo 就是平铺的,可惜刚刚翻硬盘已经找不到了555。这一类游戏,在平铺时适当地辅以一些贴图的变化,可以在很省内存的条件下,做出非常不错的效果。
找不到游戏内的图,拿下面这个高度图来凑数吧。请大家脑补一下,把下面这个灰度图立体化之后,一块一块像地砖一样循环平铺以后,3D渲染出来的连绵起伏的直抵地平线(好吧,直抵远裁剪面)的山脉的壮观效果吧。
2. 可预测随机数和无限宇宙(Predictable Random)
(本节内的描述和算法,部分参考了《Game Programming Gems I》一文,请感兴趣的同学自行查找原文通读)
有个传说中的游戏叫 Elite ,不知道有没有同学玩到过。据说这游戏运行在32K内存的机器上,其中16K还是只读的ROM。这游戏据说拥有难以匹敌的游戏深度:近乎无限个行星,每一个都有各自的名字和特征。
可预测随机数本身是游戏内运用非常广泛的一个技术,这里我们着重谈一下它在为游戏提供(微观上)更丰富的细节和(宏观上)更广阔的世界的作用。这一技术的最重要原则是,为了在一个游戏世界中给出无限空间的幻觉,我们需要满足两个分解条件,可以把它们成为宏无限(macro-infinite)和微无限(micro-infinite)&。前者涉及到问题的空间规模,后者则任意一个对象所支持的最小细节层次级别。
从实现上来说,如何设定随机种子是这个技术的核心。由于给定一个随机种子,生成的随机序列是完全可预测的,那么根据游戏内的一些时空的设定,通过对随机种子进行一些定制,得到在游戏内任意某个时刻和某个空间点上完全可预测的行为就是可行的了。
最简单的是使用以下几个元素与随机种子配合计算:
世界坐标(即 X Y Z 值,既可以表示空间中的某个点,也可以表示某个区域)
系统时间(可以用真实时间,也可以用游戏内设计者定义的时间,如果是前者的话需要考虑离线时的处理)
正态分布(在游戏里建一个查找表即可,这是最廉价的方案)
这些因素加上对应的随机序列,已经可以营造出宏观上比较有深度的一个宇宙空间了。理论上,如果所有的随机性都是由给定的随机种子产生,而这些随机种子要么是游戏定义的常量,要么是查表得到,要么是均匀流逝,要么是由更高层次的随机种子生成,那么这样一层一层上溯到尽头的话,任何一个游戏内的宇宙,都可以归因到一个初始的种子,这个种子,就是决定论中经典物理学的所谓的第一推动吧。其实如果真做到了这一点,我们大可以把这个种子交给玩家,在首次进入游戏的时候掷一个 2^64 骰子。这是真正的上帝创世的感觉,想象一下,上帝说,要有光,于是掷出了骰子,第一推动怦然落地,整个时空的巨大齿轮开始运转,在不同的时间点和空间点上,更多的随机序列被生成出来...
这幅图来自于游戏 Frontier:Elite II(出自),下面配的字样是:&This picture doesn't even begin to show the scale of the universe.&大家感受一下。
微观上本质上也是一样的,只是把发散的过程倒过来,变成了逐级收敛的过程。为了在某一个点上放大时,能得到尽可能细致,准确和一致的表现,我们需要对较低层次的世界定义更丰富的规则和约束,比如黑洞对周围的影响情况,双星体系的轨道,恒星的种类与行星个数之间的对应关系,不同恒星系结构下行星表面的大气构成,等等。这样才能较好地平衡多样性和独特性,带来更真实的模拟效果和更令人信服的游戏体验。
3. 精度问题解决方案
当足够大尺度的世界被创建出来时,就会自然而然地遇到精度的问题。同时这也是补充说明中提到的一个问题,这里我们简单介绍一下几种实践中的解决方案。
先描述一下问题吧,我们知道,IEEE754 中规定的32位浮点数中,有23位是用来表示尾数的。也就是说,对于接近1的浮点数,可能会带来 2E-24 左右的误差(大约是 0.)以现实单位计算的话,如果游戏世界是边长为100km的正方形,那么在这个正方形的最远角落里,我们的最小空间单位是约 7.8 毫米;而如果是中国这么大的面积的话,空间误差将达半米左右。那么可以想象一下,如果是宇宙级别的游戏,采用32位浮点数作为全地图精度,那么实际误差可能会有多么大。
在实践中,这种误差可能会带来以下这些影响:
无法将相邻的对象对齐。这种情况,场景美术(关卡设计师)应该会比较头疼,这对于游戏的编辑器来说是大问题了。物件没法在引擎编辑器里对齐;在不同的平台上,对齐也不一样;甚至不同的编译器,同一个编译器的不同版本编出来的引擎;对齐都不一样 ... 所以说处女座不要做 LD :P。
模型间的穿插和裂缝本来封闭的墙角可能漏个洞,本来放在地上的石头变成了悬浮在空中。这实际上是上一种的变种。
骨骼动画的抖动由于世界矩阵往往参与骨骼动画的运算,误差可能会被逐级放大,在那些最远离根骨骼的骨头上(也是玩家最容易注意到的地方),抖动可能会发生得非常剧烈。
物理模拟失真一些柔体的模拟可能会直接失败,而刚体也可能会产生怪异的运动。碰撞系统也可能无法正常工作。
所有这些一旦发生,都是很容易觉察的。一旦你发现在一个很大的坐标上有这些问题,而接近原点处问题却消失了,那么很有可能就是精度在作怪。而需要注意的是,出现这种问题,只和游戏中出现的数字的规模和跨度有关,和游戏选择了什么样的长度单位(如用毫米还是公里做单位)无关。
那么怎样使用有限的坐标精度来描述较大尺度的世界呢?
最直接的方案是使用双精度浮点数(64 位),如果这是可接受的选择,那么就不必费心引入后面讨论的复杂度了。
其次是区域划分法。我看到 Milo 同学已提到,不过这里出于完整性的考虑,再简单说一下。正如 Milo 同学所说,&把世界划分成不同的区域,在区域内的计算使用其局部坐标系统。&相对应的跨区访问,需要对应的&本地A -& 世界 -& 本地B&的坐标转换。
还有一个方案是节点中转法。正如移动电话的基站用来承载和协调整个通信网络那样,我们在游戏的给定活动区域使用静态信标,所有的逻辑上与之相关的单位,都以该信标的坐标作为参考单位,这样也可以做到把数据访问局部化。相距足够远的两个物体(相当于上面的跨区访问)交互总是通过静态信标来完成(正如移动电话网络中发生的那样),这样的好处是相关的复杂度可以隔绝在这个中转系统的内部。
此外凯丁同学提到了一个坐标转换法,&所有位置信息都以角色位置为中心做一次转换&。这正是 《Game Programming Gems IV》文中的方案。这个方案可以解决部分问题(主要是渲染相关的问题),但是仍有一些问题需要考虑,比如:1. (上面提到的)编辑器内操作的物体,在序列化到文件中时,精度丢失的问题。2. 大部分物理模拟通常需要一个角色无关,摄像机无关的全局坐标系。等等。
4. 超大地形的处理 (Terrain Visualization)
终于说到对超大地形的处理了。可以说从上世纪九十年代起,超大地形的可视化,一直是3D游戏领域热门的话题。今天我们就借着这个机会,把相关的算法和实现理一理吧。
考虑到篇幅太长的话,俺的手指头招架不住,再一个不少对这个话题感兴趣的同学可能压根就不是,一些实现细节可能我就只是简单提一下,贴代码什么的还是算了,尽量保证整篇文章的信息浓度适中吧。
总的来说,这十多年来,地形渲染技术的发展史就是一部生动的对现代GPU的开发,利用和改进史。整个过程大致可以分成三个阶段:一开始,GPU处理顶点能力很弱,这个时期的各种精巧算法(如一些VDPM和后期的ROAM),尽力在用CPU来降低顶点的总量,避免一不留神压垮图形系统;后来,图形系统的能力上去了,人们开始更多地考虑到把地形系统融入到通用的场景管理中去,如四叉树八叉树什么的就是在这个阶段被广泛应用的;再往后,GPU已经很强大了,CPU由于要承担更复杂的游戏逻辑,越来越成了整个系统的瓶颈,这个阶段,人们琢磨的更多的是,怎么利用GPU给CPU减负了,一直到如今,由 GPGPU 带动起来的异构计算,也都是这个路数。
由于内容比较杂,超大地形这个段落,按上面的描述,咱们分为三个小段分开来讲吧。让俺先沏上一杯碧螺春,为客官一一道来。
4.1 古典算法(从 GeoMipMapping,Progressive Mesh 到 ROAM)
GeoMipMapping是从纹理的 MipMapping 技术演化来的一个地表处理技术,原理上是根据任何一小块地形在屏幕上显示的实际尺寸(主要跟与摄像机的距离和起伏程度有关)来选择对应密度的网格,然后把不同分辨率的网格之间以某种方式拼接起来(没有这一步的话就会有裂缝),本质上是一种比较粗糙的区域 LOD 算法。顺便说一下,由于那时候针对顶点级的处理很多,导致这种T型裂缝很常见,以至于有个专门的名字叫&T-Junction&,针对这个的处理在当时也有很多方案。
这是俺刚刚到老硬盘里刨出来的大三时写的 GeoMipMapping 代码,编了一下居然还能跑起来。有点土,别介意:P 可以看到不同的 MipMap 级别是用不同的颜色渲染的,也可以看到接头处 T 型裂缝的处理。唉,这代码勾起了俺的青葱回忆啊,那就顺便再来两张 T 型裂缝的示意图和消除过程吧。
Progressive Mesh是后来很流行的技术 Simplygon 的前身,原理上基本也是一致的,就是以某种方式渐变性地化简某个给定的 Mesh。
渐进式网格有两种:视点无关的 (View-Independent Progressive Mesh,VIPM) 和视点相关的 (View-Dependent Progressive Mesh,VDPM)。两者的区别就是,前者预先离线生成好所有的渐变过程,运行时直接用就行(也是后来 Simplygon 采用的方案),而后者随着摄像机的位置和角度的变化,生成对应的简化模型。两相对比,VIPM的好处是运行时运算开销低,简化模型的效果好,缺点是费内存(因为数据都存下来了,当然后来增量的方式能省一些),而VDPM在当时是不错的选择,因为跟VIPM相比不用费额外的内存,而且对于视点(就是摄像机)变化不剧烈的应用,不需要每帧处理和更新对应的简化模型(普通的MMO类的一般一秒一次就够了),此外由于一些简单的遮挡剔除和背面剔除,能够比VIPM裁掉多得多的顶点(一般能多裁1/3到一半吧,在当时这可是头等大事)。
总的来说,至少在当时,两者的应用都比较广泛,而到了后来,显存越来越大,总线却越来越紧张,VDPM这种典型的刷顶点的算法(比较费总线带宽)就逐渐失去了市场,这是后话了。
大家可以在看到一些 PM 在地形渲染上的应用。图咱就不上了,大家可以到 Simplygon 的网站上去看。
ROAM可算作是上面提到的 VDPM 更进一步了。这个算法实际上借鉴了当时主流引擎的标配BSP的思路,想利用二叉树这个最简洁的空间描述数据结构,把(CPU端的)顶点消减发挥到极致。整个地表被组织成一个巨大的二叉树,有两个队列,一个是分割队列,一个是合并队列,分别用于处理摄像机移动时,增加进入视野的区域细节和消减退出视野的区域细节。精心设计的 ROAM 效果非常华丽(尤其是在线框模式下),你会看到在各种因素的影响(包括局部坡度,与摄像机的夹角,遮挡情况等等)下,各种三角形像魔术般的不断地变幻,生成和擦除超多的细节,效果非常魔幻。我印象很深的是当时连续打Quake3两个小时完全无感的我,调试这玩意的时候,每每不到十分钟眼就花了。
网上找了两张比较典型的 ROAM 大家感受一下吧。
4.2 层次的艺术(Quadtree 和 Chunked LOD)
其实用于空间管理的树状结构有四叉树和八叉树(还有上面的二叉树),但地表通常以前者居多。是因为,从小范围来看,变化剧烈的地形是3D的,适合八叉树在xyz三个方向上扩展;但当尺度大到一定规模之后,地形通常退化为相对扁平的2D空间,就像摊平了的地球表面那样,在竖直的Z方向上变化相对不大,而XY平面则是可能无限延伸的。
Quadtree四叉树很直白,具体的细节我就不讲了。值得一提的是四叉树往往也同时用于场景管理的快速剔除和查找,从理论上来讲,四叉树是一个平面上最迅速的用于剔除空间,定位一个物体,内存开销也是相对较低的数据结构。当用于地形渲染时,顶点剔除的效率也很高,我印象中仅次于高度优化的 ROAM。内存开销低主要是因为四叉树是可以完美展开到一个位数组里的,这样的话意味着整个树的利用率达到了百分之百&&所有的空间都用来存储数据而不是维持结构。
不过四叉树也不是啥都好,T型裂缝就比 GeoMipMapping 难处理,因为存在跨级的多段 T 缝,如下图:
除此之外还有一些细节问题,这里就不一一说明了,地形的四叉树渲染还是有很多细节需要细心处理的,此处暂且放下不表。
Chunked LOD是一种杂合改良的 LOD,其实糅合了上面说的不少细节,本质上是一种分区块地消减细节的技术。所谓 Chunk 是批量处理的一种方式,只是一种粒度划分的单位而已,跟现在 Java 的 GC 里分区回收概念上差不多。
下面是典型的 Chunked LOD 后的效果:
顶点多次过滤优化后的效果:
效果在当时还是很惊艳的。通常不到50k的渲染数据量已经能有非常逼真的效果了。
4.3 以GPU为主的技术(从 Paging,Clipmap 到 GPU Terrain)
上面的基本上都是传统方案,这一节我们将逐渐过渡并挨个介绍一下以 GPU 为运算主体的算法。
所谓分页(Paging)实际上是仿效虚拟内存的运行机制的一种方法。由于地表的顶点数据都是静态数据,适合常驻显存。当世界尺度较大时,显存没法一次放入所有数据,那么系统就像虚拟内存那样,把那些暂时没有用到的数据交换出去。随着游戏的进行,Paging In/Out 也在不断进行,辅以一定的异步机制,加载到显存的延迟可以被很好地掩盖。玩家的直观感受就是:哇,海量的细节。
而Clipmap则比 Paging 更进一步,以金字塔的形式逐级把数据排列好,直接整体更新和渲染。从这里也可以看出 GPU 时代人们的思维方式的逐步变迁。从以前顶点级别(Vertex Level)的&锱铢必较&,到后来的一次多塞一点也无所谓,只要批次(Batch)少就 OK。下图可以看出 Clipmap 的基本思路。
所谓的GPU Terrain Rendering就是把高度图从内存里经由 2D Vertex Texture 搬到 VS 里去生成三角面,这样的好处是 CPU 和内存就被彻底解放出来了。只是访问上有一些限制,不像直接处理内存那样方便。具体的细节可以看这里:
在 GPU 上做还有个巨大的好处是可以借助 Gaussian Noise 即时生成更多的细节了。直接拿一小块预生成的高斯噪点图在需要的时候叠加一下,就能在没太大额外开销的情况下,增加各种细节。如下图所示:
随着大家对 GPU 理解的深入,地形的处理又有很多的小技巧可以做,尤其是在 PS 里面,比如法线生成,动态uv展开,光照按需叠加/衰减什么的。不过呢据我所知没有什么非常别具一格的架构上的新思路了,所以就不再深入了。
5. id tech 5 的 megatexture (超大地表上的非重复性海量贴图)
megatexture在当年(2007)是一个非常值得一提的技术。在这个技术出现之前,几乎所有的地表渲染用到的贴图都是若干张 blend 到一起后,以 tiling 的形式重复平铺在地表上的(包括比较典型的魔兽世界也是如此),这样的直接后果是图片的种类用多了耗资源,用少了又很容易感到单调和重复。而 megatexture 则是一张全局的超大贴图,从根本上避免了重复这个问题,理论上(实践上也是)能够生成非常壮丽和独特的地质风貌,是传统的刷地表无法创作出的效果。可以说这个技术让真正的全景地貌成为可能。
& 相关主题:}

我要回帖

更多关于 压力测试工具有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信