Before we get started, thanks to c0mp1le, Ob1-Kenobi & Mr.Mitchell for their invaluable advice during the creation of this tutorial.
#exec commands are used to import resources (e.g. models, textures, sounds, etc.) into a .u file, the resource can be in the relevant Unreal format (e.g. utx, uax) or in one of a number of other formats that UCC and UnrealEd support.
#exec commands can either be placed in the body of a UnrealScript class or typed directly into the UnrealEd console.
Miscellaneous Resources
#exec OBJ LOAD
This #exec command will import a pre-existing Unreal resource, commonly a .utx file.
Parameter
|
Description
|
Possible values
|
Optional?
|
FILE
|
specifies the path of the resource to import
|
|
|
PACKAGE
|
specifies the name of the package to import resource into
|
|
|
Example:
#exec OBJ LOAD FILE=..\Textures\JWSKy.utx PACKAGE=SE
|
#exec TEXTURE IMPORT
Imports a texture from a .pcx file.
Parameter
|
Description
|
Possible values
|
Optional?
|
NAME
|
specifies the name of the texture in Unreal
|
|
|
FILE
|
specifies the path of the texture to import
|
|
|
GROUP
|
which group in the current package to place the texture
|
|
Yes
|
MIPS
|
whether or not mip-maps should be generated for this texture, should be OFF for textures that'll be used by UWindows (e.g. new HUD icons)
|
ON/OFF
|
Yes
|
FLAGS
|
2 = masked texture
|
|
Yes
|
Example:
#exec TEXTURE IMPORT NAME=Light FILE=Textures\Light.PCX GROUP="Icons" MIPS=OFF FLAGS=2
|
#exec FONT IMPORT
Import a font texture for use as a font in Unreal.
Parameter
|
Description
|
Possible values
|
Optional?
|
FILE
|
specifies the path of the font texture to import
|
|
|
NAME
|
specifies the name of the font in Unreal
|
|
|
Example:
#exec FONT IMPORT FILE=Textures\MedFont.pcx NAME=MedFont
|
#exec NEW TRUETYPEFONTFACTORY
Import a true type font for use as a font in Unreal. For a thorough explanation of the nuances of importing true type fonts read this.
Parameter
|
Description
|
Possible values
|
Optional?
|
PACKAGE
|
specifies the name of the UTX package to import the font into (but only if importing from within UnrealEd)
|
|
Yes
|
NAME
|
specifies the name of the font in Unreal
|
|
|
FONTNAME
|
specifies the Windows name of the font to be imported, e.g. "Arial"
|
|
|
HEIGHT
|
height of the font in pixels, which is passed to the Windows' CreateFont() API call
|
|
|
ANTIALIAS
|
whether or not to anti-alias the font when importing it (1 = anti-aliased)
|
0/1
|
|
CHARACTERSPERPAGE
|
specifies the number of characters per 256x256 pixel font texture. The default is 64
|
|
Yes
|
XPAD
|
adds horizontal space between characters
|
|
Yes
|
YPAD
|
adds vertical space between characters
|
|
Yes
|
Example:
#exec NEW TRUETYPEFONTFACTORY NAME=Tahoma30 FONTNAME="Tahoma" Height=30 ANTIALIAS=1 CHARACTERSPERPAGE=32
|
#exec AUDIO IMPORT
Import a sound from a .wav file.
Parameter
|
Description
|
Possible values
|
Optional?
|
FILE
|
specifies the path of the sound to import
|
|
|
NAME
|
specifies the name of the sound in Unreal
|
|
|
GROUP
|
which group in the current package to place the sound
|
|
Yes
|
Example:
#exec AUDIO IMPORT FILE="Sounds\ChainSaw\ChainIdle.WAV" NAME="ChainIdle" GROUP="ChainSaw"
|
Vertex Animation
Importing models into Unreal requires an understanding of the LOD system, read up on it here.
#exec MESH LODPARAMS
Configure various LOD options for a mesh (vertex or skeletal).
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the mesh to configure LODing for
|
|
|
STRENGTH
|
per-mesh linear LOD scaler, default = 1.0, higher values result in more aggressive LOD-culling
|
|
|
MINVERTS
|
the minimum number of vertices you want your mesh to always retain at the farthest distances
|
|
Yes
|
MORPH
|
the proportion of vertices that are allowed to contribute to the smooth morphing, 0.0 for no morphing
|
0 - 1
|
Yes
|
ZDISP
|
specifies in UUs the distance at which the LOD culling kicks in
|
|
Yes
|
Example:
#exec MESH LODPARAMS MESH=LodMesh STRENGTH=1.0 MINVERTS=14 MORPH=0.25 ZDISP=90.0
|
#exec MESH IMPORT
Imports a vertex mesh (_d.3d).
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the name of the mesh in Unreal
|
|
|
ANIVFILE
|
specifies the path of the animation file
|
|
|
DATAFILE
|
specifies the path of the vertex mesh
|
|
|
X, Y, Z
|
set the origin of the mesh
|
|
Yes
|
MLOD
|
whether or not this mesh should be LODed
|
0/1
|
Yes
|
LODSTYLE
|
bit field with switches to change the style of building the pre-collapse sequence
|
1, 2, 4, 8, 16
|
Yes
|
LODFRAME
|
specify which animation frame rather than the default 0th frame to be sampled for generating the collapse sequence
|
|
Yes
|
LODNOTEX
|
causes texture coordinates to be ignored when importing
|
|
Yes
|
LODOLD
|
maintain the original order of animation vertices as they are imported
|
|
Yes
|
Example:
#exec MESH IMPORT MESH=Duke ANIVFILE=MODELS\Duke_a.3d DATAFILE=MODELS\Duke_d.3d X=0 Y=0 Z=0 LODSTYLE=1
|
#exec MESH ORIGIN
Sets the origin of a mesh.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the mesh to set the origin of
|
|
X, Y, Z
|
set the origin of the mesh
|
|
Yes
|
YAW, ROLL, PITCH
|
set the rotation of the mesh
|
|
Yes
|
Example:
#exec MESH ORIGIN MESH=Duke X=0 Y=0 Z=0
|
#exec MESH SEQUENCE
Define an animation sequence.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the mesh to create an animation sequence for
|
|
|
SEQ
|
specifies the name of the animation sequence
|
|
|
STARTFRAME
|
specifies the frame at which the animation sequence starts
|
|
|
NUMFRAMES
|
specifies the number of frames in the animation
|
|
|
RATE
|
frames per second (though the duration of the anim is set in PlayAnim() calls)
|
|
Yes
|
GROUP
|
which group to place the anim in
|
|
Yes
|
Example:
#exec MESH SEQUENCE MESH=Duke SEQ=All STARTFRAME=0 NUMFRAMES=265
|
#exec MESH NOTIFY
Create a notifcation callback.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
the mesh to link the notification to
|
|
|
SEQ
|
specifies the name of the animation sequence
|
|
|
TIME
|
call the notify function after this fraction of the animation has played (e.g. 0.1 = 1/10th)
|
0 - 1
|
|
FUNCTION
|
specifies the name of the function to call
|
|
|
Example:
#exec MESH NOTIFY MESH=Duke SEQ=All TIME=0.1 FUNCTION=LandThump
|
#exec MESHMAP NEW
Define a meshmap to apply textures to a mesh.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESHMAP
|
specifies the name of the meshmap
|
|
|
MESH
|
specifies the mesh which the meshmap applies to
|
|
|
Example:
#exec MESHMAP NEW MESHMAP=Duke MESH=Duke
|
#exce MESHMAP SCALE
Change the scale of a meshmap.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESHMAP
|
specifies the meshmap to scale
|
|
|
X, Y, Z
|
how much to scale the meshmap on each axes
|
|
|
Example:
#exec MESHMAP SCALE MESHMAP=Duke X=0.1 Y=0.1 Z=0.2
|
#exce MESHMAP SETTEXTURE
Assign a texture to part of a meshmap.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESHMAP
|
specifies the meshmap to assign textures to
|
|
|
NUM
|
where to place this texture in the MultiSkins array
|
|
|
TEXTURE
|
specifies the name of the texture to apply, this texture should already have been imported
|
|
|
Example:
#exec MESHMAP SETTEXTURE MESHMAP=Duke NUM=0 TEXTURE=Duke0
|
Skeletal Animation
Essential reading for the skeletal animation system can be found here.
#exec MESH MODELIMPORT
Imports a skeletal mesh (.psk).
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the name of the mesh in Unreal
|
|
|
MODELFILE
|
specifies the path of the model to import
|
|
|
X, Y, Z
|
set the origin of the mesh
|
|
Yes
|
MLOD
|
whether or not this mesh should be LODed
|
0/1
|
Yes
|
LODSTYLE
|
bit field with switches to change the style of building the pre-collapse sequence
|
1, 2, 4, 8, 16
|
Yes
|
LODFRAME
|
specify which animation frame rather than the default 0th frame to be sampled for generating the collapse sequence
|
|
Yes
|
LODNOTEX
|
causes texture coordinates to be ignored when importing
|
|
Yes
|
LODOLD
|
maintain the original order of animation vertices as they are imported
|
|
Yes
|
Example:
#exec MESH MODELIMPORT MESH=Tosc MODELFILE=MODELS\Tosc.psK LODSTYLE=8 X=0 Y=0 Z=0
|
#exec ANIM IMPORT
Import an animation file (.psa).
Parameter
|
Description
|
Possible values
|
Optional?
|
ANIM
|
specifies the name of the UAnimation object |
|
|
ANIMFILE
|
specifies the path of the animation file to import
|
|
|
IMPORTSEQS
|
1 signifies that the animation sequence info embedded into the binary .PSA file by the Max exporter is to be used
|
|
|
MAXKEYS
|
sets an adjustable squeeze on the number of keys in the animation as a whole
|
|
Yes
|
COMPRESS
|
does the same as MAXKEYS, does the same but with a simple factor ranging from 0 to 1
|
0 - 1
|
Yes
|
Example:
#exec ANIM IMPORT ANIM=SkAnimTest ANIMFILE=models\10.psa IMPORTSEQS=1 COMPRESS=0.9 MAXKEYS=9999999
|
#exec ANIM SEQUENCE
Import an animation sequence.
Parameter
|
Description
|
Possible values
|
Optional?
|
ANIM
|
specifies the name of the animation
|
|
|
SEQ
|
specifies the name of the animation sequence
|
|
|
STARTFRAME
|
specifies the frame at which the animation starts
|
|
|
NUMFRAMES
|
specifies the number of frames in the animation
|
|
|
RATE
|
frames per second (though the duration of the anim is set in PlayAnim() calls)
|
|
|
Yes
GROUP
|
which group to place the anim in
|
|
Yes
|
Example:
#exec ANIM SEQUENCE ANIM=TozcAnim1 SEQ=All STARTFRAME=0 NUMFRAMES=25 RATE=0.2 GROUP=Default
|
#exec ANIM DIGEST
Once you've imported animations, a DIGEST command needs to be issued, at which point all sequences are compressed into the internal key track format.
Parameter
|
Description
|
Possible values
|
Optional?
|
ANIM
|
specifies the UAnimation object to "digest" the animations into
|
|
|
VERBOSE
|
specify 'VERBOSE' to see more information in UCC.log after the rebuild
|
|
Yes
|
Example:
#exec ANIM DIGEST ANIM=SkAnimTest VERBOSE
|
#exec ANIM NOTIFY
Create a notifcation callback, must be placed after the ANIM DIGEST.
Parameter
|
Description
|
Possible values
|
Optional?
|
ANIM
|
specifies the animation to link the notification to
|
|
|
SEQ
|
specifies the name of the animation sequence
|
|
|
TIME
|
call the notify function after this fraction of the animation has played (e.g. 0.1 = 1/10th)
|
0 - 1
|
|
FUNCTION
|
specifies the name of the function to call
|
|
|
Example:
#exec ANIM NOTIFY ANIM=TozcAnim1 SEQ=All TIME=0.1 FUNCTION=LandThump
|
#exec MESH DEFAULTANIM
Link a UAnimation object to a skeletal mesh at compile time.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the skeletal mesh to link the animations to
|
|
|
ANIM
|
specifies the UAnimation object to link
|
|
|
Example:
#exec MESH DEFAULTANIM MESH=MeshSk ANIM=SkAnimTest
|
#exec MESH BOUNDINGBOX
Override the engine's default bounding box with one that better fits the model.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the mesh to define the bounding box for
|
|
|
XMIN, YMIN, ZMIN
|
define the lower bounds of the box
|
|
|
XMAX, YMAX, ZMAX
|
define the upper bounds of the box
|
|
|
Example:
#exec MESH BOUNDINGBOX MESH=MeshSk XMIN=-64.0 YMIN=-64.0 ZMIN=-64.0 XMAX=64.0 YMAX=64.0 ZMAX=64.0
|
#exec MESH WEAPONATTACH
Define which bone is the weapon carrier.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the mesh we're defining the weapon bone for
|
|
|
BONE
|
the name of the bone to assign as weapon carrier
|
|
|
Example:
#exec MESH WEAPONATTACH MESH=MeshSk BONE="Right hand"
|
#exec MESH WEAPONPOSITION
Define the location of the attachment point, relative to the weapon carrier bone.
Parameter
|
Description
|
Possible values
|
Optional?
|
MESH
|
specifies the mesh we're dealing with
|
|
|
YAW, PITCH, ROLL
|
specifies the rotation of the weapon attachment point
|
|
|
X, Y, Z
|
specifies the location of the weapon attachment point
|
|
|
Example:
#exec MESH WEAPONPOSITION MESH=MeshSk YAW=50 PITCH=0 ROLL=10 X=0.0 Y=0.0 Z=0.0
|
|