一个地牢场景

一步步教你使用觉醒3D

一个地牢场景

帖子awakening3d » 2010年 12月 18日 11:50

  在这个教程里,我们将利用 Awakening ( 觉醒3D创作工具 ) 做一个地牢场景。最终效果如下:

  图片

  点这儿下载示例场景
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

I. 建模

帖子awakening3d » 2010年 12月 18日 14:08

  有关建筑的场景,建模软件首推Google Sketchup (从未有过如此直观易用的建模方式)。如果是新接触这个软件,建议先花点时间看一下它的视频教程,磨刀不误砍柴工。

  另外建议大家习惯使用英文界面的软件,因为这样术语统一,而且关键是键盘输入就是字母为基础的,快捷键什么的都方便。比如在3dsmax里找一个修改器如果用中文版只能一个个寻,而用英文版只要打个名称开头的字母,马上定位了。所以在3D相关创作里使用英文界面软件会大幅提高效率。

  好了,让我们启动Sketchup(教程里用的是Google Sketchup Pro 6.0),然后先选择菜单 Windows > Model Info,在弹出的对话框里找到关于Units的选项,设置如下:

图片

  然后建立一个如下的模型:

图片
不明白可以看示例场景。注意每级阶梯高度20cm,这是Awakening引擎里定的,引擎物理系统以厘米为单位,缺省遇到小于 21cm 的阶梯可以自动爬坡。

  在sketchup里建好模型就可以导出了,选择菜单 File > Export > 3D Model...,在弹出的对话框里,Export type 选 3DS (*.3ds),然后点Options...,设置如下:

图片

  点OK输出到 “地牢.3ds” 文件。

  如果场景只是使用老的 lightmap 光照方法,那么在 Awakening 里就可以导入这个3ds文件直接用了。但在这个地牢场景我们要用 dot3 bump 光照,那还要先导入 3dsmax 进行表面细分:

  首先,在 Awakening 安装目录下的 otherplugins 文件夹下找到相应的插件放到 3dsmax 的 plugins 目录下(教程使用 3dsmax8,相应的插件就是 max8triexp.dle 和 max8aniexp.dle,另外 max7 是和 max6 的插件通用的)。
  然后,启动 3dsmax,先选择菜单 Customize > Units Setup...,在弹出的对话框里,点 System Unit Setup,设置 1 Unit = 1.0 Centimeters 。再选择菜单 File > Import...,在弹出的对话框里,“文件类型”选择3D Studio Mesh,点“打开”,按如下方式导入模型:

图片

  导入后,选择所有mesh,先加一个 Normal 修改器把面反转一下。结果如下:

图片

  再加一个Subdivide修改器,结果如下:

图片

  好了,现在可以选择菜单 File > Export... ,然后以 winds3d tri file (*.tri) 类型导出到 Awakening 的自有模型格式文件 “地牢.tri”。

  建模工作就完成了!
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

II. Lightmap

帖子awakening3d » 2010年 12月 19日 01:45

  现在让我们启动Awakening,选择菜单 File > Load Mesh...,装入“地牢.tri”。这个命令会装载模型并转化成 Surfaces。如果以后需要追加模型到场景,就选择 Append Mesh...。
  成功加载模型后,选择门口的两个 Surface,在属性面板上勾选“White Lightmap”,然后选择菜单 Edit > Calculate Light Maps,你应该看到如下结果:

图片
  
  现在场景中并没有灯,所以光照图是黑色的。计算光照图同时会生成 Surface 的 uv 向量,这个有时贴图会用到。门口两个 Surface 设成全白光照图,在 Radiosity 计算时相当于区域光源。把Viewport的背景色设成黑色,然后在 Light Map Options 里设 Radiosity 的 Exposure coefficient (曝光系数) 为 0.5,在菜单里,先选择 Select > Select None(不然只针对选择的 Surface 计算),再选择 Edit > Radiosity 进行第一个 pass 的辐射度计算,然后把曝光系数减半,继续用 Edit > Radiosity 命令计算,直到光照感觉好为止。一般来说,使用 较小的曝光指数+多pass计算 效果会好一些;但为了节省时间,我们常常在第一,二个pass使用较大的曝光指数,以后再减小。具体方法配置可以根据经验调整。以下是4个pass的结果:

图片
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

III. 贴图

帖子awakening3d » 2010年 12月 19日 11:36

(注意:在最新beta3版本里,贴图顺序有变,decal map在第一层,normal map在第二层。)

   在Awakening的Texture浏览窗口中点右键,使用 Add Texture 命令,加载示例场景中 Textures 下的 “rockwall_normal.tga”。这是一个 normal map,并且其 alpha 通道是 height map。在Awakening中,使用 dot3 bump 光照,需要 decal map + normal map + height map,如图:

图片

其中 normal map 和 height map 一起存在一张tga里,对于大图,也可用 DXT5 压缩格式。

  我们先贴图:选择所有 surfaces ,然后在 Texture 窗口里点一下 “rockwall_normal.tga” 这张图,再点一下 uv 工具条(图片)的 Tile 。这样就把这张纹理指定给所有 surfaces 了(注意:在最新beta3版本里,这里应该使用rockwall.tga)。 在 Awakening 里,大部分可显示的对象都有一个基本的 texture id,我们刚才做的就是给所有 surfaces 的 texture id 赋值。这个 texture id 是独立于 material 的,它将覆盖 material 中的第一个纹理。 可能不是很容易明白,举个例子:比如我们场景中有好多木头,它们的材质属性都是差不多的,这样我们用一个 wood material 指定给它们。可是木头的纹理有密有疏,这样就需要不同的贴图去表现。我们就可以给不同的木头指定不同的 texture id,但是它们可以共用一个 material。回到刚才的步骤,给 surfaces 指定贴图后,我们可以按 Shift + T 改变 Texture Mode 去查看,可以看到斜坡上纹理不正常:

