IrrLicht引擎研究
鬼火引擎研究
posts - 22,  comments - 40,  trackbacks - 0




 

posted @ 2008-05-18 23:11 安徽飞雪游戏工作室 阅读(1572) 评论(10) 编辑

http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=7494&highlight=crash+course

posted @ 2008-05-06 11:00 安徽飞雪游戏工作室 阅读(996) 评论(0) 编辑
1 使用工具将文件转为字节数组,这里用[bin2h.exe]
    比如准备个文件 testpng.png
    使用命令
        bin2h testpng.png
    将生成 testpng.h,内容如下
        unsigned int testpng_size=<size>;
        unsigned char testpng[]={...};
2 将文件加入到工程中
    使用如下代码获取ITextrue接口,env为IGUIEnvironment
    //包含文件
    #include "testpng.h"
    ....
    //获得文件系统
     IFileSystem * pFS = env->getFileSystem();
    //创建读文件接口,这里特别注意第3个参数,其后缀一定要和文件格式一致,如果用的是bmp,则应该是testpng.bmp
     IReadFile * pMFR = pFS->createMemoryReadFile(testpng,testpng_size,"testpng.png",false);
    //获取Texture
     ITexture * pTxtPng = driver->getTexture(pMFR);
3 使用pTxtPng

posted @ 2008-01-13 15:26 安徽飞雪游戏工作室 阅读(578) 评论(0) 编辑
在工作室制作一个动作类休闲游戏的过程中经过比较选择了ms3d做为动画模型.这样我们就需要把美工制作的max文件转化为ms3d格式.下面是我们采用的方法.(基本引用燕尘的ogre模型导出的文章)

(1) 使用ActorX插件,将角色动画从 3dsmax 完整导出PSA,PSK文件;
(2) 使用 MilkShape 3D ,读入上一步导出的动画,转化为ms3d。


下面介绍一下详细步骤。


0. 使用的工具:

(1) 3dsmax 4, 5, 6, 7
主要是因为下面的 Unreal ActorX 插件的强大,拥有对应 3dsmax 4, 5, 6, 7 各个版本的全部输出插件,所以在这里, 3dsmax 的版本不是问题。
我用的是 3dsmax 6

(2) Unreal ActorX for 3dsmax plugin
(2-1) 插件下载
你可以去 UND (Unreal Developer Network) 下载对应你的 3dsmax 版本的 ActorX 插件。下载页面在这里:
http://udn.epicgames.com/Two/ActorX
这里还有 for Maya 4, 4.5, 5, 6 的 ActorX 插件。总之不管你使用 3dsmax 还是 Maya ,也不管你使用的是什么版本,这个插件的强大性可以保证你能够顺利输出,同时保证输出后的模型和动画文件遵守相同的规范,确保它们可以被 MilkShape 3D 顺利读取和最终输出。
(2-2) 插件安装
解压缩 ActorX_216_Max6.zip ,把里面的 ActorX.dlu 复制到 3dsmax 的 plugins 文件夹,例如 C:\3dsmax6\plugins
(2-3) 使用方法
插件的使用方法可以简单阅读一下这一页:
http://udn.epicgames.com/Two/ActorXMaxTutorial

(3) MilkShape 3D 1.7.0 或 1.7.1
这是一个共享软件,未经注册无法输出,考虑到燕尘小筑的国际影响,坚决不在这里放出注册机或注册码,诸君可以自己寻找各种适用版本。它的官方网站在这里:
http://www.milkshape3d.com



OK. 下面开始正式输出。

1. 第一步,使用 Unreal ActorX 插件,从 3dsmax 中输出角色模型 *.PSK 和骨骼动画 *.PSA 。

(1) 使用 3dsmax 打开原始角色动画文件 *.max 。

(2) 然后,你必须遵守一些必要的约束,对这个原始角色动画文件进行一些必要的预加工:
(2-1) 一次只能输出一个角色模型。如果你希望一次输出多个物体,比方说,你希望同时输出角色本身和角色手中拿着的武器,你需要先把角色本身转化为 Editable Mesh ,然后使用 Attach 功能将武器绑定为角色的子物体 (Sub Mesh) 。
(2-2) 角色的骨骼只能有一个根节点。如果需要输出的角色骨骼拥有多个根节点,你需要为它们新建一个共同的根节点。
(2-3) 最后是最重要的一点,忽略了这一点将会导致你输出的模型的法线和纹理产生严重的异常。你必须给你的模型的材质赋予一个“合法的”名字。这一条,是 Unreal ActorX 输出插件的一个严格规定,它要求所有的材质都必须带一个形如 “_Skin00” 、"_Skin01"、 "_Skin02" 这样的后缀。
例如,如果你的模型带有两个材质,原来的名字分别是 "MBody" 和 "MFace" ,那么,你需要把这两个材质分别改名为 "MBody_Skin00" 和 "MBody_Skin01" 。
更改材质的名字可以使用 Material Editor :

