About Physics Models: Info, Forge 2.0, Making Things Solid

Lord Zedd
By Lord Zedd in Tutorials & Guides,
The point of this post is to describe the PHMO tag and to lay out how to do some things. PHMO only underwent slight changes between H3>Reach so everything here should be easily adaptable unless noted as the value names are the same.   The plugins have been the way they are now for a while, but some of you may still be used to older naming. As far as I know there hasn't been many physics tutorials besides "Forge 2.0" in Halo 3 which will be mentioned later. If there was something other than F2.0 please link it below and I'll add it to the post.   First up is "Phantom Types". The name can be confusing because 1. Halo has a vehicle named Phantom, 2. The Phantom vehicle uses this block. "Phantom" is actually a Havok term so it has nothing to do with the vehicle. The Phantom Types block is used in things like mancannons and gravity lifts (and the Halo 3 Beta Tripmine). Admittedly, I'm not familiar with what the float values mean/do, I only compared between games to get them named. What I do know are the flags and that there is a flag for each kind of object to allow certain objects not be affected by the Phantom Type. This was used in the Tripmine video in the thread above to allow it to stick to Bipeds.   Node Edges is used to apply constraints, which will be mentioned later.   Next is Rigid Bodies, which is essentially the nodes of the physics model. Each body has a shape reference with its own controls. List Shapes are used to assign multiple shapes to a single body.   Tutorial: Forge 2.0 The old Forge 2.0 mod for Halo 3 (objects are phased like in Reach) can be done by changing the Motion Type enum to Fixed for each body.   Not too much else to mention about this block, the "Locked In Place" flag is used in the Flag weapon which is why it doesn't move and is rotated if you spawn one manually. This flag can be applied to bipeds for some fun effects on the ragdolls. In Reach+ (Reach and all games after) two extra values were added which are still unknown but affect solidity in some way. When in doubt, set "Unknown Interaction" to 0, "Interaction A" to 0, and "Interaction B" to 2, this seems to be the default values for solid things.   The Materials block has a Phantom Type index that may or may not be needed to make use of one.   The bulk of PHMO are its shapes. These are what actually make up the physical collision of an object. The named values can easily be modified to morph the shape however you'd like. You could even add some shapes (don't forget to create the blocks on an x10 alignment!) which is essentially what the Halo 2 modding community uses behind its custom BSPs. Also in every shape there is a Phantom Index for assigning a Phantom Type, which is probably actually used compared to the one in Materials. But below that is "Interaction Unknown" which is what makes things solid or not. It is another unknown but enough of it is known to do some good stuff.   Tutorial: Solid Objects So throughout the Halo games, larger vehicles like Phantoms and Pelicans aren't "solid" in order to look good when flying away in campaign and maybe for performance reasons. However when you are trying to spawn them yourself to play with that means they are just gonna fall through the ground. Boring.   So to make these solid, you want the "Interaction Unknown" value in every available shape to be -1. Simple enough but now you know.   Tutorial: Solid Ragdolls Like the above tutorial, but with a different value. This is normally seen in the Guta biped. Instead of -1, make the value 5. In addition, you need to open the BIPD tag and check the "Never Rests" flag for under the flags named "Movement". Without this the ragdolls will lose their solidity when they "rest" (stay in the same position for too long). You don't want to have too many ragdolls with this effect at once or it will easily break and all of them will lose their solidity.   Almost lastly there are Constraints, these control how flexible a ragdoll is, so you don't see heads twisting 360 degrees or arms bending backwards. Values are pretty self explanatory but the limits are the values at the bottom.   Actually lastly are Regions which will help you identify Rigid Bodies pretty much but are also used by HLMT to link to the render model. (See the Collision Regions block)       Hope this helped you guys.
  • 2 replies