Reference model: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
{{stub}}
{{wip}}
The plan is to break out this stuff when it's finished. --[[User:Beeswax|Beeswax]] 19:08, 1 May 2008 (PDT)


== Reference.mdl ==
=Compiling a Model=
The Reference.mdl, conventionally named <code><modelname>.mdl</code>, contains a range of key information for an in game model:
probable destination for this section is an introduction to Compiling models for Source. 3rd party MDL compilers often provide a different GUI to the QC file than StudioMDL, so a checklist of "things you should already have done" would be relevant to all MDL compiler docs. It includes model anatomy/glossary definitions for #REDIRECTs ?
* The model's Filename, used to identify vital data stored in the model's [[VTX]], [[VVD]], [[PHY]] files.
* The names of any Sound WAV files used by this model.
* The names of the Skin VMT files used by this model.  (or is this in VTX / VVD files ?)
* The names of any Animation Sequences used by this model.
* The names of any Animation Library MDL files used by this model.
* Any [[propdata]] attributes this model may have, including
* The names of any Gib MDL files used by this model.
<!--  //Hmmm. this one needs work!
* The model's Origin, used to align its rendermodels, collisionmodel, gibs, etc to the Model Entity's position in the World.
-->
* etc
 
Each model's 3D Rendering data is stored in the [[VVD]] and [[VTX]] files, and its Collisionmodel data in its [[PHY]] file.


== Reference.smd ==
== Reference.smd ==
The reference.smd is traditionally named <code>"modelname_ref.smd"</code> to distinguish it from <code>"modelname_anim.smd"</code> files. It is also distinct from the <code>"modelname_phys.smd"</code> which contains only collisionmodel reference data.
The Reference.smd is traditionally named <code>"modelname_ref.smd"</code>.
The Physics.smd is traditionally named <code>"modelname_phys.smd"</code>.  
Each Animation.smd is traditionally named <code>"sequencename.smd"</code>.  


The reference.smd contains the model's "default" Rendering data for animation files to manipulate.
"Reference model" is a term used by animators to distinguish the un-animated model's ''deformable'' 3D geometry data from the the actual animated sequence (deformation) data that can be applied to it. This includes the model's basic Rig (Skeleton or [[bonetree]]) and Render Surface (Mesh).  
* The '''Reference Skeleton''' (<code>nodes</code> block) is used by animations or ragdoll physics to manipulate the mesh, collisionmodel, hitboxset, etc. It can be modified by [[$lod]] bonetreecollapse (etc)
* The '''Reference Pose''' (<code>skeleton</code> block) is used when no animation or vphysics is applied to the skeleton.
* The '''Reference Mesh''' (<code>triangles</code> block) is the Mesh that will be Rendered unless replaced by an [[$lod]] configuration.  
* The '''Reference Skin''' is only the ''filename'' of the VMT whose VTFs will be used on the Mesh unless overridden by [[$texturegroup]] skinfamilies options and/or [[$lod]] configuration.  


