Please note that Crytek is not currently supporting the Softimage XSI exporter. This information is kept for reference. CRYENGINE Licensees needing XSI should contact their CRYENGINE Sales Representative.
The CryExporter is a XSI Addon, which not only contains the Export functionality, but also provides custom objects and a custom shader to make maximum use of the CRYENGINE features. The CryExporter prepares assets created in Softimage XSI for the CRYENGINE Resource Compiler (RC). The assets are stored in the Collada format and within the RC converted to the final game asset. Since the up axis is different then how it is in the engine; the exporter will compensate by swapping the values accordingly.
After the installation of the Crytek addon, you will find the Crytek menu in the XSI menu bar.
Creating a CryExportNode model automatically triggers the CryExportNode: Properties window, where you need to specify various parameters for the final asset.
You can choose the type of asset, i.e. .cgf, .cga or .chr file (refer to CryExport for more details). The name of the final asset is also specified here. The filename will then be added as a prefix to the CryExportNode name. i.e. motocycle_CryExportNode.
Additionally you can choose whether this particular asset should be exported during when using the Export all command (this is useful for test objects). Check merge, if the asset has no internal logic attached and is composed of many separate geometry nodes. The exporter will automatically remove the hierarchy and compress the data for the target asset. This might save a lot of rendering and processing time.
The values are stored in custom properties called ExportProperties. You can easily access them from the Explorer.
Select the object in XSI and press F3. This will bring up a MiniExplorer, tailored for the selection.
This node is a box shaped null helper which serves as a joint in your object. The Default name is CryJointNode. Link it to the CryExportNode model.
The joint needs to be placed between two geometry nodes, so that its bounding box is intersecting with the bounding box of the two objects it should keep together. The null has a text property in which you can adjust the physical parameters for the joint, i.e. limit=10000
Value | Description |
---|---|
limit | Limit is a general value for several different kind of forces applied to the joint. It contains a combination of the values that define the forces applied to the different axis. This value needs to be defined; otherwise the simulation will not work correctly. The following values are optional and are used to fine tune the "limit" settings. |
bend | Maximum torque around an axis perpendicular to the normal. |
twist | Maximum torque around the normal. |
pull | Maximum force applied to the joint's 1st object against the joint normal (the parts are "pulled together" as a reaction to external forces pulling them apart) |
push | Maximum force applied to the joint's 1st object (i.e. the one whose name is listed first in the joint's name, |
shift | Maximum force in the direction perpendicular to normal. |
Joints also support non-fully-rigid (non-6dof) constraints. A full rigid constraint will become a dynamic constraint if its either bend and twist limit gets broken and the joint has a non-0 "constraint_limit" property.
Broken "bends" will become "socket" constraints, and "twists" will become hinges. The newly created dynamic constraint will inherit pull and shift limits from the joint. The constraint's frame will be that of the joint's helper in max.
In order to preserve the meaning of "twisting", however, the axes will be swapped (z of the joint's helper will become the constraint's x - since both represent the "twisting" axis, x will become y, and y will become z).
Thus, for hinges, z axis of the helper should be directed along the desired hinge direction. For socket's, z axis should be the axis the attached part "bends around".
Value | Description |
---|---|
constraint_limit | Force limit for the newly created constraint, is checked when the constraint hits a rotation limit and is being pushed further. |
constraint_minang | |
constraint_maxang | Rotation limits for the constraint (the interpretation is the same as in standalone constraints). The default is no limits. |
constraint_damping | Angular damping (default 0). |
constraint_collides | Whether the constraint parts will ignore collisions with each other (default 1). |
For example, to quickly create an unbreakable hinge constraint: Add the following values to the joint's properties:
The constraint will created at the first activation, regardless of force.
Note that the general "limit = xx" is not required, since you want the limits other than twist to remain unbreakable. Also note that the nodes that have dynamic constraints between them should always be physicalized as entities (not particles).
Create ObjectProperty adds custom properties (text field) to your node.
Use this function to add values to the node a to a geometry node. It enables you to add engine properties to a node, like mass/density, LowSpec Settings, etc.
ObjectProperty Settings | Description |
---|---|
Mass | Defines the mass in kilograms; do not use together with density; i.e. mass=50 |
Density | Numerically defines the density of the material, the mass will be calculated based on the volume of the bounding box, i.e density=2 |
Pieces | Defines the name of pieces that are spawned (and replaces the original object) when a physical impulse on a joint exceeds its limits, i.e. pieces=_wall01_piece01,_wall01_piece02,_wall01_part |
LowSpecLod0 | Identifies the object as the base lod on a lowspec machine, i.e in the properties of a Lod1 or Lod2 |
Entity | Turns a piece into an entity, which the player can interact with. |
Count | Spawns the piece object x-times, i.e. count=50 spawns 50 pieces within the volume of the intact object |
Name | Use it in case scripts need a name, which XSI does not support, like SPACE in the name. i.e. name=Bip01 R Hand |
Character specific Object properties - IK setup for deformation rigs
All values are relative values to the default joint rotation of the phys skeleton. You can also change the rotation of the phys skeleton compared to the deformation mesh in order to get a higher range of motion.
As a general rule of thumb for the rotational limits, you should keep max >min and respect the following limits X, Y -180...180 and z -90 ... 90. Better keep the range of limit smaller than the maximal values given (i.e. 170 to -170). This ensures stability in the physics calculation.
The following values are used to fine tune the behavior of joints. Most of the time they can be neglected, though. Dampening and Spring Tension Stiffness of an angular spring at a joint can be adjusted via "Spring Tension" parameter. A value of 1 means acceleration of 1 radian/second2 (1 radian = 57°). Damping should also be set to some reasonable value (1.0 corresponds to fully dumped oscillations for an isolated joint, 1.0 is the recommended value ).
The Spring Angle can also be adjusted, but has not much influence – therefore Crytek recommends keeping it at 0.