attachments/month_0411/jg9m_snap0138.jpg



(3) 然后,首先输出角色的静态模型,输出为 *.PSK 文件。这个模型文件中,包含了角色的皮肤和骨骼信息。

(3-1) 首先要打开 ActorX 工具箱。
(3-1-1) 到 3dsmax 右栏,点击小锤子图标切换到 Utilities 面板,点击 [More...] :

attachments/month_0411/1xp4_snap0139.jpg


(3-1-2) 在弹出的 Utilities 窗口中,双击 "ActorX" :

attachments/month_0411/52t9_snap0140.jpg


(3-2) 在 ActorX 面板中,点击 output folder (输出文件夹) 一栏旁边的 Browse 按钮选择模型文件的保存目录,这同时也是稍后输出动作文件的保存目录;然后在 mesh file name (模型文件名) 一栏中给你要输出的模型文件取个名字。

attachments/month_0411/41s8_snap0143.jpg


(3-3) 然后点击 Save mesh/refpose (保存模型/参考姿势) 按钮来保存角色模型。在保存过程中会相继弹出下面两个对话框:

attachments/month_0411/liao_snap0146.jpg


attachments/month_0411/63u9_snap0147.jpg


(3-4) 如果弹出错误信息,你需要根据错误提示做一些相应的纠正。很多情况下,可能是你的输出选项没有设置好,需要在 ActorX - Setup 面板中修改一些相应的选项:

attachments/month_0411/fc5i_snap0148.jpg


每一个具体选项不再具体讲解,详细请参考这一页的下半部:
http://udn.epicgames.com/Two/ActorXMaxTutorial

(3-5) 输出的模型文件为 *.PSK 。


(4) 最后就是骨骼动画文件 *.PSA 的输出。这个功能相当强大。

(4-1) 首先, ActorX - Epic Games 面板的上部是模型输出模块,下部就是骨骼动画输出模块。
(4-1-1) 在 animation file name (动画文件名) 一栏中,给你要输出的动作文件起个名字;
(4-1-2) 在 animation sequence name (动画序列名) 一栏中,给你要输出的这段动作起一个动作名,例如 dance 、 walk 、 run 、 attack 等等;
(4-1-3) 在 animation range (动画范围) 一栏中,给你要输出的这段动画序列指定一个输出的帧的范围,格式是 "开始帧-结束帧";
整个设置如下图:

attachments/month_0411/olds_snap0151.jpg


(4-2) 然后首先我们要做的,是动画的采集 (Digest Animation) 。点击 [Digest animation] 按钮,看状态栏的进度条走完,就完成了动画的采集,但是这时候,仅仅是完成了这个动作序列的动画的数据取样,并没有把它保存起来,所以还需要进行下一步,就是动画的管理。

(4-3) 点击 [Animation manager] 按钮,打开 AcoorX animation manager (动画管理器) 面板:

attachments/month_0411/52u9_snap0152.jpg


(4-3-1) 在这个面板的左栏,我们会看到已经有了一个动画序列,名字是 "dance" ,我们可以使用中间的 move [-->] 、 [<--] 按钮,把这个动画序列移动到右边的 Output Package 一栏,也就是准备输出这个动作;

(4-3-2) 然后点击右边的 [Save] 按钮,骨骼动画序列就会被保存到指定的动作文件中:

attachments/month_0411/rogv_snap0153.jpg


保存成功后会弹出如下对话框:

attachments/month_0411/52t8_snap0154.jpg


(4-4) 就这样,动作文件被保存为 *.PSA 。

(4-5) 这个Animation manager 的动画管理功能十分强大,你可以做的不仅仅是保存单个动画序列,你还可以分别采集 (Digest) 多个动画序列然后把它们保存为一个动作文件,你还可以使用 [Load] 或 [Load As..] 按钮来读取一个现有的动作文件,对其添加或删除动作序列,然后再使用 [Save] 或 [Save As..] 按钮来保存修改过的动作文件。总之,这个动画管理器很强大,多多学习。


2. 使用 MilkShape 3D ,读取上一步生成的 *.PSK 和 *.PSA 文件,然后整合输出到 OGRE 。

(1) 打开 MilkShape 3D 。

(2) 使用菜单 [File] - [Import] - [Unreal/UT PSK/PSA ..] ,首先输入模型文件 *.PSK ,然后输入动作文件 *.PSA

attachments/month_0411/da3h_snap0158.jpg


(3) 你可能发现两处毛病:首先,骨骼可能错位了;其次,没有纹理贴图。这两个问题都不难解决:
(3-1) 首先你必须详细阅读 MilkShape 3D 的 Help ,学会各种简单操作;
(3-2) 纹理贴图的问题,在 Materials 面板点击这个按钮就可以选择贴图:

attachments/month_0411/b91f_snap0159.jpg