; Reference Mesh:
Because Source is a little more than a simple animation renderer, most models also require a [[Physics model]] for collision detection, etc. Although not Rendered on screen, the Physics model is also a kind of Reference model because it too may be ''deformed'' by skeletal animation, and contains its own Rigging and (Rigid) Mesh data.
In Source, the Reference Mesh (also called the ''body'' or ''envelope'' or ''skin'') includes:
* [[Geometry]] data : Vertex Coordinates (in relation to the model's [[$origin]]) for each triangular polygon,
* [[Smoothing group]] data : Normal vector {{confirm|(in relation to the model's [[$origin]])}} for each vertex,
* [[Skin]] data : [[UV map]] coordinates and Default "Skinname(s)",
* [[Envelope]] data : [[Weight map]] values and "Bonename(s)".


<!--
The Reference.smd basically contains the model's "default" Rig and Rendering data for animation files to manipulate.
* The '''Default Skeleton''' <!--nodes block--> is used by animations or ragdoll physics to manipulate the mesh, collisionmodel, hitboxset, etc. unless modified by [[$lod]] configuration.
* The '''Default Pose''' <!--skeleton block--> is used when no animation or vphysics is applied to the skeleton.
* The '''Default Mesh''' <!--triangles block--> is the Mesh that will be Rendered unless replaced by an [[$lod]] configuration or modified by [[$bodygroup]]s.
* The '''Default Skinname''' is only the ''filename'' of the VMT whose VTFs will be used on the Mesh unless overridden by [[$texturegroup]] skinfamilies options and/or [[$lod]] configuration.


:;Sub-meshes: [[$bodygroup]] allows additional sub-meshes (.smd) to be added to the main [[$body]] mesh. It also allows the model to switch between rendered [[$bodygroup]]s during runtime. Some good candidates for switchable sub-meshes would be different types of body armor or headgear. [[$bodygroup]] sub-meshes are [[enveloped]] to the reference skeleton, and will deform (stretch and bend) as part of the mesh. Sub-meshes are not added to the model's $collisionmodel. ({{todo|[[$model]]'s face mesh for facial animation ?}})
{{tip|See [[SMD file format]] for exactly how this data is stored in each "Studio Model Data" file.}}


:;Sub-models: [[$attachment]] points allow world prop models (.mdl), such as the character's "current weapon", to be constrained to a specific bone or bones on the main model. These sub-models will move with the bone they are attached to, but will not deform like the [[$body]] or [[$bodygroup]] meshes. They are essentially prop-constraints for animations rather than part of the main reference model.


;Default Skin: The '''Reference Skin''' is the name of the image file(s) used when creating the [[UV map]] data in the Mesh (the extension - .tga, .bmp, etc - is recorded but not used in compiling). The actual pixel matrices (colors, normals, etc) are not included in the mesh, and are not compiled by StudioMDL. Instead, they must be compiled into [[VTF]] texture files and included in a [[VMT]] material file. By default, the compiled model expects to find a VMT with the same name as the Reference Skin in the <code>game_dir/materials/models</code> directory. If it's not there, the model will be rendered with the "pink check" error material.
==LOD...smd==
see [[LOD Models]] ... compiled into VVD/VTX of main model


:;Alternate Skins: The model can have optional alternate skins, which are also VMT files in the <code>game_dir/materials/models</code> directory. The filenames of optional skins must be specified in the QC file's [[$texturegroup]] configuration in order to be available to the model. The skin to be rendered in game is selected by the level designer {{confirm|and cannot change at runtime}}. An alternate skin can differ from the default skin in many ways, but it cannot change the [[UV map]] data in the model's Mesh.
==Physics.smd==


;Level of Detail Optimisation: Source's [[LOD system]] allows a "cheaper" (simplified) version of the model to be rendered at a distance where the loss of detail is not noticeable to the Viewer. Each [[$lod]] configuration specifies the distance threshhold for a block of modifications. It allows the Rendering Engine (at runtime) to effectively replace or remove Meshes, Skins and/or Bones. Replacement [[LOD Models]] and Skins are created as separate SMDs and VMTs, but they are compiled into the main MDL's [[VVD]] and [[VTX]] files.
==Hitbox.smd==
{{confirm|not compiled by StudioMDL, but opened in text editor for hitbox vertex coordinates?}}


-->
==Animation.smd==
* modelname_idle.smd




[[category:modeling]]
[[category:modeling]]

Revision as of 19:08, 1 May 2008

Under construction.png
This page is actively undergoing a major edit.
As a courtesy, please do not edit this while this message is displayed.
If this page has not been edited for at least several hours to a few days, please remove this template. This message is intended to help reduce edit conflicts; please remove it between editing sessions to allow others to edit the page.

The person who added this notice will be listed in its edit history should you wish to contact them.

The plan is to break out this stuff when it's finished. --Beeswax 19:08, 1 May 2008 (PDT)

Compiling a Model

probable destination for this section is an introduction to Compiling models for Source. 3rd party MDL compilers often provide a different GUI to the QC file than StudioMDL, so a checklist of "things you should already have done" would be relevant to all MDL compiler docs. It includes model anatomy/glossary definitions for #REDIRECTs ?

Reference.smd

The Reference.smd is traditionally named "modelname_ref.smd". The Physics.smd is traditionally named "modelname_phys.smd". Each Animation.smd is traditionally named "sequencename.smd".

"Reference model" is a term used by animators to distinguish the un-animated model's deformable 3D geometry data from the the actual animated sequence (deformation) data that can be applied to it. This includes the model's basic Rig (Skeleton or bonetree) and Render Surface (Mesh).

Because Source is a little more than a simple animation renderer, most models also require a Physics model for collision detection, etc. Although not Rendered on screen, the Physics model is also a kind of Reference model because it too may be deformed by skeletal animation, and contains its own Rigging and (Rigid) Mesh data.

The Reference.smd basically contains the model's "default" Rig and Rendering data for animation files to manipulate.

  • The Default Skeleton is used by animations or ragdoll physics to manipulate the mesh, collisionmodel, hitboxset, etc. unless modified by $lod configuration.
  • The Default Pose is used when no animation or vphysics is applied to the skeleton.
  • The Default Mesh is the Mesh that will be Rendered unless replaced by an $lod configuration or modified by $bodygroups.
  • The Default Skinname is only the filename of the VMT whose VTFs will be used on the Mesh unless overridden by $texturegroup skinfamilies options and/or $lod configuration.
Tip.pngTip:See SMD file format for exactly how this data is stored in each "Studio Model Data" file.


LOD...smd

see LOD Models ... compiled into VVD/VTX of main model

Physics.smd

Hitbox.smd

Confirm:not compiled by StudioMDL, but opened in text editor for hitbox vertex coordinates?

Animation.smd

  • modelname_idle.smd