ARTIST PIPELINE DOCS: Character Creation (and use of Cal3d/ReplicantBody)
TUT01_MAX 7
The latest version of the Cal3d exporter for Max is bundled with Delta3d 1.0 in the “..\Delta3D\ext\bin\” directory. If you need to download them seperately, you can get them here: Cal3d Exporters
**3DS MAX

################################################ ## Skeleton - Cal3d cfg File ################################################ scale=0.5 ################# Skeleton ################# skeleton=humanTEST.csf ################# Meshes ################# mesh=humanTEST.cmf ################# Animations ################# animation=human_RunAnim.caf animation=human_WalkAnim.caf ################# Materials ################# material=LegMaterial00.crf material=ArmMaterial01.crf material=HeadMaterial02.crf material=BodyMaterial03.crf
###################################
## Replicant Body Template
##
## All Cal3D data files should be stored in the same directory
###################################
path “./” # (“path to Cal3D data files”)
skeleton “humanTEST.cfg” # (“name of Cal3D skeleton data file”)
default_act "ACT_WALK" # ("action to use at startup")
scale 0.025 # (Scaling to use)
foot_offset offset_float # (Distance between foot bone and ground)
###################################
## Bones used when calculating character speed
###################################
ContactBones {
bone_name "Skeleton R Foot" # ("name of bone in skeleton")
bone_name "Skeleton L Foot" # ("name of bone in skeleton")
}
###################################
## Bones from which you can get the direction
###################################
DirectionBones {
head_bone "Skeleton Head" # ("name of bone in skeleton")
} ###################################
## A core character can consist of several animations
##
## Each animation is connected to an action name
##
## It is the action name that is used when refering to
## an animation/animation type
###################################
Animation {
name “run” # (“name of animation”)
filename “human_RunAnim.caf” # ("name of cal3d file with animation”)
act_name “ACT_RUN” # ("name of action connected to")
act_weight 1 # (Default is 1)
speed 2 # (Default is 0)
is_looped 1 # (0 if non-looping)
is_default 0 # (0 if not default)
}
Animation {
name “walk” # (“name of animation”)
filename “human_WalkAnim.caf” # ("name of cal3d file with animation”)
act_name “ACT_WALK” # ("name of action connected to")
act_weight 1 # (Default is 1)
speed 2 # (Default is 0)
is_looped 1 # (0 if non-looping)
is_default 0 # (0 if not default)
}
##################################
## AnimationDegree is used to combine two actions
## that are executed in different directions
##
## For example, a simple "look at" can be done by specifying
## an animation of head bone turned right as animation 1 with
## "degree" set to 90 (the animation must have at least 2 frames)
## Animation 2 should then contain an animation with head bone
## turned left and "degree" should be set to -90
##################################
AnimationDegree {
name “head_turn” # (“name of animation”)
act_name “ACT_LOOK” # (“name of action connected to”)
act_weight 1 # (Default is 1)
Animation {
name “head_left” # (“name of animation 1”)
degree 90 # (angle_representat_of_anim_1)
}
Animation {
name “head_right” # (“name of animation 2”)
degree -90 # (angle_representat_of_anim_2)
}
}
##################################
## AnimationSpeed is used the same way as AnimationDegree
## but in this case the speed can be varied
##################################
AnimationSpeed {
name “head_turn_speed” # (“name of animation”)
act_name “ACT_LOOK_SPEED” # (“name of action connected to”)
act_weight 1 # (Default is 1)
default_speed 0.5 # (Default is 0)
Animation {
name “head_left” # (“name of animation 1”)
degree 90 # (angle_representat_of_anim_1)
}
Animation {
name “head_right” # (“name of animation 2”)
degree -90 # (angle_representat_of_anim_2)
}
}
##################################
## AnimationBlend can contain two or more animations
## The sum of all animations’ weights should add up to 1
##################################
AnimationBlend {
name “walk_salute” # (“name of animation”)
act_name “ACT_WALK_SALUTE” # (“name of action connected to”)
act_weight 1 # (Default is 1)
Animation {
name “human_WalkAnim” # (“name of animation 1”)
weight 0.5 # (blend_weight_of_anim_1)
}
Animation {
name “salute” # (“name of animation 2”)
weight 0.5 # (blend_weight_of_anim_2)
}
}
##################################
## AnimationScript can have one or more animations
## start_time is only used when the animations are
## treated as prioritized. Other animations are queued
##################################
AnimationScript {
name “headturn_salute” # (“name of animation”)
act_name “ACT_HEADTURN_SALUTE” # (“name of action connected to”)
act_weight 1 # (Default is 1)
Animation {
name “head_left” # (“name of animation 1”)
start_time 0 # (start_time_of_anim_1)
}
Animation {
name “salute” # (“name of animation 2”)
start_time 0.5 # (start_time_of_anim_2)
}
}
##################################
## A core character can consist of several meshes
##################################
Mesh {
name “body” # (“name of mesh”)
filename “humanTEST.cmf” # (“name of Cal3D data file with mesh”)
is_default 1 # (0 if not default)
}
##################################
## The materials get their material ids in the order
## they are loaded. Thus, the first loaded material
## gets id 0, the second gets id 1, and so on
##################################
Material {
filename “humanTEST.crf” # (“name of Cal3D file with material”)
}
##################################
## A material set is used to connect thread ids
## (which get their id parsing by their name for
## a figure in 3DS) to material ids
##################################
MaterialSet {
name “original” # (“name of material set”)
is_default 1 # (0 if not default)
Connection {
thread_id 0 # (thread_id_int)
material_id 0 # (material_id_int)
}
}
##################################
## Conflicting Actions are 2 or more animations which
## cannot be executed at the same time.
##################################
ConflictingActions {
action_1 “ACT_RUN” # (“name of action 1”)
action_2 “ACT_RUN_BACKWARD” # (“name of action 2”)
}
##################################
## The InBetweenActivity is used to transition
## smoothly between different activities, that is,
## use another activity in-between if their end
## and start poses differs dramatically
##################################
InBetweenActivity {
start_activity "ACT_WALK" # (“name of start activity”)
end_activity "ACT_SPRINT" # (“name of end activity”)
inbetween_activity "ACT_RUN" # (“name of inbetween activity”)
}