Zh/Compiling a model

在游戏中使用之前需要被编译。编译他你需要以下三个东西：
# 一套用于描述模型的文件(像, , )。如果你没有，请参见。FBX格式在CSGO的1.34.8.4版本后获得有限的支持。
# 一个文件它定义了这里源文件该如何被转换成为一个起源引擎模型，它与材质文件的 文件较为相似。
# 程序，这个SDK中的程序利用QC文件来编译输出一个编译过的模型（但愿如此！）
== 一些设置 ==
假如你已经成功的从你最喜欢的3D建模软件中导出了模型源文件，在编译前，最后一步就是设置环境变量。它定义了模型工作室工具将会在那里输出编译好了的模型。你可以用以下方法改变输出位置：
#一般地，你可以在SDK启动器（SDK Launcher）中的下拉菜单中选择你当前工作的游戏或者模组来改变它。
#但你只用模型工作室工具时，在命令行中添加-game "<指向你所在文件夹的完整路径>" 
=== 句法高亮 ===
当你使用支持 句法高亮的高级文本编辑器时，编辑QC文件将会变得非常简单。下面是目前支持QC高亮显示规则的两款文本编辑器：
* 
* 
== 创建一个QC ==
QC文件仅仅是一个拥有.qc后缀名的文本文件。你可以在任何地方以任何名字命名它，但是最好将他存储在你SMD文件所在的目录下并且命名它为你目标模型文件的名字。
在文件中应该是一个告诉模型工作室模型的各个SMD文件的位置，编译后文件应该被写入的位置，如何处理动画以及其他特性的一个列表，你可以在中找到所有已知命令的列表。
=== 例子 ===
下面是一个非常简单的QC文件，用于一个没有任何动画和特殊属性的静态模型（单击某个命令以获取它的详细信息）:
 	"props\myfirstmodel.mdl"
 mybody	"myfirstmodel-ref.smd"
 
 	combine_metal
 	"models\props"
 
 idle	"myfirstmodel-ref.smd"
 
 	"myfirstmodel-phys.smd" { }
你可以把这个文件作为你的模型的QC文件模板，把其中的参数换成你自己的SMD文件（或 DMX，或 FBX）看看会发生什么。
=== 其他教程 ===
* 物理模型，见 
* 人物和玩家模型，见 
* 武器模型，见 
* 载具模型，见 
* 模型编译的常见问题 
== 模型编译 ==
=== 使用文本编辑器 ===
编译模型最简单的方式是使用装好编译插件的高级文本编辑器。
* 使用 Notepad++ 编译
* 
=== 使用批处理文件 ===
如果你不能（或不想）用高级文本编辑器，在Windows下你可以通过把QC文件拖动到Studiomdl中来编译。Studiomdl程序位于 sourcesdk/bin/[orangebox|ep1]/bin/ 路径下。
如果创建一个 .cmd 文件来自动化地编译，这个过程会方便的多。把.txt重命名为.cmd就可以了，文件内容如下:
 "%sourcesdk%/bin/orangebox/bin/studiomdl" -nop4 %1
 pause
把你的QC文件拖动到CMD文件上来运行；它相当于Studiomdl程序的快捷方式。
=== 使用编译工具 ===
你也可以使用像 这样的工具来编译你的模型。只需要读取你的QC文件，选择对应的起源引擎游戏，然后点击编译按钮就可以了。
== 常见错误 == 
* 错误 Error opening <model>! (Check for write enable)
: Studiomdl 遇到不存在的路径时，不会自己新建文件夹；你必须在编译前，为你的.mdl文件手动创建对应文件夹。
* 错误 
* 错误 
* 错误 
* 错误 
: 如果你遇到了 EXCEPTION_ACCESS_VIOLATION 错误但没有错误码，尝试在运行 的同时编译。
* 错误 WARNING: Bad collision model, check your smoothing groups!!!
: 如果你使用XSI来创建碰撞模型，你需要关闭 Geometry Approximation's Automatic Discontinuity 选项(Explorer -> Your Mesh -> Geometry Approximation -> Polygon Mesh -> Discontinuity -> Untick Automatic) 让平滑组(smoothing groups)能够被正确地导出.
* 错误 WARNING: Model has 2-dimensional geometry (less than 0.500 inches thick on any axis)!!!
: 当碰撞模型的一个或多个面不在同一个平滑组中会导致该错误。解决方法只需把所有的面分配到 smoothing group 1（因为你只能使用一个平滑组）中即可。非常感谢 Vaenyc 的 this thread
: 当碰撞模型的构件太小时也会出现该错误。它还可能与缩放模型的 命令有关，尤其是在重编译全尺寸的 时。（在这种情况下，把碰撞模型替换为一个空模型也是可行的，因为天空盒通常不需要碰撞体积）
* 错误 Bounding box out of range
: 编译错误 "bounding box out of range" 后面跟着一串坐标，表示碰撞模型超出了允许的最大值；各方向上的最大值固定为16384单位。错误通常发生在，你把模型放大得过大导致碰撞体积超出了上限，或者你的动画让碰撞范围超过了最大值时。
: 
: 在你的模型不会与其他物件发生碰撞的情况下，似乎你也可以忽略这些错误，因为它似乎不影响游戏运行。
== SDK 中的样例 ==
在 SDK 中有许多样例模型，包括几个完整的人物和玩家模型。可以在 sourcesdk_content\<game>\modelsrc\ 中找到。
; sdk
: Complete SMD source for both player models in .
; tf
: Complete, but outdated, source for all TF2 classes. Rigged are also available as and .
; generic
: A tweaked rig (no meshes)
; cstrike
: "Urban CT" player model
: Several static props
; hl2
: and 
: 
: Male citizen (old version with only a few animations)
: Some CS stuff that is probably a duplicate of \cstrike's content
: Viewmodels for all HL2 weapons
; hl2mp
: All with multiplayer animations only:
: Combine soldier 
: Metrocop
: Male rebel
; Left 4 Dead 
: Common infected Models, Bodygroups, and commands necessary for Dynamic Skins
: Breakable Woodrail prop example
: Explosive Weapon examples for red gas cans and propane tanks
; Left 4 Dead 2 
: Breakable Woodrail prop example different from the one found in Left 4 Dead 1
: Crumbling Ceiling dynamic prop example
== 另见 ==
* 
* 
* Crowbar Tool
**, Decompile and Compile Source Engine Models in a user friendly interface
* 
** , a graphical interface for studiomdl
** , another graphical interface
* 
* 
* Common Compile Errors and Some Solutions