图片

我们先选择这个斜坡,然后点下 uv toolbar 的 Align Plane 按钮,再点一下 Tile 就 ok 了。
Surface 上的纹理坐标也可通过主工具条上的 Move/Rotate/Scale 来调整。大多数命令都可同时配合 Shift、Ctrl、Alt,具体看帮助文档里的 “Keyboard Shortcuts”。
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

IV.材质

帖子awakening3d » 2010年 12月 20日 13:23

  让我们给难看的墙面增加点现实感。在 Awakening 的 Material 面板里点一下 New 按钮新建一个 Material(材质),命名为“rockwall”。每个材质具有 基本属性、贴图、Shader、TexturePlay(一系列轮换贴图)、动态阴影相关 等属性。前面说了,使用 dot3 bump 光照需要 decal map 和 normal map,我们先在 Texture 面板里加入 rockwall.tga 作为 decal map。然后点一下该材质的第一个 Texture 按钮,选择 normal map;第二个 Texture 选择 decal map;第三个 Texture 选择 Lightmap(注意:在最新beta3版本里,normal map和decal map位置要对换一下)。再点一下 D3D Effect 组下的长按钮,选择 effects\parallax_mapping\parallaxLM2x.fx 做为 shader。这样这个墙面材质就定义完成了。选择所有 surfaces ,在 Surface 面板里勾选 Bump; 然后在 Material 面板里选择刚才创建的 “rockwall”,再点一下 Assign 按钮赋给选择的对象。漆黑一片?那是因为场景中没有灯。点一下 Creation Toolbar 图片上的灯泡图标,在场景中点一下就可以创建一个 Light( 灯)了。现在亮了吧,好像还少点什么,对了,还没打开高光。在 “rockwall” 的 Basic Properties 里勾选 Specular Enable,再把 Power 调到一个合适的值,这样墙面的立体感就出来了。
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

V. 灯光

帖子awakening3d » 2010年 12月 21日 10:31

Awakening里的灯有静态灯和动态灯之分,通过 Light 面板上的 Dynamic 属性来标识。各种象lightmap等预计算是忽略动态灯的。并且,在像素光照 (pixel lighting, dot3 bump也是一种像素光照) 里,动态灯在性能上要比静态灯差。一般不需要运动的灯我们都可以设成静态灯。在这个场景里,我们在两端门口附近设两盏静态灯,然后在转角处设一盏动态灯,把 light 的 Range 调到 500 左右,并且颜色上按冷暖感觉调整。如下图:

图片
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

VI. 物件模型

帖子awakening3d » 2010年 12月 21日 15:53

  建筑主体已经差不多了。我们可以继续加入桌椅门窗等物件。这里就用火炬做实例:先在 3dsmax 里建一个火炬的模型,导出到 “火炬.tri” 文件。然后在 Awakening 里点一下 Creation Toolbar 图片上的小车图标(Create Mobile),在弹出的对话框里选择 “火炬.tri” 文件,就建立了一个 Mobile 对象。一般的物件都可以用 Mobile 对象来表现。刚创建的对象位置在坐标原点处,不过我们只要按一下 Shift + F 快捷键,就可以把选中的对象移到眼前。然后利用主工具条上的 Move/Rotate/Scale 功能调整。把火炬对象摆放到合适位置后,再加入一个 “WOODSC2.bmp” 贴图到场景,并在 Texture 浏览窗里点一下它,赋给火炬对象。我们还希望这个火炬产生动态阴影,那就在它的属性面板 Dynamic Shadow 组下勾选 Enable,并把在上一节中创建的拐角处的灯的 Dynamic Shadow 属性也勾上。这样就OK了。

图片
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

VII. 火焰

帖子awakening3d » 2010年 12月 22日 08:59

  火焰我们用一个 Billboard 来表现。Billboard 其实是一个薄片,不过它能始终把面对着摄像机。点一下 Creation Toolbar 图片上的火焰图标(Create Billboard),然后在场景中点一下,就创建了一个 Billboard 对象。同样按 Shift + F 移动到眼前,再在 Billboard 的属性面板中把 Axis 设成 Y ,这样它就只能绕 Y 轴旋转。把这个 Billboard 移动到火炬上方,并调整到合适的宽高。
  接下来创建火焰材质。先在 Texture 面板里加入 “textures/fire” 文件夹下的所有贴图(firexxx.bmp);再在 Material 面板中 New 一个材质并用 Assign 按钮指定给 billboard。然后点一下 Texture Play 组中的长按钮,就弹出了 Texture Play 对话框。Texture Play 是一系列的纹理,可以按顺序和设定的时间间隔去替换 Material 中的第一个 Texture 。我们点一下 New List 按钮来创建一个纹理列表,并用 Add Texture 按钮顺序加入所有的火焰贴图。再点一下 OK 按钮就好了。如下图:

图片

点一下主工具条上的小三角形(Run)去运行场景,怎么样,火焰动了吧?
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39


回到 教程

在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客

cron