POFCS2Help/HelpHome
- This is the stub page for the PCS2 Help Cooperative authoring. Please add all pages to the PCS2 Cooperative Authoring category.
- Once this project is finished, it will be exported and included with PCS2 releases as the official help.''
The POF Constructor Suite 2 (PCS2) allows modification of existing .pof's as well as creation of new ones from OpenCOLLADA .dae's. The geometry, texturing, and UV mapping is done by modeling software such as Blender or 3DSmax, while PCS2 focuses converting the model into a format usable by FS2 and adding/editing additional data used by the game.
There are numerous tutorials on rigging for FSO using PCS2:
Contents
General
PCS2 can be used to define/edit all meta data (as in non-model data) needed to get a usable POF file. If in doubt, look at an original Volition POF file for reference on how to set up your model.
PCS2 shows 3 panes/sections:
- On the left side you have a navigation pane showing all the elements stored in the POF.
- In the middle is a 3D-view of the POF that you can rotate/pan/zoom with the mouse.
- On the right side you can see all the editable values of the currently selected element.
The x/y/z coordinate system in a POF file (and therefore PCS) is probably different from what you're used in your modelling tool. In relation to the forward-direction of the model:
- X: Left/right, minus-direction is to the right, plus-direction is to the left
- Y: Up/down, minus-direction is downwards, plus-direction is upwards
- Z: Back/front, minus-direction is to the back, plus-direction is to the front
The 0/0/0 origin is the center of the model, as defined in the modeling tool where you saved it. All coordinate values in PCS are in ingame units, where 1.0 corresponds to 1 meter. Point/vector values are entered in PCS2 as a list of 3 floats separated by a colon, e.g. 6.101850:1.240200:5.347540
Header
The Header group contains the LOD and Debris list which points to which model as being the respective LOD and debris (The models themselves are contained in the SubObjects group). The Header group also contains physical values (such as mass and moment of inertia) and other assorted values, all shown on the right editing pane.
Bounding Box Min/Max
- Bounding Box Min is the minimum (i.e. lower rear left-hand corner if you where facing the same direction as the object) X, Y, Z coordinate of the bounding box.
- Bounding Box Max is the maximum(i.e. upper forward right-hand corner if you where facing the same direction as the object) X, Y, Z coordinate of the bounding box.
Note that the game only checks for weapon collisions with the model inside the bounding box. Model geometry outside of the bounding box is ignored (becoming non-shootable). PCS2 automatically calculates this value based on the min/max dimensions of the parent object (detail0). So the problem of non-shootable geometry only applies to SubObjects that protrude outside of the bounding box.
The values can be edited/saved if needed. Use the "Reset" button to recalculate the value based on model geometry.
Center of Mass
This value determines the center of mass of the object, and is namely used as a pivot point by the game engine to turn/rotate it during movement and collisions.
Max Radius
This is the maximum distance between any point on the craft and the craft's center. It is used to determine ship-to-ship collisions for small craft (where model geometry is ignored). PCS2 automatically calculates this value based on model geometry.
The values can be edited/saved if needed. Use the "Reset" button to recalculate the value based on model geometry.
Mass
Mass of the ship. Used in physics calculation in ship-to-ship collisions. The used unit is unclear. It's best too look at a Volition model of similar size for reference when defining this value for your model.
- Fighters have mass values from 100 to 250
- Bombers have mass values from 500 to 1000
- Freighters have mass values of several thousands
- Cruisers have mass values from 10'000 to 50'000
- Corvettes have mass values over 100'000
- Capital ships have a mass values of 1 to 3 million
From the POF data notes: "mass is an area mass conversion: area_mass=4.65*(vol_mass^2/3); also scale moment_inertia by vol_mass/area_mass (*) if there is no cross_section data, num_cross_sections is -1 instead of 0, as one would expect."
LOD
Define Level-of-detail models from LOD1 (used up close) to LOD4 (used far away). Define/edit the number of LOD levels with the new/edit/delete buttons in the "Select" list. Volition models have 4 LODs as standard, but you can use less (with fs2_open also more) than that.
- Select: Define/edit the number of LOD levels with the New/Copy/Delete buttons, select a particular LOD level from the drop-down list
- Model#: Select the corresponding subobject in the drop-down list
If your model naming scheme follows the PCS2 standard (detail0 for LOD1, detail1 for LOD2, detail2 for LOD3, detail3 for LOD4) PCS2 will automatically assign the subobjects to the respective LOD level. The suboject names can be anything (as seen when looking at Volition POFs), the standard naming is only a shortcut to let PCS2 do the LOD assignment automatically during model import. Note that the distance at which the LOD changes is defined in ships.tbl
Debris
Define debris chunk models (which are spawned when the ship is destroyed).
- Select: Define/edit the number of debris chunks with the New/Copy/Delete buttons, select a particular debris chunk from the drop-down list
- Model#: Select the corresponding subobject in the drop-down list.
If your model naming scheme follows the PCS2 standard (debris01, debris02, etc.) PCS2 will automatically assign them as debris chunks.
Cross Sections
A list of points used to scale the explosion effects during the death-roll/explosion animation of capital ships. Each point has a "Depth" value and a "Radius" value.
- Depth corresponds to the coordinate in the Z-axis
- Radius corresponds roughly to the ship radius (measured from the Z-axis) at that depth value
Volition POFs of capital ships typically have a list of 25 cross-section values. Note that if this is not set, the game will use default values instead.
Moment of Inertia
A symmetrical 3x3 matrix that defines the moment of inertia (or rotational inertia) for an object. This defines how much torque is needed for a desired angular acceleration about a rotational axis. This property is given by the shape and mass of an object (specifically by how much mass is located how far away from a given rotation axis), see also https://en.wikipedia.org/wiki/Moment_of_inertia
In FS2 this is used for physics calculations when ships are hit by beam weapons. Beams impart a force that "pushes" on a ship, and if the beam does not hit exactly the center of a ship, this force creates a torque (=moment) on the ship (causing it to rotate). Note that the values seem to define an inverted value for the MOI, meaning that smaller values correspond to higher MOI. Setting all values to 0 results in a POF that does not rotate when hit by beams.
PCS2 offers the option to "Recalculate" the MOI based on model geometry. And while it claims to not be very good at it, the results are usually usable (but typically lower than on Volition models). If more accurate values are needed, it's best to copy the values from a similarly sized/shaped Volition POF.
SubObjects
This shows a list of all the subobjects present in the POF, including the hierarchy. The layout/hierarchy is defined from the source model that you imported into PCS2. You can delete/copy individual subobjects and re-arrange the hierarchy by dragging/dropping subobjects in the navigation pane. See also: https://wiki.hard-light.net/index.php/Tutorial_-_PCS2_Kitbashing
Some remarks about the required hierarchy and naming conventions:
- All "parent" objects (= the main model object for each LOD) need to be at the top-level
- All debris chunks need to be at the top level
- Subobjects that are sub-models (e.g. turrets or any other submodel) need to be children of their respective main model
- Turret arms of multi-part turrets needs to be children of their respective turret base, which in turn need to be children of their respective main model
- Subobjects that are children of one of the main LOD models (detail0, detail1, detail2, detail3) should have names ending in "a" (for detail0), "b" (for detail1), "c" (for deteail2) and "d" (for detail3). So if "turret01a" is attached to detail0, its counterpart on detail1 should be named "turret01b", on detail2 "turret01c" and on detail3 "turret01d". This naming tells the game that those subobjects are representing the same subsystem on different LODs and will act accordingly (this is relevant for collision checks and subobjects animations)
- Subobjects that represent destroyed versions of a subobject (they have the same name but with "-destroyed" appended) need to be in the same level as their intact counterpart. The game will switch to the -destroyed subobject if the respective subsystem gets destroyed
For each subobject, the below listed values are shown on the right side:
- Name: Description
- Rotation Axis: Description
- Offset: Description
- Bounding Box Min: Description
- Bounding Box Max: ooo
- Max Radius: ddd
- Properties: Description
- Subobject Info: Shows stats about the geometry of this subobject
Textures
Select
Description
Texture
Description
Weapon Points
Guns (primaries) and missiles (secondaries) are organized in banks, which is a list of firing points, each of which uses the weapon selected in the loadout for that bank. They are only used on fighters/bombers (small craft). You can define them on capital ships, but the AI will not use them.
Gun Points
Root node for all gun banks. Use the New/Copy/Delete buttons to add or edit gun banks.
Gun Bank
Each gun bank is a list of points (x/y/z) that define the firing points per gun bank. Use the New/Copy/Delete buttons to add or edit individual gun points.
Point
Location (x/y/z) of the firing point
Normal
Normal vector (x/y/z) that defines the direction in which the primary gun is fired.
Missile Points
Root node for all missile banks. Use the New/Copy/Delete buttons to add or edit missile banks.
Missile Bank
Each missile bank is a list of points (x/y/z) that define the firing points per missile bank. Use the New/Copy/Delete buttons to add or edit individual gun points.
Point
Location (x/y/z) of the firing point
Normal
Normal vector (x/y/z) that defines the direction in which the missiles are fired.
Docking Points
Docking points description
Thrusters
Thrusters description
Glow Points
Glow points description
Special Points
Special points description
Turrets
Turrets description
Paths
Paths description
Eye Points
Eye points description
Insignia
Insignia description
Shield
Shield description
Auto-centering
From the POF file comments: The autocentering point was basically just a little convenient extra data we stuck in models where the pivot point of the model wasn't at the center. Since we rotate ships in the tech room by rotating around the pivot point, it looked dumb when the colossus' rear end was in the middle of the screen and it was spinning on it. So the autocenter point was just a point pretty much near the model we could use to push an extra matrix onto our transform stack and have it show up centered around it. The point itself is in model coordinates.
Model comments
A list of arbitrary text fields (can have more than one). PCS2 auto-generates some logging information about the compilation process of that particular POF file. Feel free to add your own comments or credits here.