QQ登录

只需一步,快速开始

地形纹理

2012-11-23 17:24| 发布者: flightgear| 查看: 3701| 评论: 2

摘要: Flightgear默认世界场景并非全都看上去很出色也许不是个秘密,然而Flightgear 2.8中的地区纹理,以及当前开发中的2.9版本中构建的程序纹理中有两项技术有可能很快改变这一情况,但这些技术细节如何呢? 由于缺少fgph ...

    Flightgear默认世界场景并非全都看上去很出色也许不是个秘密,然而Flightgear 2.8中的地区纹理,以及当前开发中的2.9版本中构建的程序纹理中有两项技术有可能很快改变这一情况,但这些技术细节如何呢?

    由于缺少fgphotoscenery这样的插件,Flightgear纹理从未用过航拍照片,地形用地景来描绘,每个地景都有相应的纹理,2.8版中,这些纹理定义全世界都是一样的,但实际上,这不真实——比如美国的城市规划趋向矩形走纵横交错的格局,这在欧洲则很少见;亚洲灌溉作物大多是稻田,这在美国中西部则不常见,地区纹理允许对特定的地理区域绘制纹理框架,从而克服这些问题,现在能够将欧洲城市绘制成有别于美国城市的形式。

    程序纹理是一种更强大的技术,默认的透视框架中,特定的地景地形用预绘制纹理,然后计算出光线,这就是我们在屏幕上所看到的。程序纹理不使用预绘制纹理,但计算纹理作为渲染过程的一部分,这一强大的技术使得纹理对环境更敏感,从而能模拟干、湿地形;制作实际纹理作为各种覆盖纹理的混合体,这种多层纹理可以根据地形陡峭程度变化,或在飞行中增加任意厚度的雪覆盖层。程序纹理是Flightgear 2.8版本中着色效果的一部分,比如取决于风大小的水波形式,或雪线设置,但在2.9版本中,这一技术有了更多的选择,最重要的是只需要几行XML代码,不需要任何OpenGL渲染知识就能进行构造。

    程序纹理最形象的说明 – 这是默认纹理中一个场景 (加利福尼亚的中国湖海军武器站),这一可视地形中大部分是灌木林地,是明显的块效应 – 场景中的纹理类型看上去是重复的,导致常规结构从更高高度看上去更显著。

    程序纹理中的相同场景看上去更吸引人 – 不同基底的平铺,薄薄的雾层效果产生了干旱地形印象,更适于临近沙漠的位置特点。

    遗憾的是,程序纹理并非免费 – 飞行中计算纹理消耗速度很大,因此程序纹理只适用于现代显卡。

Flightgear场景结构

    区域和程序纹理相结合将非常强大,只需要几行XML代码就能对世界场景进行显著的改善,让我们看一个场所范例:

    委内瑞拉的卡奈依马国家公园是世界最迷人的山区,拥有像Auyantepui这样的平地层山脉,高高耸立在丛林地带,拥有世界上最高的瀑布,天使瀑布(3287英尺),场景提供了陡峭的接近垂直的悬崖,几百米高,凹凸不平的难以抵达的平原耸立在平地层山脉,山底是繁茂的热带雨林和弯弯曲曲的河流,进入该公园最佳的地点是Canaima机场(SVCN)。

    然而,Flightgear默认的绘制框架中:Auyantepui显示如下:

    图中有不太对的地方,为了搞清哪里出了错,让我们快速看一下Flightgear场景中的结构。

    场景中的基本要素是地形网络,包括所有网络点的标高数据以及网格点间的地景信息是什么,地形网络是由一个公共地理数据库中名为TerraGear的工具制作而成,该阶段的输出包含地形高度信息,以及诸如能展现热带雨林特征的地形信息(即所谓的地景)。

    下载的地形一旦被Flightgear使用,地景就与一个纹理相关,同事,任意物体,比如建筑、树,根据相应的地形网络安放,这样,热带雨林地景在这一步中与一个森林纹理有关,通常会有大量的树丛,比如水中会有树倒影,而城市地形中水中则是城市倒影。

    最后一步,场景中加入(独特的和共同的)静态物体,这些物体总是显示在给定的位置,比如机场航站或特定地标,这些可以在Flightgear Scenery Database中找到。

    了解了这些,让我们再来分析一下以上场景,找出到底哪里出问题了:我们可以看到平地层山脉中很大一部分是农耕纹理,在这一令人不愉快的地形中用ufo 和ctrl + alt + click(仅适用于2.9版本)访问这一场景,发现这里的网络被归为“旱地作物”,这并非完全不合理,因为这一平地层山脉的顶部是相当贫瘠的草原 – 但旱地作物自动与欧洲类型农业纹理相关 – 这样,尽管通过着色效果将陡坡上的农作物变成褐土,但在本该是陡峭的难以接近的地方看上去只是平原也是愚蠢的。同样的,靠近热带雨林的地方被归类为“常绿林”(技术上是正确的)- 但常绿林与针叶林纹理和针叶树有关。

Editing scenery texturing编辑场景纹理

    怎样编址有多种可能性,比如,使用TerraGear,场景中的地景会变的更接近现实,但这么做需要知道,TerraGear不是一种平常工具,在这个例子中,也是不必要的,基本标高网格被很好排序,地景也不是不合理,只是与之相关的随机物体和纹理不起作用,因此我们需要对此作出更改。

    地景到纹理的构图和其它优先权由一个叫做materials.xml的文档控制,地区化的实景可以在$FGRoot/Materials/regions/materials.xml中找到,在该文档中,每个地景都存在一个定义框,只需要复制“旱地作物”定义框,并编辑副本,使之包含一个对特定地理地区有效地替换定义,然后将纹理变得更合适,在$FGRoot/Textures/Terrain/和 $FGRoot/Textures.high/Terrain/中包含很多好的纹理,因此通常我们不需要一个新纹理。然而我们却在其上,我们可能还需要给该纹理加上几行,规定程序纹理的覆盖纹理,这就是所需要的 – 下一步是常绿林 – 我们重复这一过程,将常绿针叶林改为热带树林。

    用materials.xml编辑一个小时后,卡奈依马国家公园如下图:

    好多了 – 是吧?现在所缺少的是天使瀑布 – 我们需要一个静态模型,Flightgear中的Particle System将变成我们的朋友。

Canaima Sightseeing卡奈依马视景

    使用the ufo添加了天使瀑布模型后,卡奈依马国家公园可以进行视景飞行了(Flightgear2.9版用户也能享受到这些) - 一旦地景指定正确后,程序纹理接管了剩下的工作:

    陡峭悬崖峭壁下降,飞跃Auyantepui,沿航路飞往天使瀑布:

    平地层上方抵达云层之上

    从高高度看天使瀑布

    平原贫瘠的顶部

    热带雨林返回Canaima机场途中

    不要等别人定位你想要探索的地形,很简单,通过这里的工具大多情况下,不仅能制作一个建筑物模型,也能制作广大区域的地区纹理。

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

kgdjszx 2013-4-8 01:56
是啊 ,我们更想看到的是如何做到的?希望高手引路!
zhbl 2013-1-22 09:14
效果是不错!具体如何实现?能否提供例子?

老是照搬过来就没有意义了。

查看全部评论(2)

手机版|联系我们| FlightGear ( 京ICP备10014305号 )

GMT+8, 2019-8-26 14:44

Powered by Discuz! X3.2

© 2001-2013 FlightGear Inc.

返回顶部