|
如何做三维游戏(基本手册)!
知识要点:
一:软件:
maya(版本3.0(建议),4.0,4.5,5.0,6.0,6.5,7.0,8.0,8.5),(文件类型:ma);
雷神之锤:md2,md3;
vc++或者同类c++开发软件;
(网上找)MilkShape 1.79或者1.710(注册码没到手);
Name:Kathmandu
Serial:38d33-r2Ed2F-15d60d3
插件:maya转换md3插件
(http://www.quakerally.com/files/md3export.shtml,
maya6.0以后的新版本:http://www.clanfu.org/muskoka/);
www.quakerally.com插件安装md3插件之前,必须安装map插件。
(http://www.quakerally.com/files/mapexport.shtml)
http://udn.epicgames.com/Two/ActorX.html#Maya%20Exporter%20Plugins
二:预备教材:唐明理:《三维游戏设计师宝典-学OpenGL编3D游戏(蔚
蓝书店:www.welan.com)
三:编程思路:先制作maya骨骼动画,再用maya的md3插件把骨骼动画转
换成桢动画(polygon三角面),具体过程如下:maya的贴图转换成tga格式,把maya动画做好后,不输出贴图,输出模型部分到MilkShape,之后用MilkShape把maya输入的md3模型做成MilkShape的md3动画,之后查看MilkShape的md3文件,查出贴图路径。分析maya的md3贴图路径和MilkShape的md3贴图路径之间的区别。在MilkShape的md3文件夹建立贴图文件夹,将maya的md3贴图存入该文件夹,新建MilkShape文件,导入该模型动画,输出成md2动画。
《三维游戏设计师宝典-学OpenGL编3D游戏》中的程序引入md2模型动画。
其他函数自己设计;
三维游戏编程原理很简单,在指定的某一点播放md2模型的某一桢(八个
方向);
md2动画格式制作的方法!
1、milkshape:http://chumbalum.swissquake.ch/
里面说1.81a可以给md3 frames命名,但是我从来没有下载到过,更高的版本给frames命名的方法我不知道,不能命名就不能编程。md2 的动作命名是参考 http://forums.caligari.com/gamespace/showthread.php?t=2125
其下有个md2.zip下载,通过里面的md2.qc文件:
// Sample MD2 config, copy into export directory
$modelname models/model.md2
$origin 0.0 0.0 0.0
// skins
$skinwidth 128
$skinheight 128
$skin skin.pcx
$skin pain.pcx
// sequences
$sequence run 1 12
$sequence walk 13 30
我知道了md2的动作命名。
2、max加md2export插件:http://bbs.gameres.com/showthread.asp?postid=486709
3、又一种max输出md2的插件:http://www.qtipplugin.com/index.htm不过需要钱,paypal支付。
4、http://www.blender.org免费的md2输出工具http://quadropolis.us/node/105
5、Misfit Model 3D:http://www.misfitcode.com/misfitmodel3d/main.html
6、游戏开发引擎:http://lib.verycd.com/2006/04/18/0000099372.html可以给关键桢命名,但是和milkshape的md2格式不一样,所有在唐明理的《学opengl编3d游戏》程序里不能使用。
ftp://quake:quake@10.111.150.120:21
http://passport.q3acn.com
李浩青写的QC SMD文件分析
作者: 李浩青 作者: 李浩青
作者: 李浩青
作者: 李浩青
模型,QC、SMD文件介绍
半死不活采用的是雷神之锤的技术,所以它的模型和雷神之锤的模型一样,由控制文件(扩展名为QC) 和数据文件(扩展名为SMD)再加上贴图(只能是Windows格式的256色BMP位图,而且它的长宽都必须是八的倍数。)编译而成。
其中QC文件保存了模型的附件、接触点和子模型等数据,并指定编译时要读取的SMD文件。SMD文件保存了模型的身体和动画信息。
QC文件
QC文件可以用任意的文本编辑器编辑或创建,以下是它的命令介绍。
$attachment <关节名 X Y Z>
作用:
指定一个附件的位置。
ID#:
指定附件的ID号,这个数必须在0-3之间,也就是说一个模型只能有四个附件。
关节名:
指定附件要贴附的关节名称,要想知道关节的名称,可以查看SMD文件。XYZ为该附件和关节之间的距离。
$body studio [reverse]
作用:
指定模型的身体。
SMD文件:
指定一个保存着身体信息的SMD文件,但是不能包含扩展名。
reverse:
如果加上这个参数,模型的身体将是颠倒的。
$bodygroup <名称>
{
studio
blank
.....
}
作用:
指定一个身体组,取代$body命令的作用。一个组内可以定义若干个身体,一个模型可以定义数个身体组。象反恐怖Beta版里那些背着C4的匪徒就是用这个方法做的。
sudio:
指定一个用作子模型的SMD文件。
blank:
指定一个空的身体。
$cd <路径>
作用:
指定一个读取SMD文件的路径。
$cdtexture <路径> [<路径>......]
作用:
指定读取贴图的路径,可以制定若干个。
$cliptotextures
作用:
将材质和模型合为一个文件。
$controller <关节名> <轴> <角度1> <角度2>
作用:
为一个关节设定骨骼控制器以限制关节的转动。
ID#:
控制器的ID号,和附件一样只能有四个。
关节名:
要控制的关节。
轴:
要控制的轴,XR为X轴,YR为Y轴,ZR为Z轴,只能让控制器控制一个轴。
角度1和角度2:
控制转动的范围。比如要控制关节只在90度之内转动,这两个值要设为-45和45。
$externaltextures
作用:
编译后将材质另外保存为一个文件,并在模型的文件名后加“T”作为它的文件名。
$gamma <数值>
作用:
调整材质的加码值。
$hbox <关节名>
作用:
指定一个接触点。一个模型可以定义若干个接触点,游戏可以根据这些接触点来判断遭到打击的部位。
ID#:
接触点的ID号,一个模型允许数个接触点使用同一个ID号。
关节名:
指定的关节将作为接触点的中心。
X Y Z X2 Y2 Z2:
接触点的尺寸。
$include
作用:
包含另一个QC文件。
$modelname <模型文件名>
作用:
指定编译后保存的文件名。
$origin
作用:
在游戏中模型产生时的偏移量。
$rotate <角度>
作用:
在游戏中模型产生时旋转的角度。
$scale <倍数>
作用:
在游戏中模型产生时的大小。
$sequence <名称>
{
[SMD文件2.....]
[fps 数值]
[loop]
[frame 开始 结束]
[origin ]
[rotate <角度>]
[scale <倍数>]
[blend <轴> <角度1> <角度2>]
[LX]
[LY]
[LZ]
[{event <代码> <帧数> <参数>}]
}
作用:
设定一个动作,每个模型都至少要有一个动作才能被游戏识别。这个命令是QC文件里最值得研究的,也是最重要的。
名称:
动作的名称。
SMD文件:
保存动画信息的SMD文件。
SMD文件2:
与第一个SMD文件混合的SMD文件,可以指定若干个。
fps:
播放的速度,数值越大速度越快,默认值为30。
loop:
循环播放。
frame:
只播放开始值和结束值之间的帧数。
origin:
开始播放动作时模型移动的单位。
rotate:
开始播放动作时模型旋转的角度。
scale:
开始播放动作时模型缩放的尺寸。
blend:
如果动作由一个以上的SMD文件混合而成,这个参数将控制这个动作的转动范围,它的设置方法和骨骼控制器相同。
LX LY LZ:
从一个轴抽出该动作和其它动作合并,半死不活的人物跑步动作就是用方法做的,其实人物的模型并没有拿着枪跑的动作,只不过是游戏把拿枪的动作和跑步的动作合并起来了。
event:
播放动作到指定的帧数时激发事件。以下是经常用到的事件代码列表:
代码 作用 参数
5001 产生一个枪口的火焰。 指定火焰的大小和形状,它的值为0-100之间的整数。
5002 产生火星。 没有参数。
5004 播放一个声音。 声音文件名,必须是WAV文件。
事件代码的第三位数代表附件的ID号,事件将在指定的附件位置上激发。
看到这么多的命令和参数你是不是有些头昏眼花了?不过这些命令并不都是必须的,有很多命令都可以省略。
其实QC文件的学问远不止这些,只不过我自己也是一个初学者,对QC文件也不是十分了解,所以目前只能写出这些东西了。我建议使用MilkShape 3D把半死不活的反编译,然后查看它的QC文件,我自己当初就是这样学会制作模型的。
SMD文件
有两种格式,一种保存模型的身体信息,也就是贴图、多边形和骨骼的信息。另一种保存动画信息,一个文件保存一个动画。这些文件由模型制作软件(比如3DS MAX或MilkShape 3D)生成。
编译
模型需要编译工具来编译QC文件和SMD文件,半死不活开发包里配的studiomdl.exe是最常用的编译工具,在它后面加上QC文件的文件名即可编译。它的参数我还没有完全搞清楚,暂且先不介绍。除此之外还有一些模型制作软件也可以编译QC文件,但是它们不能很好地兼容半死不活的动画,所以我并不推荐使用。
吉林大学经济信息学院02信息管理四班,李昕。 |
|