套利胡子亏损:转自66RPG:NeoAxis教程 第一篇,从头开始

来源:百度文库 编辑:中财网 时间:2024/04/29 20:43:14
由于沉迷龙之谷,耽搁了这个教程的进度,不好意思啦~~
从头开始介绍NeoAxis吧
NeoAxis是一个3D游戏框架,他包含了3D渲染,物理,粒子,声音,GUI等一切你需要的库,以及比较完整的编辑工具
在开始NeoAxis的学习前,你需要做一些事情

1。安装最新版本的Dx9.0c
如果你不确定机器上是不是最新版的,可以去微软下载Dx9最终用户运行时
传送门:DirectX End-User Runtime Web Installer
2。安装.Net Framework2.0,我相信大部分人的机器上都有装,不过如果有人没有的话也可以去微软下载
传送门:.NET Framework 2.0
3。好了,你可以下载和安装NeoAxis了
传送门:NeoAxis
4。如果你需要学习进一步的开发,我是说到代码级的开发而不是光点点工具玩玩的话,就必须安装C#的开发环境了。这个东西我就不提供开发环境了,推荐使用Microsoft Visual Studio2008,当然如果你有2005或者2010的话也没问题。这个比较大,大家可以慢慢下载,一时半会儿用不上。

准备工作到此结束,1-3是必须的,当你完成了1-3步后,请继续看下去

--------------------------------------------------------------------------------------------------------------------------------

安装完NeoAxis,让我们打开目录看一下里面的东西
API Reference是他的API文档,不过没有看的价值,因为人家压根没写完,里面就只有一堆函数名...
比较重要的东西是Resource Editor和Map Editor,他是编辑的核心工具,也是前期初级教学的主要内容
另外你现在可以运行一下Demo.exe,看一下他提供的一些Demo,效果挺棒的。如果你跑不了,就说明你的机器悲剧了


下面,我们瞎做一个小Demo玩吧
打开Map Editor,新建一张地图
第一步,我们给黑漆漆的世界增加一个天空体。在右侧的Entity Types中找到BlueDaySky并选中,然后再黑色的地方点击一下,是不是看到一个半球形的天空体了?

名词解释:天空体
天空体是大部分3D游戏的一个基础。因为3D世界是有空间的,为了不让人看到黑色的区域,所以就把Camera包围在一个天空体中。这样最坏的情况玩家也能看到蓝天白云。
天空体一般有几种形式构成,比如我们现在使用的是半球。还有一些做法是使用盒子,也就是一个六面体。但是其实盒子的底面是基本看不到的(因为我们有地面),所以也有使用5面体来做天空盒的。


加完天空就要加大地了,我们在Types-Base中找到HeightmapTerrain并选中,点击添加看到绿油油的草地了不?这就是基础的高度图地面
名词解释:高度图
在很多有室外景的3D游戏中普遍使用高度图技术作为地形基础。高度图其实就是一张灰度图,用灰度图中每个像素点的灰度值来表示地面上每个点的实际高度,然后经过渲染变成一个高低起伏的地形。

下面我们可以开始编辑地形了,在上面MapEntities中双击HeightmapTerrain,在Properties窗口中就会看到Edit按钮,按下去吧,就会出现一个小的编辑窗。
看到窗口里Tool中的下拉窗,Raise是抬高底面,Lower是降低,其他我就不罗嗦了,自己试试就知道是啥了。下面的Shape是笔刷的形状,Radius是作用半径和影响半径,Strength是调整强度。
你选择Tool中的Paint选项时,就意味着是给底面刷上颜色。现在你看到我们有Base和second两种Layers,也就是可以刷上这两种颜色,尝试着刷一下~~
下面我们看看如何添加自己定义的底面颜色。先关掉edit的编辑窗把,暂时用不到了。在HeightmapTerrain的属性页里,找到Layers这项,按“...”点开窗口,看到了刚才我们使用的Base和secondlayer了吧,点击添加增加一个layer。然后在属性中添加BaseMap,DetailMap和NormalMap。由于时间关系我直接添加了BaseMap:Maps\TankDemo\Resources\Terrain\Rock_Diffuse.dds和NoramlMap:Maps\TankDemo\Resources\Terrain\Rock_Normal.dds,DetailMap留空。
名词解释:BaseMap,DetailMap和NormalMap
BaseMap是你需要的基色,也就是底色。如果你没有特殊需求的话,添加这个就ok了
DetailMap是细节图,是覆盖在BaseMap上的一层细节纹理
NormalMap可能比较复杂,他是一种利用Shader技术根据法相图重新计算纹理的光照强度,使贴图即使没有很多的面也可以看起来凹凸不平的一门技术,以丰富纹理的细节

确定后再点下Edit,看看是不是已经有了刚才加的东西?

光有底面不好看,我们加一片海吧
找到Types.Special中的WaterPlane,点击添加。看到海了,可是颜色不对,好像和底面重叠了?那是因为底面和海的高度都是0,所以渲染顺序有问题。我们把海抬高一点点吧,双击选中WaterPlane,在属性中找到Position,把高度设为0.5。需要注意的是,NeoAxis的坐标轴是Z轴向上的,所以你需要把z值填喂0.5即可
同时需要设置一个物理高度,把属性中的PhysicsHeight填个1吧
呵呵,下面你可以玩上一会儿了,我也自己画了张,如图


现在怎么样?是不是有点样子了?我们进去跑一跑吧,要运行游戏,你需要添加一个出生点
在Special中找到SpawnPoint,选中后就可以在地图某个地方放上一个黄色小旗子,这就是角色出生的地方了
现在你可以点击上面的箭头运行游戏了,进去逛逛吧
ps,水里面也可以游泳哦,倒退着游可以看到水花

然后你觉得奇怪么?底面颜色黑乎乎的,其实是因为我们场景上还没有光源!
找到Base.Light,点击添加一个。怎么是锥形灯呢?我们需要的应该是一个平行光源(类似太阳光),双击你添加的Light,在属性中找到LightType,改成Directional,然后在Rotation中把y改为300,让光源有一个倾角。
名词解释:Light
对于3D游戏,光源的计算是非常重要的。他同时影响模型的受光和阴影两大要素,也就是影响到游戏画面效果最重要的因素。不过,光源越多,程序的计算量就越大,所以一般我们不赞成同一区域有3个以上的光源影响


光有光源是不够的,我们还需要烘焙一下Lightmap,下一步,添加一个Base.StaticLightingManager,然后选中他,点击Calculater,发现显示光源数为0,原来刚才添加的Light没有开启静态光支持。返回选中刚才的Light,把AllowStaticLighting开启。再次选中StaticLightingManager,你可以点Start开始烘培了。烘培速度有点慢,你可以喝杯茶休息一下。
烘培结束后,点击运行看看,是不是亮了呢?
名词解释:LightMap
LightMap是很多3D游戏都会采用的一门阴影技术。实际上大部分3D游戏的阴影都会分为动态阴影和静态阴影。动态阴影是实时生成的,但是计算量巨大,很影响效率,一般只有运动的物体才会采用这种阴影,比如移动的人物和车辆等。其他静态的物体,使用的都是LightMap,也就是在地面上贴上一张预先渲染好的图。这样在实际运行中就不需要去动态计算诸如建筑,树木这些不会动的物体的阴影了,大大节省效率