`
nanjingjiangbiao_T
  • 浏览: 2739310 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【仙剑五前传】中的一点场景渲染问题

 
阅读更多

(注:本文由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~)

两周时间没来CSDN更新博客,业余时间主要花在新上市的《仙剑奇侠传五-前传》上了~ 不可否认,仙剑系列作为国产单机游戏的第一品牌,当之无愧。尽管当年的仙剑五让很多人大为失望,不过相信通过这次的五前,相信大部分玩家会以新的眼光来看待仙剑五。确实,没有五前故事的铺垫,仙五当中太多地方让人一头雾水,也提不起兴趣。因此,真是打心眼里佩服北软的编剧们,不仅仅把五前这一代故事讲得无比精彩,也在一定程度上挽救了仙五。如果把仙五前传与仙五联系在一起的话,五代的仙剑也可以称得上仙剑历史上的一个里程碑了。

好吧,具体游戏细节就不说了,喜欢仙剑、玩过仙五前传的相信都深有体会。不喜欢的可以直接无视上面的话,毕竟这里不是游戏论坛。。。。

这里想讨论一下个人在体验仙剑五前传过程中遇到的场景渲染技术上的一些问题。当然,历代仙剑最大的卖点在于其感人的剧情、动听的音乐,而不是其引擎有多先进、画面有多逼真。但是出于对3D技术的兴趣,在二周目困难模式过程当中,也仔细留意了一下画面方面的细节,也发现了游戏在很多方面做得不够完美,大致列出以下几个方面(仅仅是个人的主观想法,如有不同意见,欢迎提出、指出):

1. 法线贴图(Nomal Mapping)

在仙剑五的宣传视频中,北软就在大肆地宣传其引擎方面的改进,尽管RenderWare在现在看来已经比较落后,但在北软的精心改进、优化下,仙剑五和前传能有这样的画面已经很难得了,甚至直逼采用了更先进引擎的古剑奇谭。在诸多宣传点当中,就包括了”法线贴图“的引入。法线贴图的原理很简单,纹理除了通常情况下认为的贴在模型表面的图片之外,还有多种其他用途,法线贴图就是其中之一。在这种贴图中,保存的并不是RGBA颜色值,而是法线。法线贴图的引入,大大提高了模型在像素级别上的表面凹凸细节,从而使场景更加逼真。一个模型表面可以使用多层纹理,除了表面颜色的纹理,还可以同时有法线贴图、光照图等等。

(关于Normal Mapping,在后面的D3D11系列博客中我会详细讨论,欢迎关注。)

但是,在玩游戏的过程,并没有感受到法线贴图带来的明显变化。甚至在很多地方,几乎可以直接断定根本没采用法线贴图。

比下是仙五前传中”丹枫谷“场景的一张截图:

在左边的图片中,当镜头旋转到一定角度时,瑕所观察的岩石壁上竟然出现了如此强烈的全反射!(瑕是谁?仙五前传的女一号。。。。)

在右图的视角上,全反射消失。很明显,从右图中岩石壁上的纹理情况来看,这山的表面显然应该是很粗糙的,这也是该层的纹理图表达出来的信息吧。因此这与左边的全反射就相互矛盾了,说明这里仅仅是在山的模型表面贴上了一张图片,肯定没有使用到法线贴图。模型由于顶点数量的限制,使得表面比较“光滑”,从而造成全反射的效果。

再看两张“雪石路”的截图:

这里对比两个不同的视角,依然突显左边强烈的全反射效果,姑且认为没使用法线贴图吧。

此外还有一点小奇怪,根据湖面、地面的全反射、以及镜头的角度,光线应该是从瑕对面斜射过来的。但是看瑕在地面上留下的影子,在正下方,按理说光线应该是从正上面射下,但是垂直观察地面确没有全反射。个人觉得,是不是有点矛盾?

2. 湖面反射效果

以下两张依然是“丹枫谷”的截图,同一个位置,不同的视角。根据瑕的观察方向,看下湖中靠近对岸的倒影:

在旋转镜头到一定角度时,湖中的合影会有从左图到右图的突变。可以肯定湖中的倒影是事先做好的静态图,而不是实时地演算出来的。但是为何会有明显的突变,不清楚。

3. Billboard技术、2D贴图模拟3D效果的过分使用

还是丹枫谷的两张截图, 这次注意瑕身边的黄色的草:

单从左图看,草还是很逼真的,看不出有什么异样。但是当镜头旋转到右图中的角度时,却大为不同。看出来了吧? 其实这里的草全部是用多个2D平面贴图(这里使用了3个)旋转到不同的角度来模拟3D效果的。熟悉3D技术的应该很明白,这种技术在3D渲染中很常见,使用2D图来模拟3D效果,可以大大地优化场景的渲染。但是,使用这种技术的一个很重要的前提,即要求避免从上往下的俯视。因为这种情况下,使用2D贴图的”欺骗“手段立刻就穿帮了。

类似的还有Billboard技术,即通过使用一张2D贴图,在任意时刻使其总是正对着的镜头,从而给人以3D的错觉。因此也需要避免俯视的现象。

一般来讲,这类技术大多在距离镜头比较远的地方使用,因为此时对细节等级(LOD)的要求很低,即使使用2D图来模拟3D,一般也识别不出来。

但是在这个地方,一方面草离得很近,仔细观察还是可以看出来的;另一方面,草长在地上,肯定是被俯视的嘛。。这样让人一眼就看出其真实情况了,正如右图中所示。实际上,在仙剑五、仙五前传中,所有的树都是使用billboard技术渲染出来的。不信的话可以走到任意一棵树旁边,慢慢旋转镜头,会发现树其实是在相应地旋转。

4. 镜头的控制

如下两截图来自游戏中整个故事开始的地方:明州。

左边是一张正常的图,在右边截图中,当镜头接近时,竟然直接进入马身体里面去了。。。可见,在个别地方,游戏的镜头控制还是存在一点点的缺陷。对于熟悉3D程序的人来说,这种现象再常见不过了,无非是镜头距离模型太近,位于近平面内的物体被剪裁掉而已。但站在玩家的角度来看,出现这种现象,是不是会有点影响游戏的代入感。。。。

此外,还有一点是,有这张图为证,是不是说明游戏还有进一步优化的余地? 其实只要把模型的外表面渲染出来就行了,内表面渲染没有任何意义。但根据图中所示,我们可以看到马的内部,显然内、外表面都渲染了一遍。这马有这种情况,其他模型基本上也应该都是这种的吧。

5. 阴影

再看两张折剑山庄的截图,注意男一主角”夏侯瑾轩“右边的守卫正前方的阴影:

对比很容易发现,左图中建筑的阴影比右图中同样的位置少了一大块。。。当人物在该位置附近移动时,左、右两图中的阴影会来回地突变。。。。同一个建筑的阴影,怎么会因为人物的移动而产生突变?根据我的猜测,这里面阴影的渲染不大可能是实时演算出来的吧(如果是实时演算,那岂不是算法有问题了。。。),说不定是事先制作好的阴影图。但为何会突变就不清楚了。。。

还有以下图片,瑾轩站在同一个位置上:

同样的位置,不同的角度,右图中当镜头旋转到当前角度时,会发现阴影区的地面出前全反射效果。可这是在阴影区啊,没有光线照射,为什么会出现一定角度下的全反射效果?不解。

以上这些只是笔者在体验仙剑五前传过程中发现的一些略有缺陷的地方,顺便发表下看法。但瑕不掩瑜,说了这么多,并不是在抱怨游戏画面有多差,实际上,近几代仙剑的画面上的进步已经非常大了,足见研发商们的诚意,只是在一些技术细节方面还不太完美,还有很大的提升空间。当然,对于喜欢国产单机游戏的玩家来说,画面肯定不是最重要的,剧情才是王道。

最后放出几张实际游戏截图:

仙竹林,一样的地图,完全不一样的迷宫体验

龙溟与凌波

谢大叔兵解

小兰表示强烈不满。。。。

天真的结萝

悲剧的姜承(姜世离)

好萌的瑕

。。。。。。

你猜,谁来了?

普通模式,一周目通关

分享到:
评论

相关推荐

    仙剑奇侠传5前传攻略

    仙剑奇侠传5前传攻略,内容详细,如有其他需求请联系我。

    C#使用文件读写操作实现仙剑五前传称号存档修改

    C#使用文件读写操作实现仙剑五前传称号存档修改

    《仙剑奇侠传五前传》图文攻略超级详细.doc

    "《仙剑奇侠传五前传》图文攻略" 《仙剑奇侠传五前传》图文攻略是非常详细的游戏攻略,涵盖了游戏的各个方面,包括人物介绍、任务攻略、技能树、装备介绍、游戏机制等等。本文将对游戏的主要内容进行详细的介绍和...

    98仙剑源码,已编译好,带数据文件,完美运行

    98仙剑源码中的SDL运用,意味着游戏可能基于C或C++语言编写,利用SDL库实现了游戏的图形渲染、音效处理以及用户输入等关键功能。 源码的编译完成并带有数据文件,这意味着我们可以直接运行游戏,无需额外的构建步骤...

    Unity3d 《新仙剑奇侠传》游戏源码

    在《新仙剑奇侠传》中,开发者可能利用了Unity3D的场景管理、物理引擎、光照系统、动画系统等核心功能。 2. **C#脚本**:Unity3D的主要编程语言是C#,用于控制游戏逻辑、物体行为、交互事件等。源码中的C#脚本可能...

    仙剑奇侠传1源码

    在《仙剑奇侠传1》的源码中,我们可以看到如何使用C语言进行内存管理、图形渲染、事件处理等核心功能的实现。 "SDLPAL"是这个项目的关键标签,它代表Simple DirectMedia Layer (SDL) 的一个扩展,用于在Windows上...

    仙剑奇侠传五脚本script破解

    在《仙剑奇侠传五》中,原始的脚本可能以加密或混淆形式存在,对于非专业开发者来说,它们可能显示为乱码,难以理解。 在本压缩包中,提供的是已经经过翻译处理的《仙剑奇侠传五》脚本,这为游戏爱好者和编程爱好者...

    仙剑奇侠传游戏

    此外,Java的并发处理能力也能在游戏中发挥作用,特别是在多线程环境下处理游戏逻辑和渲染,保证游戏流畅运行。 在《仙剑奇侠传》的开发中,游戏引擎和框架的选择也很关键。虽然Java没有像Unity或Unreal Engine那样...

    3dmax仙剑人物模型

    在“仙剑人物模型”中,艺术家可能使用这些引擎优化渲染设置,确保模型在游戏运行时既能保持高性能,又能呈现高画质。 总结来说,“3D Max仙剑人物模型”展示了3D Max在游戏开发中的强大能力,包括建模、纹理贴图、...

    java版《仙剑奇侠传》代码

    在这个项目中,开发者可能使用了Graphics2D对象进行场景绘制,以及Image类来加载和显示游戏中的图片资源。 事件处理是游戏与玩家互动的关键。Java的AWT和Swing库提供了丰富的事件监听机制,可以处理键盘、鼠标等...

    java仙剑奇侠传游戏

    《Java仙剑奇侠传游戏》是一款基于Java编程语言开发的简易版电子游戏,它将中国传统文化中的经典武侠故事——《仙剑奇侠传》融入到编程世界中,为玩家提供了一种独特的交互体验。这款游戏中包含了丰富的图像资源,...

    仿仙剑 DX rpg

    在《仿仙剑 DX RPG》中,开发者可能使用了DirectX(DX)库,这是一个由微软提供的API集合,广泛用于Windows平台上的游戏和图形应用程序开发。DirectX包含多个组件,如Direct3D用于3D图形渲染,DirectInput处理游戏...

    基于html5的仙剑奇侠传.zip

    在《仙剑奇侠传》这样的游戏中,背景音乐、角色对话、战斗音效的播放与控制都可能借助这一API来完成。 四、游戏设计与实现 《仙剑奇侠传》是一款深受玩家喜爱的角色扮演游戏,其HTML5版本可能包含了剧情推进、角色...

    电脑设置鼠标指针更换仙剑奇侠传四鼠标指针

    本文将详细讲解如何在Windows系统中更改鼠标指针,以“仙剑奇侠传四”为主题的鼠标指针为例,为仙剑迷们提供一个独特的电脑体验。 首先,我们需要理解鼠标指针是什么。鼠标指针是操作系统中一个重要的视觉元素,它...

    95仙剑源代码(网友制作)

    8. **游戏引擎原理**:通过分析源码,可以了解到早期游戏引擎的基本构造,包括如何处理输入、渲染场景、处理游戏逻辑等。 9. **游戏设计思想**:源代码不仅反映了技术实现,还可能揭示游戏设计者在创建游戏时的思考...

    winform小游戏—仙剑纸牌(源码)

    GDI+(Graphics Device Interface Plus)是Windows平台上的一种图形绘制引擎,用于在Windows应用程序中进行图形渲染。在“仙剑纸牌”中,GDI+被用来绘制卡片的图形,包括卡片的形状、边框、背景以及牌面的数字或花色...

    一个用Python实现的仙剑小游戏

    7. **数据结构与算法**:在游戏设计中,数据结构(如列表、字典、队列)用于存储游戏状态和规则,而算法(如搜索、路径规划)则用于解决游戏中的问题,如NPC的行为决策、迷宫导航等。 8. **脚本和剧情**:游戏的...

    Java仙剑奇侠传源代码

    《Java仙剑奇侠传源代码》是一款基于Java J2ME平台开发的手机游戏,它再现了经典单机游戏《仙剑奇侠传》的世界观和游戏机制。J2ME,全称为Java Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备...

    Unity新仙剑奇侠传.zip

    总的来说,《Unity新仙剑奇侠传》的开发过程中涵盖了Unity引擎的多个方面,从资源创建、场景构建、逻辑编程到性能优化,都体现了Unity在游戏开发中的强大功能和灵活性。通过这样的技术实现,游戏得以呈现出精美的...

    仙剑手游完整的源代码

    尽管获取源代码对于开发者来说有着诸多益处,但在实际操作过程中也需要注意一些问题。比如,要确保自己使用的源代码是合法的,尊重原作者的知识产权;同时也要注意保护个人信息安全,避免在开发过程中泄露敏感信息。...

Global site tag (gtag.js) - Google Analytics