游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8490|回复: 3

如何做三维游戏(基本手册)! 综合篇

[复制链接]

21

主题

54

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2008-3-30 16:41:00 | 显示全部楼层 |阅读模式
如何做三维游戏(基本手册)!  
知识要点:

一:软件:

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信息管理四班,李昕。

15

主题

202

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
QQ
发表于 2008-3-30 18:25:00 | 显示全部楼层

Re:如何做三维游戏(基本手册)! 综合篇

扯淡.看这些书永远别想做出东西.

6

主题

35

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2008-6-7 14:14:00 | 显示全部楼层

Re:如何做三维游戏(基本手册)! 综合篇

不错,大力支持!

14

主题

251

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2009-9-21 20:07:00 | 显示全部楼层

Re:如何做三维游戏(基本手册)! 综合篇

不错入门还是很不错的,楼上的楼上,你能隔着锅台上抗吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 12:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表