渲染每加一个光源就要重新遍历一遍场景吗

 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于渲染的单幅图像的光源定位
下载积分:1998
内容提示:基于渲染的单幅图像的光源定位
文档格式:PDF|
浏览次数:0|
上传日期: 04:09:16|
文档星级:
该用户还上传了这些文档
基于渲染的单幅图像的光源定位.PDF
道客巴巴认证
机构认证专区
加  展示
享受成长特权
官方公共微信在有条件的前提下可以有原画设计氛围图,然后由合成组根据氛围图开始设计制作场景。在没有氛围设计的情况下,在开始制作场景前需要可以制定一个文档,把需要达到的效果和风格用文字描述下来,并且最好有参考的图片,制作时根据文档的定案来表现效果。
角色模型、场景物件模型单位比例必须统一规格。
可以制作一些通用的场景,比如灌木森林,在不同的区域要求通过修改细节来区分,再和大其他场景拼接。
组合节点的使用,在准备期中,可以将一些单个的部件组合在一起,在后期放置节点的时候,直接在场景中拖入以已经组合好的节点,节约制作时间。
自然地形的制作。山川,河流等,使用地形编辑器结合相应的模型相对于完全用模型来模拟自然地形效果更有优势,因为他的地表贴图能够完美的相互连接,这里的连接不单单是指不同的贴图在相接的地方看不到接缝 ,而且更重用的是他们之间有一种自然的过渡效果。现在单用模型制作地表也可以表现出这种效果,但是贴图数量要大大增加了。当然使用地形生成编辑器也有它的局限,地表贴图的数量不能太多,选择的地表贴图的数量越多游戏中运行的效率就会越低,计算机的发展和程序运行效率的提高将会允许我们有更多的选择,所以现在选择2~3张地表贴图更适合。
地形生成编辑器需要两种贴图,灰度图和地表贴图。灰度图对于手绘板的压感使用有一定的要求,柔和的过渡能表现完美的坡度。地表贴图是四方连续的,需要在绘制技巧上非常了解,地表贴图处理得不恰当就会造成重复率很高的视觉效果。
2的n次方加1是灰度图大小的规范,一个像素在不改变原始比例的时候代表地形中的一米。根据设计的要求选择不同大小的灰度图。越大的灰度图生成的地形就越大,地表就越大,坡度和转折的过度越平滑,但是效率就越低。
在photoshap中制作灰度图可以有几种方式,在新建中的颜色模式可以选择灰度和RGB模式。在灰度模式中线则颜色的百分比来调整黑白。在RGB模式中调整RGB参数来选择黑白。但是黑白表现的地形效果是一样的,黑色代表地形中最低的位置,白色代表地形中最高的位置,根据策划需求来制作不同的地形。
(512,1024)
(512,1536)
(512,2048)
(512,2560)
(512, 3072)
(512, 3584)
按照项目的需求选择场景大小,先绘制整体地形感觉,确定后再细化每个场景。
游戏程序方面使用新的基于通道(PORTAL)的渲染方式可以在含有室内场景的时候提高游戏的运行效率。其基本原理是只渲染通道可以看得到的物体,被墙或建筑遮挡住看不到的物体不进行渲染。这样就提高了运行效率。
上图中绿色框框就是portal,利用portal把每个小块场景分割开来。当玩家通过其中一个portal的时候,后面看不见的分割模型就会消失隐藏掉,从而提高游戏的流畅效率。
1.在n3_editorterrain.exe中完成地表,然后在文件菜单中选择export,选择导出的文件夹和文件名。
2.打开tr_editorlevel.exe,在资源选项卡建立新的资源,然后拖入场景进行编辑。
3.只要是在地表上出现的资源全部放在地表的节点下。
4.完成场景的编辑,在文件菜单选择导出大地形,选择路径和输入文件名。(这里需要注意,必须是整个地形都能看到的情况下导出,不然可能会报错)。导出后会在terrain文件夹生成新的文件夹和landscapelg后缀的文件。这个文件对中用在无缝连接的大地图使用。
1.添加场景到编辑器内,注意这次拼接大场景中的场景属性路径必须是/data/level/mainland/mainland28/terrainedit/mainland28.landscapelg导出后的场景文件。
2.按照之前灰度图制作的场景下面数字坐标找到28号()把坐标对上即可。需要添加几个场景就添加几个场景,直到所有场景都添加完成。
3.每个小场景坐标必须是全部归0,0,0。不然在拼接大场景中就会有偏差。
地面要保持平缓,避免突然的凹凸点,否则,影响游戏的流畅性,角色会卡在一个点上。如果通过pointlight打光,每个submesh最多只能收到3个点光源。所以如果submesh较大,最好切分。
在拼接室内场景时,把诸多的物件组合成不同的组合节点,利用组合节点更快更好的拼接场景。
根据不同风格的场景需求来。数量不一定需要很多很多,点到为止即可。在摆放场景物件的时候必须对项目内的资源非常的熟悉,善于使用组合节点的方式来摆放物件。这样可以大大提高场景资源利用和游戏的流畅度。
1.将3dmax中导出的物件放置在临时场景中。
在物件属性栏中点开skin2,增加脚本输入栏,并且点击后面的省略号按钮打开。
2.输入指定脚本
一个模型原则上可以对应多张贴图,skin2中输入多张贴图的顺序需要和max中指定模型贴图的skinslot的顺序保持一致。
脚本文件说明
skin\skin2\template中的s2t_entry.lua文件,
function makeMaterial(Material, Diffuse, Ambient, Emission, Specular, Shiness)
Material._Diffuse
Material._Ambient
Material._Emission
Material._Specular
Material._fShiness
--高光系数
5个参数的排列对应wood.lua,stone.lua文件中
makeMaterial(pass._Material, Vector4f(1,1,1,1), Vector4f(1,1,1,1), Vector4f(0,0,0,0),
Vector4f(1,1,1,1), 5);
括号内的数值代表,R,B,G,A,通过调节参数来表现不同的效果,但是要记住,一旦调整了参数,所有一类的物件都会统一,所以需要在游戏制作前期就确认好效果。
createSkin2_Wood("原始贴图", "效果贴图(高光,法线等)");
createSkin2_Wood("/data/scene/plant/tree/tree05/tree05-trunk02.tga", "/data/scene/plant/tree/tree05/tree05-trunk02-l.tga");
BILLBOARD树叶
Billboard方式导出的树叶,在放置到场景前,需要在CassName中输入Nbbgrass,程序才能认定是billboard。
createSkin2_BBWindGrass("原始贴图")
createSkin2_BBWindGrass("/data/scene/plant/tree/tree05/tree05-leaves01.TGA")
部分物件在游戏中会使用lod的效果,所谓lod就是在游戏中根据角色视角和物件的距离,载入不同精度的模型的优化方法。在有些引擎中程序会自动计算。我们的制作方法是由美术制作不用精度的模型由配置文件控制程序调用。
紧接上一步,将脚本文件输入skin2的文本框后,对应不用的物件需要修改不同的属性。
树木需要碰撞,反射,和折射也必须打开,将collision=1,reflection=1,refraction=1,castshadow=1等相关参数设置好。Culldistance的代表可是范围,使用默认就可以,由后面讲到的刷子工具来设置。树叶不需要碰撞,但是会有反射和折射,所有只要将collision=0,其他两个参数设为1。Culldistance也使用程序默认值。
脚本文件输入完成,并且参数配置完成之后,选择物体,选择节点菜单栏中的输出节点xml描述选项。会在信息栏中显示物件的设置信息。
复制我们需要的信息部分
复制从包含模型路径的哪行开始,到相对应的&/node&结尾。
将复制的信息拷贝到lod专用的xml文本中。类似于下面的文档:
&root name="LodModelConfig" showfar="1"&
&node class="Npolygonsoup" file="/data/scene/plant/tree/tree05/tree05-01-trunk-bulk01-lod01.polygonsoup" Reflection="1" Refraction="1" CullDistance="-1.000000" loddistance="20.0"&
&Skin2 value='createSkin2_Wood(&/data/scene/plant/tree/tree05/tree05-trunk01.tga&, &/data/scene/plant/tree/tree05/tree05-trunk01-l.tga&);' /&
&Skin2 value='createSkin2_Wood(&/data/scene/plant/tree/tree05/tree05-trunk02.tga&, &/data/scene/plant/tree/tree05/tree05-trunk02-l.tga&);' /&
&node class="Npolygonsoup" file="/data/scene/plant/tree/tree05/tree05-01-trunk-bulk01-lod02.polygonsoup" Reflection="1" Refraction="1" CullDistance="-1.000000" loddistance="40.0"&
&Skin2 value='createSkin2_Wood(&/data/scene/plant/tree/tree05/tree05-trunk01.tga&, &/data/scene/plant/tree/tree05/tree05-trunk01-l.tga&);' /&
&Skin2 value='createSkin2_Wood(&/data/scene/plant/tree/tree05/tree05-trunk02.tga&, &/data/scene/plant/tree/tree05/tree05-trunk02-l.tga&);' /&
&node class="Npolygonsoup" file="/data/scene/plant/tree/tree05/tree05-01-trunk-bulk01-lod03.polygonsoup" Reflection="1" Refraction="1" CullDistance="-1.000000" loddistance="60.0"&
&Skin2 value='createSkin2_Wood(&/data/scene/plant/tree/tree05/tree05-trunk01.tga&, &/data/scene/plant/tree/tree05/tree05-trunk01-l.tga&);' /&
&Skin2 value='createSkin2_Wood(&/data/scene/plant/tree/tree05/tree05-trunk02.tga&, &/data/scene/plant/tree/tree05/tree05-trunk02-l.tga&);' /&
上面一段文本,包含3个不同精度的模型,从&node class=开始到&/node&结束,为一组,可以发现除了增加了loddistance的属性,和文件名有所不同,其他同复制的信息是一样的,不同的文件名表示不同进度的文件,loddistance表示在多少米可以看到这个模型。可以是3组,也个是4组,5组更多。
有些物件资源是单独模型的,有些物件资源是由多个类型的部件组成,比如树木,树干是需要碰撞的lod节点,而树叶是billborad的lod节点或者不是lod的。这就需要将不同类型的资源设定参数然后组合在一起,由程序调用。
载入配置完成lod的xml文件载入场景
有几点要注意,在类型栏选择transdyna是为了保证拖入场景的文件和场景的坐标轴保持一致。
在ClassName需要输入对应lod配置文件的属性Nlod。因为在lod配置文件的时候已经修改了树干的参数,所以在这里就不需要修改,保持默认。
将billboard类的树叶(参考上一节内容)或者其他类型的树叶拖入场景,保证和场景的坐标和树干的坐标保持一致。
保存场景作为备份。选择根节点,选择节点菜单中的保存为组合节点。
1.把需要优化的物件载入到编辑器中。
2.在菜单栏中选择模型优化设置,静态模型使用默认值就可以了,动态模型根据优化后的效果调整优化参数。主要调整坐标误差的参数,数值越小优化率越少。法线误差参数不用调整。
3.选择菜单选项进行模型优化,不管是polygonsoup格式还是keyframe都是使用这个菜单命令。
4.在编辑器中需要优化物件的目录里会创建一个新的文件夹,把文件夹中的文件覆盖上级目录的原文件,模型就优化完成了。
5.进行skin优化,选择菜单命令。选择需要优化skin的目标文件夹,然后选择“start optimize skin”,在目标文件夹会创建一个新的文件夹和2个新的文件,扩展名为.skinb和.dds。
6.通过上面几步模型就算优化完成了,在发布游戏资源的目录里,只需要包含模型格式文件,以及两个新创建的文件,其他格式文件都可以删除。
同一个模型上拆分下来的物件视距统一。如图:
因为编辑器内模型越大视距就越远,所以像这个模型玻璃窗视距就需要做适当的调整,在CullDistance后面参数做调整100参数就是100米多少就是多少米,调整到和飞机本身模型一起消失。在一个场景中,有时一些小物件未必需要一直显示。一方面一直显示非常消耗资源。1个小物件是消耗不了多少,但一多就是个问题。另一方面,小物件离玩家的距离非常的远或者是根本已经看不见,所以也就没必要显示那么远了。场景中物件的视距需要去控制。
一个场景内物件视距必须有一个标准,这样对游戏流畅度会有很大的提高。一般来说场景内植被:草30-50米、树木100-170米、花50-70米。如果场景中比较重要的中心的模型建筑等CullDistance可以视距200米左右。一些小箱子、酒桶、凳子等50米。
地形编辑器的界面主要包括三个部分:菜单栏、工具栏和地表绘制表现窗口。如下图:
菜单栏包括4个菜单,文件,编辑,视图和帮助,具体介绍如下:
1.New:新建一个地形。这是场景建立的第一步,它决定了场景的大小和贴图的比例,可以预先生成一次,如果对于生成的效果不满意就重新新建,直到效果满意为止。完成了地表的整体效果后,再觉得地图的大小高度不是很理想,那只有重新再建立,没有其他捷径可走。
2.Open:打开一个已保存的地形。文件名为.landscapeedit作为后缀的文件。
3.Save、Save as:保存当前编辑的地形,文件名为.landscapeedit作为后缀的文件。如果将来要进行修改,打开的就是这个类型的文件。
4.Export:导出地形,导出的文件是.landscape格式,这样关卡编辑器(LevelEditor)和游戏才能使用你编辑的地形,而在地形编辑器中是不能打开的。
1.地表纹理:选择地表纹理的命令后会出现一个选择对话框,其中所列出的文件就是在建立地形文件时选择的地表纹理。我们选择合适的地表纹理在地形上刷绘,比如草地、沙漠等。
2.生成光照图:为地形打上光照之后生成的图,这样有助于地形观察。没有阴影的地形不管从什么角度看,更像一个平面,也不便于观察实际地形效果,在新建地形后,生成光照图的步骤也时必不可少的。
1.工具栏:控制工具栏的显示与隐藏。
2.状态栏:控制状态栏的显示与隐藏。
关于地形编辑器的版本信息。
与菜单栏的功能类似。
对应“文件”菜单,依次为新建、打开、保存、另存为。
对应“编辑”菜单,依次为生成光照图、PVS、地表纹理、剪切、复制、粘贴、撤消、恢复、显示网格、方形笔刷头、圆形笔刷头。
对应按键最主要查看每个地块中材质数量。如图:
青绿色块为1张材质。
草绿色块为2张材质。
黄色块为3张材质。
橙色块为4张材质。
红色块为5张以上材质,当显示红色时就要注意了。每个地块内只能4张以下材质(包含4张)。
主要包括add添加材质、remove删除材质。
对应repeat为材质的平铺率、collide选择材质的属性、apply为选择其中材质属性时确定按键。
对应brush size为笔刷大小调节、blur edge为笔刷边缘模糊的调节、weight为笔刷轻重调节。
对应“帮助”菜单。
地表绘制表现窗口
查看效果图的窗口,将地表贴图绘制到地形上的操作都是在这个窗口中来完成。
关卡编辑器的界面主要包括以下几个部分:菜单栏、工具栏、资源及属性窗口、场景窗口、调试窗口和状态栏。
关卡编辑器的菜单栏中包括文件、编辑、节点、网格、NPC、区域、路径、视图、窗口和帮助。如图:
文件菜单主要包括以下子菜单:
1.新建地图:为场景建立一个地图。点击“新建地图”后,会出现“场景描述”对话框,输入关卡ID,此ID在游戏中是唯一的,且必须是数值如“123”,“10010”。
2.打开地图:打开已有的可编辑的.3sgedit文件的地图。
3.保存、另存地图:将正在编辑的地图进行保存,格式为.3sgedit,可以进行编辑修改。
4.导出:导出游戏中可识别的.3sg文件类型,不可进行再编辑。
5.导出优化的PolygonSoup,是对已经导出的静态模型和动态模型的优化,可能会出现文件比原始更大的情况,这不是错误,应为优化的模型载入速度比原始文件要快很多。
6.设置地图固定视角。
7.地图统计信息:对场景中的信息进行归类统计,包括关卡ID、网格和物件信息。
编辑菜单使场景元素处于可编辑状态。主要包括编辑节点、编辑网格、编辑区域、编辑NPC、编辑路径、刷怪信息等,与后面的菜单结合使用。这部分更多的是策划部门的工作,美术部门上最常用的是编辑区域。
选择“编辑”菜单下的子菜单“编辑节点”后,“节点”菜单下的编辑选项处于可用状态。分别含有:平移,缩放,旋转,刷面向摄像机节点,刷普通节点等子菜单。 选择一个节点,可以使用这些编辑选项。
1.移动:分单向平移和XZ平移2种,鼠标左键放到某个坐标轴上,当坐标轴变亮,按住左键不放,即可沿此轴平移此节点。
2.缩放:分单轴缩放和3轴等比例缩放,同样需要拖动坐标轴。按住Ctrl键,拖放坐标轴,此时会复制出当前节点,并且将复制出来的节点处于拖动状态。
3.旋转:分别是
绕X, Y, Z 3个轴旋转。
绕 X 轴旋转,只能拖动 Y 和 Z 轴执行旋转;
绕 Y 轴旋转,只能拖动 X 和 Z 轴执行旋转;
绕 Z 轴旋转,只能拖动 X 和 Y 轴执行旋转。
4.刷面向摄像机节点:需要选择节点当作父节点,新刷的节点都将放到此父节点下面。刷之前,需要配置需要刷的节点列表(菜单”配置刷面向摄像机节点“)。
选择“刷面向摄像机节点”后,点击左键即可在鼠标下放下节点,直到按ESC,或者选择其他编辑方式以结束刷子状态。
5.刷普通节点:类似“刷面向摄像机节点”。以上两个工具主要功能是放置场景的物件,活用这个工具会提高工作效率。现在只支持静态物件的摆放,摆放的高度位置是以网格高度为基点。
6.将当前节点保存为组合结点:有些节点需要依赖其它节点才能产生作用,所以要把这一组节点组合成一个节点。在制作特效的时候用的比较频繁。
选择“编辑”菜单下的子菜单“编辑网格”后,“网格” 菜单下的编辑选项处于可用状态,可以编辑网格属性(高度图,障碍属性)
1.阻挡区域:包含草地、水、石头、土地等障碍属性。在主窗口中按住左键即可刷所选择属性的区域(阻挡区域即不能行走区域,其他都是可行走区域)。
2.刷图大小:×1,×4,×9,×16,×25是刷子的大小。×n 表示用鼠标拖放出一个矩形范围,然后填充此区域的障碍属性。
3.设定网格范围:会弹出一个“Config GRID range”的对话框。
对话框有2个主要按钮:“Choose Level Width”,“Choose from an Area”,他们的功能都是生成高度图。如果选择“Choose level width”, 将选择当前关卡真实大小作为网格返回;如果需要手工设定范围,就必须首先在区域编辑中编辑出此区域范围,然后在此对话框中选择此范围区域,并"Choose from an Area"即可。还有一个需要注意的,一个场景只允许设定一个网格范围,如果第一次网格范围大小有问题,只能在原有的基础上进行修改,不能在添加新的网格范围,因为刷怪信息,可走信息等都是以网格范围大小为基础的,具有唯一性,障碍格等信息是不能正确显示在不同的网格上。这一点是需要绝对注意的。
4.生成高度图:将生成场景高度图(注意是人物行走使用的高度图,所以需要去除人物行走面以上的地图物件,才能生成正确的高度图)。
选择“编辑”菜单下的子菜单“编辑NPC”后,“NPC” 菜单下的编辑选项处于可用状态,用来编辑关卡中的NPC。
1.添加NPC:在地图中弹出右键菜单,选择添加NPC,即可添加一个NPC。
2.NPC管理器:在NPC工具窗口中可以编辑此NPC的具体属性,编辑完成后要点击“应用修改”按钮,才能生效。
3.平移:拖放NPC坐标轴,可以移动NPC的位置。(编辑方法同编辑节点类似)。
4.缩放:拖动NPC坐标轴,可以缩放NPC的大小。
5.旋转:拖动NPC坐标轴,可以变换NPC的朝向。&br
这部分菜单内容作为美术部门的使用来说更多的是在布置场景的时候添加一个npc用来做为物件比例的参照物。
选择“编辑”菜单下的子菜单“编辑区域”后,“区域”下面的菜单生效,用来编辑一些矩形局域。这些区域主要起辅助作用,譬如用来设置网格范围,设置刷怪区域等。
1.选择“添加”,在地图中拖放鼠标左键,即可添加一个新的区域。
2.“编辑”状态下,可以用鼠标左键拖放区域的边缘或边角,以编辑区域范围。
选择“编辑”菜单下的子菜单“编辑路径”后,“路径”下面的菜单生效,用来编辑关卡中的路径。路径同区域一样,也是起辅助作用,可以设置NPC的行走路径,地图中的某些动态物件的运动路径。路径中含有n多的路点。中的路点显示为白色,并且显示出坐标轴。其他路点显示为黄色。拖动坐标轴可以移动路点位置。
“视图”菜单包含用于设置和控制视图的命令,包括地图网格、网格属性、地表、物体、NPC、路径、区域、恢复默认视角、视角旋转方式、背景颜色、网格线颜色。
“窗口”菜单包含用于设置和控制各种工具栏的命令。包括状态栏、文件工具栏、编辑工具栏、视图工具栏、控制工具栏、音效调节、渲染模式Solid | Line、Skin优化工具、模型优化设置、清除当前日志。
Skin优化工具:我们在shader编辑器里制作的skin可以在这里进行优化,生成两个文件:.skinb文件和.dds文件。其中,.skinb文件是对.skin,,.texmap和.texture文件的整合,.dds文件对应原来的.png图片格式。
“帮助”菜单显示了该编辑器的版本信息。
关卡编辑器中菜单栏的很多命令可由工具栏上的按钮来实现。通过工具栏可以快速访问关卡编辑器中很多常见任务的工具和对话框,只要包括文件工具栏、编辑工具栏、视图工具栏和控制工具栏。如图所示:
文件工具栏
与“文件”菜单的功能类似。依次为新建地图、载入地图(打开地图)、保存地图、另存为、关于(编辑器的版本信息)。
编辑工具栏
与“编辑”菜单的功能类似。依次为编辑节点、编辑网格、编辑区域、编辑NPC、编辑路径、撤消、重做。
点击按钮,所对应的工具栏就处于激活状态。
点击按钮,所对应的工具栏就处于激活状态。
点击按钮,所对应的工具栏就处于激活状态。
点击按钮,所对应的会出现对话框。
点击按钮,所对应的会出现对话框。
视图工具栏
与“视图”菜单的功能类似。依次为地图网格、网格属性、地表、NPC、区域、路径、背景颜色、网格线颜色、渲染模式Solid | Line(“窗口”菜单栏下的)、视角旋转方式。
控制工具栏
点击按钮,所对应的会出现对话框。主要有声音控制开关键、法线高光最高效果、HDR效果、模糊效果、景深效果等。
资源及属性窗口
关卡编辑器中所有的资源及对资源的修改在资源及属性窗口完成。其中包括资源、节点树、属性、区域、光雾和声音6个面板。通过右上角的左右箭头进行选择。
“资源”面板包含所有的关卡节点资源目录。
1.选取已有资源节点:选择所需节点拖入右面的场景窗口中(拖入之前,需要选择父节点,拖入的节点将放入父节点下面)。
2.添加节点资源:右击选择“添加节点资源”,这时会出现对一个对话框。
3.通过“File”后面的按钮,从文件中打开我们先前完成的各种模型、动画、地形等关卡编辑器能识别的文件,如.polygonsoup,.keyframe,.charsimple等格式。
4.添加、删除资源夹:右击选择“添加资源夹”或选中相应节点,之后右击选择“删除资源夹”即可。
5.保存资源目录:新建或修改了节点资源目录后,要及时进行保存。
添加一个节点(物体)后,节点树中会添加相应一项,其表现为一种父子关系。新建关卡后就会有一个默认的根节点,表示一个关卡,在其下面添加的节点就是关卡的一部分了。比如,可以添加一个地形,然后再在地形上添加房屋,树木,花草等等。这样,当地形发生移动的时候,地形上的房屋,树木,花草都会跟随其一起移动,保持相对位置不变。(一般来说,一个关卡会包含一个根节点,下面会有一个地形。地形下面包括所有物件如:水、树木、房屋、草、特效等)。
请注意节点的父子关系。
选定某个节点后,状态栏显示当前选择节点。在“节点树”面板,右键菜单有“删除此节点”,“节点属性”,“定位此节点”等菜单选项。
删除此节点:即删除当前选择的节点。
节点属性:编辑节点的具体属性。
定位此节点:视角转向此节点。
1.在“节点树面板”右键弹出菜单中选择“节点属性”,弹出一个对话框,其中是此节点的一些子属性节点。含有“Ntransform, Nbillboard, Nconstpos”字符串的,为位置变换属性的节点。
2.选择某个子节点后,点击“属性”按钮,面板转向“属性”面板,其中有节点的具体属性列表。
地形属性。节点属性。
显示“编辑区域”时的矩形局域的位置信息。
关卡的光影,雾的设置,视锥设置,地形光照图的生成等都在“光雾”的面板中调整。
“声音”面板用来编辑关卡中的声音。注意其音源位置和范围等参数设置。编辑后同样需要点击“应用”才能保存编辑结果,并使之有效。
建立地形,摆放场景物件、NPC,制作特效等操作的效果都在这里查看。
在场景窗口中配合鼠标和快捷键进行查看。
1.左键操作
在场景窗口中,可以使用鼠标左键选择节点(物体)。选择之后会显示节点的X、Y、Z坐标轴,将鼠标箭头移到坐标轴之上,点击鼠标左键并拖动鼠标,可以按选定坐标轴的正负方向平移节点。
使用鼠标左键移动物体的方向和不同角度的旋转。
2.中键操作
在场景窗口中,可以使用鼠标中键缩放视图,从而改变观察位置。
(图)使用鼠标右键缩放视图
3.右键操作
在场景窗口中,使用鼠标右键能够进行以下操作:
(1).在场景窗口任意位置单击鼠标右键并拖动鼠标,能够平移视图,即在与当前视图平面平行的方向移动视图。
(2).在场景窗口任意位置单击鼠标右键,会出现弹出菜单,其中包括的选项有添加NPC、删除NPC、取消当前选择的Node、节点属性、定位此节点。
(图)鼠标右键的弹出菜单
(3).按住Ctrl键,在场景窗口任意位置单击鼠标右键并拖动鼠标,能够进行弧形旋转。这种旋转方式使用视图中心作为旋转中心,如果对象靠近视图的边缘,则可能会旋转出视图。
(4).按住Shift键,在场景窗口任意位置单击鼠标右键并拖动鼠标,能够进行弧形旋转选定对象。这种旋转方式使用当前选择的中心作为旋转中心,当视图围绕其中心旋转时,选定对象将保持在视图中的同一位置上。
4、快捷键操作
关卡编辑器中除了能够使用Alt+字母的菜单快捷键之外,还有一些特殊的快捷键。
在场景编辑状态下按G键,可以隐藏当前场景查看雾和灯光设置的效果,返回场景编辑状态需再按一下G键。
(2).F3键
从节点树的第1个节点开始遍历并选择每一个节点,类似编程中使用F8进行单步调试。Ctrl +鼠标左键的弹出菜单中不能显示节点夹中的节点,可以使用F3进行遍历并选择。
状态栏中主要显示了鼠标箭头所在的网格与坐标信息、FPS刷新频率、Count和当前节点的名称。
特效由多种节点组合而成,控制运动和时间的动态类型节点(Ntransdyna), 图形表现的粒子系统,环状粒子系统,矩形面,环,条带,甚至是普通的静态模型,关键祯动画模型等等。组合成功的特效保存在一个组合节点里面(cluster)。
我们在场景中添加的节点,都在“节点树”面板中显示。查看节点的属性,可以通过两种方式:选择其中的一个节点,右击选择“节点属性”,选择节点的自身属性或者位置变换属性,点击确定,进入相应的属性面板;同样选择其中的一个节点后,点击面板上的属性,也可以进入属性面板。了解了节点的属性,我们就可以制作一些游戏特效。
Ntransdyna(动态节点)
节点除了本身属性以外,还有动态节点属性。与节点普通属性的区别:普通属性下粒子不能被移动;而动态节点属性下可以对粒子进行移动、缩放。这里以“Nparticlesys”的动态节点属性为例。
1.在“节点树”面板下选中刚才的“Nparticlesys”节点,右击选择“节点属性”。
2.选择Nparticlesys:[Ntransdyna](动态节点),打开动态节点属性面板。
3.“动态节点”主要属性:
Pause:暂停运动。拖入动态节点到场景中的时候,此节点只能出现在原点处。如果要 修改节点原始位置,需要暂停运动状态。暂停运动状态,设置Pause为1,此时可以设置matrix[Matrix44]里面具体属性,也可以通过拖动坐标轴的方法来移动此节点。
Reset: 重置。重置运动状态,主要用于调试运动参数产生的效果。
StartTime:开始时间。运动开始的时间,在开始时间之前,此节点是不可见且不运动的,到了开始时间的时候才可见并根据运动参数进行运动。
Duration:持续时间。运动的持续时间,设置为0表示一直运动,没有时间限制。如果超过了持续时间,此时运动结束,且变为不可见。
Scaling:缩放变化。分别是(x,y,z)方向的缩放参数。
Translation: 平移变化。分别是(x,y,z)方向平移速度。(譬如值为(1,1,0), 表示在x,y轴之间45度的方向平移,速度是
RotateAxis: 局部坐标轴,绕物体本身轴旋转。(1,0,0)表示绕x轴自转,(0,1,0)表绕y轴自转,(0,0,1)表示绕z轴自转。
RotSpeed:自转速度。和上面的自转轴向配套使用,单位是弧度/秒。如果RotateAxis设置为(0,1,0),RotSpeed设置为6.28, 则表示绕y轴自转,每秒转一圈(一圈 = 2Pi = 6.28)。
RotateAbsAxis: 世界坐标轴,绕场景中心轴旋转。
RotateAbsSpeed: 公转速度。
例如:将Pause设置为1,暂停运动,将节点移动开原点。设置RotateAbsAxis 为(0,0,1),RotateAbsSpeed为3.14。再设置Pause为0,开始运动。此时就可以看到在自转的同时,还绕z轴以每秒0.5圈的速度公转。
NeedTarget: 是否需要向一个目标运动。此时平移运动Translation方向将失去作用,运 动方向会变为朝向一个目标。(编辑器中的测试方法是:“节点”菜单中选择“添加运动测试辅助目标”, 在场景中添加一个辅助节点作为目标。然后再设置 NeedTarget为1,此时运动就会朝向辅助目标。)
TargetMovingDir:保证节点方向始终和运动方向同向。此值设置为1的时候,z轴负方向始终朝向运动方向(譬如在作飞行的箭这样的特效时候)。
“NShake”节点用来加强特效,本身不会有效果,需要与已有特效组合使用。
1.选中“所有节点”右击选择“添加节点资源”,打开一个已有的特效节点(.cluster格式)
2.再添加一个“NShake”节点,此时一共有两个节点。
3.选择“根结点”,要保存为组合节点,必须点选根结点,如果只选择其中某个节点,则只保存那一个节点。
4.选择“节点”菜单下的“保存当前节点为组合结点”,进行保存。
5.打开刚才保存的特效节点进行查看,可看到震动的效果。
6.“Nshake”节点主要属性:可以通过修改“StartTime”和“Duration”来调节节点震动的时间。
地形生成编辑器有比较严格的目录管理流程。
在地形命名文件夹下创建两个新文件夹,分别命名“terrainedit”和“terrain”。绘制的地形灰度图和文件菜单栏中的save和save as命令保存指定的文件夹都是“terrainedit”,用于在地形生成编辑器修改。Export命令指定导出的文件夹是“terrain”,用于在关卡编辑器中使用。使用文件菜单栏中的new命令时,需要把“terrainedit”文件夹中除了地形灰度图的其他文件删除,这是为了保证重新生成的文件不会有冲突。使用导出命令时要把“terrain”中的文件全部删除。
1、在EarthSculptor里根据地形要求绘制灰度图。
2、利用灰度图的颜色信息在地形编辑器里生成地形,此时地表上显示的是默认第一张选择的地表纹理。
3、通过不同地表纹理的叠加绘制丰富地形地貌。
先确定场景大小是513X513、或是等。一般场景513X513即可。在软件EarthSculptor.exe中绘制地形,在terrain参数中LOD必须40,Height为250。
每张用于生成地形高度的灰度图大小是2的n次方+1,地图大小为2的n次方。颜色模型是选择16位的灰度,背景颜色为白色,分辨率为72像素。1个像素在地形比例长和宽为1的时候表示1米,如果长和宽比例为2的时候,1个像素就代表2米。
将地形拖入编辑器后必须检查地形的3个轴向都为0,缩放比例都为1。只要是在地形需要摆放的物件都必须以地形节点作为父节点摆放。
摆放物件的时候善于使用节点组。比如在一棵树下需要一些小石头,几株植物,我们在摆放的时候以这棵树为父节点,石头和植物作为子节点放在下面,这样我们在同一个场景中制作同样的效果只需要拖动复制这棵树的节点,同时也复制了作为子节点的石头和植物。
制作无缝地图的时候,我们在相邻的的两张地图接缝处的地形一般制作成曲折的小路,避免在地图的边缘一览无余的观察到下一章地图,在两张地图接缝处的物件也尽量相同,同时使用通道(PORTAL)技术。其基本原理是只渲染通过通道(可以理解成'门')可以看得到的物体,被墙或建筑遮挡住看不到的物体不进行渲染,这样就提高了运行效率。在同一张地图中曲折的地形和可以起到阻挡视线作用的建筑都可以使用类似的方法来提高效率。
(注意:在使用大地形时,因为大地形在运行时防止接缝,需要动态合并,所以不能采用此技巧,大地形的地形之间和地块之间没有任何区别)
地表要保持平缓,避免突然的凹凸点,否则,影响游戏的流畅性,角色会卡在一个点上。
大地形可以删除某个地块,制作特定不需要显示该地块的场景区域,以提高渲染效率和渲染错误(譬如山洞入口处的patch)。
如果场景以建筑为主,极少数地方显示地形,那么这种场景最好用建模方式创建。划分多块建模区域,每块之间以门洞方式(Portal技术)相连,以提高渲染效率。
首先可以在3DMAX中用BOX的形式大致制定所想要的场景比例,大小和区域。
确定玩家可行动或者可行走的区域,如果地基非常的大建议以区域的形式拆分开来。每个区域都以节点的形式组
合,最后整个地基以每个区域的节点组和成组合节点。
之后就可以在3DMAX中开始细化模型。也可以刚开始确定的区域形式来细化,最后组合起来。
最后整个场景细化都需要在编辑器内完成。包括:特效、据点建筑模型、植被、水、山体模型等。
(注意:打光场景必须所有的物件都是在3DMAX中去完成。而室外场景大部分模型都是在编辑器内去合成。)
在3Dmax中开始制作模型时,必须先把场景单位设置好单位。
从3Dmax中导出的pologonsoup和keyframe格式的文件,整合到关卡编辑器中时,不要同时进行移动和缩放操作,否则摄像机不会与其发生碰撞。在放置分块场景的时候更需要注意,甚至不要进行移动和缩放。
上材质的时候最好关闭显示网格,这样就不容易出现材质硬边。
只有地表才能刷摆动的草polygonsoup,摆动草的面数小于40个三角面。不单单polygonsoup能大面积刷,cluster也是可以的。
在CullDistance后面参数做调整100参数就是100米多少就是多少米。
在场景物件摆放时,将一块区域的模型以父子关系连接在一起,比如树和树下的灌木,草,可以以树为父结点将灌木和草以子节点连接上去。第一种的效率比较高,在引擎读入的时候就以一个模型载入。
模型polygonsoup、贴图、贴图skin优化错误。在artist中模型导出polygonsoup不需要优化,但在client里必须优化切勿忘记。打开编辑器窗口菜单下skin优化工具点击,然后选择需要优化的polygonsoup路径。贴图格式一般不超过,client中贴图需要比原来贴图尺寸缩小1倍,固有贴图和法线大小一样,高光贴图比固有贴图和法线都要再小1倍。
如果优化完polygonsoup贴图显示错乱,就是指定多余模型上没有用到的材质,需要在artist中认真检查一遍再做优化。优化完游戏中检查确认无误再提交。
贴图格式全部统一DDS,还有些贴图是带通道的导出DDS的时候需要选DXT3 ARGB (Explicit Alpha)的MIPMAPS。贴图skin优化,在目前一些项目只有些特殊的贴图skin需要优化成skinb,一般贴图都不用优化。比如:水流动的UV动画贴图skin必须要优化成skinb,不然游戏中无法看见。
在点击打开3MaxUtility插件,下方会出现New3D SkinSlot编辑及导出工具。就是图中右侧红框框内,模型就是在哪里指定材质。指定材质时最好是把同一种材质的模型Attach在一起指定,不要用ID去指定,少量的材质MAX插件还不太会出错。如果材质达到30张以上的话,指定模型MAX很容易直接导致崩溃。还有就是在添加材质指定的时候,难免会少添加或者是多添加材质了。ID指定很容易因为少指定或者是多制定材质后出现贴图错乱或者是不同种的贴图指定不上的现象。所以最好的方法就是同一种材质模型全部Attach的一起指定,这样虽然是比较麻烦但是最保险和最不容易出错。
刚拿到模型指定材质的时候不要急忙就开始指定,需要按照项目要求来对模型进行拆分指定。如图:
看具体模型和具体项目来拆分模型:
2.玻璃材质或者是窗户等,可以单独拆分出来添加折射和反射属性。在SKIN2里面添加createSkin2_NormalMap_Reflection_Gloss_CustomSpecular_Env。当然相对应玻璃或者是窗户的高光材质也需要调整。
3.一般玩家可行走路面需要拆分出来添加映射属性Projectable为1。
4.模型如果有广告牌或者是电子版等等,单独拆分出来。看具体模型来,有些是电子屏立体成像的可以取消碰撞。有些是电子屏幕就需要添加碰撞属性。在这些基础上还可以添加一些特效等。
在关卡编辑器中,shift拖动摆放的物件容易把物件拖到场景以外的某处。如图:
白色框所有场景在内的物件全部包括进去的一个范围。左图场景内物件基本都在地表场景附近以内的范围,而右图很明显有某个物件已经在场景外很远的地方。
解决方法:1.可以找程序搜索出有问题的场景中,最高坐标点或者是最低坐标点,然后去关卡编辑器内找出改物件删除或者调整到场景范围内。2.打开关卡编辑器在视图—》3D视图类型—》左视图或者右视图。 在场景那个文件夹下面,一个个去选择物件,每个物件都有白色框,如发现白色框不在场景范围内,很有可能就是哪个摆放到很远处的某物件了。选择到然后删除或者是调整到场景范围内即可。
SKIN2里面有10张或者20张,甚至更多贴图指定的时候,需要非常仔细的去操作,越多越容易出错。
在上材质编辑器(n3_editorterrain.exe)中打开显示网格,刷材质很容易有硬边。如图:
显示网格时刷地表材质非常容易产生这样的问题,取消显示网格刷地表材质可以尽少的避免此问题。
在场景编辑器中如发现有大块正方地表不显示。如图:
这类问题是在n3_editorterrain.exe编辑器中,1块地表内有4种(不含4种)以上的地表材质所造成的。在刷材质编辑器中时常点上方的黄色叹号显示看看有没有红色格子出现。如有马上修复掉,不然导出就会是下图所出现的情况。
同屏显示的游戏场景模型数量控制在10W面以下,越少越好。(这个参数主要针对带法线和高光的次世代游戏,普通游戏数量减半)
游戏中人物在场景内最高效果静止状态下FPS帧率在40帧以上。

我要回帖

更多关于 java map 遍历 的文章

 

随机推荐