PHY: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
[[PHY]] is the extension for Source's proprietary [[collision model]] data format. It stores data for the rigid or jointed (ragdoll) [[collision model]] used by the [[MDL]]. In addition, it stores [[ | [[PHY]] is the extension for Source's proprietary [[collision model]] data format. It stores data for the rigid or jointed (ragdoll) [[collision model]] used by the [[MDL]]. In addition, it stores some [[$keyvalues]] about a model such as which gib-models to use if destroyed. | ||
== File Format == | == File Format == | ||
Line 7: | Line 7: | ||
* A main header, which specifies the number of solids | * A main header, which specifies the number of solids | ||
* A series of VPHY/collision data sections, one per solid | * A series of VPHY/collision data sections, one per solid | ||
* A | * A single text data section, with the appropriate number of solid{} block elements | ||
=== Main header === | === Main header === | ||
Line 62: | Line 62: | ||
} | } | ||
{{todo|Link to other articles to provide information about what this sample means}} | |||
== See also == | == See also == |
Revision as of 18:33, 6 August 2010
PHY is the extension for Source's proprietary collision model data format. It stores data for the rigid or jointed (ragdoll) collision model used by the MDL. In addition, it stores some $keyvalues about a model such as which gib-models to use if destroyed.
File Format
In brief, a PHY file is formed by:
- A main header, which specifies the number of solids
- A series of VPHY/collision data sections, one per solid
- A single text data section, with the appropriate number of solid{} block elements
Main header
The first bytes of the file form the main header:
struct phyheader_t
{
int size; // Size of this header section (generally 16)
int id; // Often zero, unknown purpose.
int solidCount; // Number of solids in file
long checkSum; // checksum of source .mdl file (4-bytes)
}
Collision data sections
There will be a series of these sections, back-to-back, numbering the same as the header's [code]solidCount[/code].
{
int size; // Size of the content after this byte
int id; // Generally the ASCII for "VPHY" in newer files
//TODO fill in remaining data
}
Todo: Document details of each collision section
Todo: Document "old format" if VPHY is not seen
Text section
The text section occurs near the end of the file, and is one single string with no size header. Here is an *incomplete* sample from the Combine Strider, which only shows details for the first two solids and formatted for readability.
solid { "index" "0" "name" "Combine_Strider.Body_Bone" "mass" "981.994263" "surfaceprop" "strider" "damping" "0.000000" "rotdamping" "0.000000" "inertia" "1.000000" "volume" "779936.625000" } solid { "index" "1" "name" "Combine_Strider.Gun_Bone1" "parent" "Combine_Strider.Body_Bone" "mass" "39.125652" "surfaceprop" "strider" "damping" "0.000000" "rotdamping" "0.000000" "inertia" "1.000000" "volume" "31075.058594" }
Todo: Link to other articles to provide information about what this sample means