(3-3) 骨骼错位的问题,配合三视图,利用 Model 面板,首先使用 [Select] 按钮选择全部顶点,然后使用 [Move] 和 [Rotate] 工具来使角色的皮肤对齐角色的骨骼。
注意一!不要动骨骼;
注意二!在对齐时,必须确保下方的 Animation 栏处于未激活状态,也就是 [Anim] 按钮未被按下,一排动画播放键处于失效状态。
等一切搞定后再点击 [Anim] 按钮播放动画。

attachments/month_0411/fc5i_snap0161.jpg


(3-4) 调好的模型和骨骼:

attachments/month_0411/52t9_snap0165.jpg



(4) 现在就该输出了。

FILE->SAVE就可以保存为ms3d模型了.在irrlicht几乎支持所有常见的动画格式.ms3d支持的是比较好的.1.0版本有些问题,不过后来的版本更正了.希望irrlicht的明天会更好.也希望有更多的人来使用研究这个引擎.





posted @ 2007-06-01 22:24 安徽飞雪游戏工作室 阅读(4683) 评论(4) 编辑

irrlicht1.3的中文支持补丁,需要的朋友可以下载,如何使用里面有说明./Files/flysnow/IrrlichtML-1.3-win32Linux.zip

posted @ 2007-06-01 21:44 安徽飞雪游戏工作室 阅读(1220) 评论(5) 编辑

Audiere: http://audiere.sourceforge.net/
     Platform: Windows, *nix
     Cost: Free (LGPL) ------ freely use Audiere in commercial products
  Support file format:  Ogg Vorbis, MP3, FLAC, uncompressed WAV, AIFF, MOD, S3M, XM, and IT files.  不支持MIDI
  features:
     Braindead easy API
    Supported file formats: Uncompressed WAV*, Uncompressed AIFF*, Ogg Vorbis*, FLAC*, MP3, MOD, S3M, IT, XM (* supports seeking)
    Streaming and buffered audio
    Volume, pan, and pitch shift modification
    Flat tone, square wave, white noise, and pink noise generation
    Runtime enumeration of audio devices and supported file formats
    Custom file streams
    Python, Delphi, Java, XPCOM (JavaScript in Mozilla) bindings
    
 Support 2D/3D:  2D, 不支持3D音效
 Link:  http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1422
   http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=8853#8853
   http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=627&highlight=openal
   http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=6106&highlight=openal
   http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=7646&highlight=openal
   http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=8048&highlight=openal   
Comment:
 1. 3d sound made using audihere!!  http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=7549&highlight=openal    


OpenAL: http://www.openal.org
     Platform: Windows, Mac, Linux, BSD, Solaris, IRIX, PS2, XBox, GameCube
     Cost: Free (LGPL).
     Support file format: Ogg , wav
    
   Support 2D/3D:  3D(hardware supported) and SoundBlaster Live 5.1 compatible

Link:  http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=2891&highlight=sound
  http://www.devmaster.net/articles.php?catID=6
  http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=10267&highlight=openal
  3d stereo sound  http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=7335&highlight=openal
Comment:

1. The main reason why it doesn't work is to use stereo waves !!!
Stereo waves will cause OpenAl to play the sound as background music (like Audiere) !!!
If you use a mono wave it works: the nearer the player to the sounds position, the louder the sound is played. If the player left or right of the sound, the sound will played on left/right speaker...

2. 一般使用OpenAL..音效部分就是用wav格式, 背景音樂部份就是用ogg..

posted @ 2006-08-21 20:46 安徽飞雪游戏工作室 阅读(787) 评论(0) 编辑
posted @ 2006-07-28 13:25 安徽飞雪游戏工作室 阅读(860) 评论(1) 编辑
摘要: 这是Irrlicht SDK中给的一个例子,用来演示如何在Irricht中冲突检测与响应,其它的例子还有十三个,俺会陆续翻译出来。自己英语水平很洼,但对翻译又有点瘾,所以就帖到这里来,有译错或表达不好的地方请指正。  例7,碰撞检测与响应  这一节,我将演示如何在Irrlicht引擎里进行碰撞检测。有三种方法:自动的碰撞检测,例如上下楼梯时移动全局坐标;手工拾取三角形和场景结点。  演示...阅读全文
posted @ 2006-07-28 09:48 安徽飞雪游戏工作室 阅读(939) 评论(1) 编辑
posted @ 2006-07-28 09:23 安徽飞雪游戏工作室 阅读(1263) 评论(0) 编辑
摘要: MS3D model 的Frame count通常在载入ms3d动画序列后, 无法播放动画或动得极缓慢,调用IAnimatedMesh::getFrameCount()取得的FrameCount也比MilkShape里的FrameCount大很多, 这是为什么呢? 请看"niko"的原话:The reason why the frame number is multiplied is becaus...阅读全文
posted @ 2006-07-23 21:42 安徽飞雪游戏工作室 阅读(305) 评论(0) 编辑
仅列出标题  下一页