August 24th
2005
Views
: 3D perspective and 2D Orthographic
Differences between 3D view and 2D
view
.
PaceMaker
is designed to be an easy-to-use skeletal animation tool for 3d models.
To run PaceMaker
you will need a 3-button mouse and be able to run in Direct X 7 Windowed 3d
graphics mode at 1024 x 768 and in 32 bit colour .
PaceMaker imports and exports skeletal animated models (Single
Mesh/Multi-Surfaced) in the Blitz3d .b3d format. It imports .3ds and .x static meshes
The
Animation Tab activates Animation mode. While in the Animation Tab you may
view, edit, extract or create animation sequences.
A floating
Mode Button Window allows you to change your Mouse Mode.
If this
gets ‘hidden’ hit ENTER to bring it to the front.
MB1 – Select Joint
MB3 – Toggle Joint Anchor
MB1 - Hold down to Rotate Camera (Pan in 2d
view)
MB2 – Hold down to Zoom View in/out
MB3 – Hold down to Pan View
MB1 – Rotate X Axis
MB2 – Rotate Y Axis
MB3 – Rotate Z Axis
MB1 – Move X Axis
MB2 – Move Y Axis
MB3 – Move Z Axis
You can
play the animation clicking on the ‘Start’ button or use the slider to play
manually. You can change the Animation Mode, Speed, Transition and Sequence
values.
Joints will
display as yellow rather than the normal blue on keyframes
when scrolling through the animation.
Initially
there is only one sequence – All base frames – sequence 0.
From here
you can ‘Extract’ a sequence from existing frames. Click ‘Extract’ – enter a
sequence Name, Start frame and End frame and then click ‘OK’. You can then play
the sequence by selecting it in the list box.
PaceMaker can
export a small function in Blitz3D source that you can include in your program
to Load the model and extract the sequences. PaceMaker also saves this info in
the .b3d file so when you reload this into PaceMaker all your sequences are
reloaded as well.
To create a NEW animation sequence click on ‘Create’.
Enter a
Sequence Name and Number of frames to add. There is no need for a start frame.
Click ‘OK’
The
Animation viewer will now be replaced with the Sequence Creator - a basic Keyframer.
Use the
‘Mode’ buttons to switch between Camera Rotation/Movement (CAMERA), Joint
Rotation (ROTATE) or Joint Translation (MOVE).
You can
also use the shortcut keys F1=Camera, F2=Rotate, F3=Move
The start
frame will be initially set to the Reference frame but this can be modified at
will in the Keyframer. Just rotate the joints to the
desired position and click ‘Set Key’ or Paste in a previously Copied frame.
To create more key frames move the slider to the desired frame and then
set your translations. When happy click ‘Set Key’ to set a key frame. You can scroll through
the animation at any time using the slider.
Note :
SET KEY sets a key frame for EVERY joint whereas SET SEL sets a key for the currently selected
joint only ..
Joints can
be selected either in the tree view or by left clicking on the joint. A
selected joint is shown in red.
To rotate
joints click on ‘ROTATE’ and then use one of the 3 mouse buttons to rotate the
joint. Mouse 1 rotates the X-axis, Mouse 2 the Y-axis and Mouse 3 the Z-axis.
To
translate joints click on ‘MOVE’ and then use one of the 3 mouse buttons to
move the joint. Mouse 1 moves along the X-axis, Mouse 2 the Y-axis and Mouse 3
the Z-axis.
Without IK
enabled, there are no constraints on the joints and so translating a joint that
is not a “Master” will cause that joint only to move deforming the mesh – (of
course that may be the desired result).
Remember
that in order to rotate or translate the entire body you must select a Master
joint – usually the highest in the hierarchy as seen in the tree-view.
The 3d
‘Gizmo’ will light up to indicate which axis is being rotated/moved.
Sometimes
moving the mouse while holding down a button can be difficult. You can use the
cursor keys to emulate the mouse buttons for translation.
Left Cursor = MB1, Down Cursor = MB3, Right
Cursor = MB2
This works
the same way as CREATE but is used to edit the currently selected animation
sequence. It is easier to work on a sequence but you can edit the base frames
directly if you wish.
Delete an
animation sequence. You can delete just the sequence or the underlying
animation keys as well. To delete unwanted keys extract them first
, then delete the sequence and the keys.
The
You can
COPY a frame from one position to another using the ‘Copy’ and ‘Paste’ buttons.
Although the source frame does not necessarily have to be a key frame, the
target frame will become a key frame.
You can
create your keys in any order – PaceMaker automatically works out the ‘tween’ values.
Once you
have created all your keyframes then click on ‘End’.
The
Animation viewer will replace the Keyframer.
The new sequence will appear in the sequence
list box and can be played by selecting it if the ‘Animate Selected’ option is
checked.
The Vertex
Tab allows you to select vertex and assign them to joints.
You may
assign a vertex to from 1 to 4 joints. The vertex weighting value is
automatically calculated for each individual vertex based on distance and the
joints position in the hierarchy.
The
selection controls are slightly different in the Vertex Tab.
MB1 – Click
– Select single vertex – toggle
MB1 + L
Shift – Drag to select multiple Vertex – Exclusive – Green
Box
MB1 + L
Ctrl – Drag to select multiple Vertex – Additive – Blue Box
MB1 + L Alt - Drag to remove
multiple Vertex from selection – Red Box
Uncheck
‘Select Back Facing’ to select forward facing vertex
only. This affects all selection types.
MB2 – Click
– Select Primary Joint – Red when selected- Unselects all extra joints,
MB3 – Click
– Select Extra joints. This acts as a toggle – you may select up to 3 extra
joints up to a total of 4 for weighting purposes.
These
joints appear in a random colour.
The Select
Assigned button selects all vertices assigned to the currently selected joint.
Vertex
selected in this way are shown as green. The brightness of the colour denotes
how much influence or weighting the joint has over the vertex. Vertices
selected normally using the mouse are coloured yellow.
The Select
Unassigned button selects all vertices that are not assigned to any joint.
This unselects
all selected vertices.
Assign
Selected will assign all selected vertex to all selected joints. Weighting
values will be calculated automatically. You may increase the amount of
weighting to give the Primary joint using the Primary Joint Bias slider. The
weighting values are calculated for each vertex individually. If you leave the
Primary Joint Bias slider at 0 then the weighting will be based purely on
distance. Increasing the Primary Joint Bias has the effect of increasing the
influence of the Primary joint over the whole selection. This allows you more
control over the assignment without having to assign manually
If you prefer you can assign the weight values manually by clicking the
‘MANUAL WEIGHTING’ button. This opens the Weights panel where you can adjust the values using the
sliders.
You can use
the checkboxes to ‘lock’ values so they are not affected by changes in the
others. They themselves can still be changed. This panel will adapt itself to
whatever joints you have currently selected and share the weight accordingly.
Use the
ASSIGN button to apply the values to the selected vertex. You can use the
ASSIGN SELECTED button first to apply the auto values and then open the Weights
panel to see what values were assigned (to the last vertex in the selection).
You can
repeat the Assign process as many times as you like. You can assign individual
weightings by selecting one vertex only
For Rigid
vertex assignment you only need to select a Primary Joint.
You can
switch between the Vertex Tab and the Anim Tab
at any time to test the vertex assignment by rotating the joints.
This binds
all selected vertex to its nearest joint. Only one Joint per vertex is
assigned. Selecting all vertices and doing an Autobind
can be a kick start when skinning your model . It
gives you a default Rigid assignment from which to
start. You can then fine tune the assignment and add weighting where required.
After Autobind you can cycle through the joints in
the tree view to see the vertex assignment.
MB1 – Click - Select Joint
MB2 – Select Symmetrical Joint – toggle
MB1 - Hold down to Rotate Camera
MB2 – Hold down to Zoom Camera in/out
MB3 – Hold down to Pan Camera
MB1 – Rotate X Axis
MB2 – Rotate Y Axis
MB3 – Rotate Z Axis
MB1 – Move X Axis
MB2 – Move Y Axis
MB3 – Move Z Axis
Use Move
& Rotate modes to position your joints within the mesh. When you create a
new joint it will be in the position of its parent. Switch to Move mode to
position the joint. While in Move mode you continue creating new joints and
then immediately move then into position.
Selecting a
Symmetrical Joint allows you to move/rotate 2 joints simultaneously – the ‘Sym’
joint will initially mirror along YZ – this can be toggled to YX. Use
MB2 to toggle a Sym joint. Only one Sym joint may be selected at any one time.
Changes in
position made to joints with animation keys will affect the animation.
This is
where you can build,delete
or normalise your entire skeleton. Skeleton operations in this section are
destructive and should only be carried out on models with no animation.
When you
first load a model the camera is pointing towards Z positive. If your model is
correctly rotated for Blitz3d it will also be looking in the same direction as
the camera. You will be looking at the back of the model.
If the
model is facing you then it is looking towards Z negative.
If the
model is facing to your right then it is orientated towards X positive and if
facing to your left is orientated towards X negative.
If your
model is facing up or down then it would be better to use the Adjust Mesh tool to reorientate before binding to a skeleton.
The
Skeleton Tab allows you to build an entire skeleton with a few clicks.
Select the
orientation of your model and Style. Click BUILD to create.
Pacemaker
will attempt to scale the skeleton to your model using correct human
proportions. This may not always be perfectly suitable but the joints can be
easily tweaked. You can then create , insert , delete
or position additional joints in the normal way.
This
removes all joints and any animation from the model and leaves an empty shell.
Handy for replacing the entire skeleton. You can BUILD then DESTROY as often as you wish !
This is quite
a useful tool. It normalises a skeleton. It sets every joints initial rotation
to 0,0,0 . This is good practise because it allows you
to share animations between models much more easily. It also means that it will
be easier to define realistic joint axis for the Ragdoll
& IKtool physics engine.
WARNING :
DESTRUCTIVE This will delete all animation keys.
The Joint Tools
allows you to create, insert and delete joints. New joints are created at the
position of their parent and so may not be immediately visible. New joints are
auto-selected at creation so you just need to switch to MOVE mode to place it.
Once in Move mode you can continue creating new joints immediately moving them
into position.
Creates a new Joint. If it is the first joint this will
be the Master Joint.
The Master Joint will always be created
initially at 0,0,0.
You can
modify the position of the Master Joint if required.
Subsequent ‘creates’ will create a child joint
at the selected joints position.
The new
joint is automatically selected ready for placing.
You can add/insert joints to existing skeletons
with animation keys without disturbing the existing animation. Key positions
are recalculated automatically
Inserts a joint
halfway point between the currently selected joint and its parent.
You can insert joints into existing skeletons
with animation keys without disturbing the existing animation. The animation
keys are automatically adjusted.
Deletes the
currently selected joint. This joints parent becomes the selected joint.
You can delete joints from existing skeletons
with animation keys – of course the animation is deleted as well
!!! Do not delete joints that have animation keys or vertex assigned
unless you are sure.
It is
always desirable, if you are going to use your model in Blitz3d, that it is
facing Z positive, but if not, PaceMaker allows you to create a skeleton in any
of the 4 orientations. Using this option makes sure that your skeleton is as
‘normalised’ as possible i.e. all joints will have an initial rotation of 0,0,0 except for the master joint that will have the same
rotation as the mesh. You can also create your skeleton in any orientation and
then just rotate it to the desired orientation.
If you have rotated any of your joints while
moving them into position, it is a good idea to run the ‘Normalise’ operation
to reset all joints initial rotation to 0,0,0.
Having an
initial rotation of 0,0,0 will allow you to share your animation between models. It is
also much easier to set your model up for Physics if your joints local axis
align more or less with global axis.
The Physics
tab is where you can set joint types and limits. The settings that you make
here will affect how your model moves when you enable the Physics based IK.
You can
also create motion captured animation sequences using the Impact or IK Session
recording tools.
The joint
types available are :
HINGE – this is the most common of the
joint types when creating a rag-doll type setup. You can create a rag-doll
using just this joint type. The limits of movement are defined by HiStop and LoStop. The Axis of
the hinge is defined by the Axis check boxes,
In hinge
joints only AXIS 1 is used.
BALL – this joint allows complete
freedom of movement. The Axis and Hi/Lo stop settings do not have any effect on a Ball
joint.
UNIVERSAL – a Universal joint can be useful
for e.g shoulders and hips. A Univesal
joint has 2 Axis but only the first Axis can be limited. Because of this it is
better to use 2 Hinge joints in series. Future releases may include limits for
the second axis.
FIXED – This joint type is as its name
suggests id fixed. No movement is allowed.
This joint
is handy for e.g temporarily disabling movement on a hinge joint
– or just any joint that you want to be fixed.
A fixed joint is the same as a hinge joint with limits set to 0.
You will
probably only ever have to use the hinge joint when creating your physics
“rag-doll” model but future releases will be including more joint types and
settings.
To see the
Axis and limits of the selected joint check the “Joint Limits” checkbox.
The black
line represents Axis
1. The yellow line perpendicular to the axis represents the joints starting
rotation i.e. Zero. The Dark red line represents the Hi Limit while the lighter
red line represents the Lo Limit. If the Hi or Lo limit is zero then the line
will not display. As you change the values of the Hi and Lo limits you will see
the lines changing in accordance. To set a joint limit back
to zero click on the “0” button next to the required value.
Note: Joint
limits are only displayed for Hinge and Universal Joints Axis 1. Ball joints
and Fixed joint have no axis or limit settings - yet.
You can
test your setting at any time using the “IK” button. Anchor the parent of the
joint you are testing for best results. To anchor a joint use
Mouse button 3 (Middle). If you do not have a middle mouse button you
can use Key “3”
instead.
You can set
an initial force and torque on any joint. Click “TEST” to see the results of
the impact on the selected joint. You can pose the figure before to get a
starting position. To pose the model use the freeform
tools or the IK tool. Use the “COPY” button to copy a pose and the “Paste”
button to paste a pose. This is particularly useful because after testing the
model reverts back to the reference position.
You can
record the results of the impact as keyframed
animation. Set your pose and force and torque values and then click the
“RECORD” button.
Set the
“Max recording in seconds” to a desired value. It is better to set this value
higher than the time you actually wish to record. You can stop the recording at
any time by clicking the “STOP” button. You will then be transferred to the
animation tab to review the recording as keyframed
animation.
The “Keyframe Resolution” will set the frequency of captured keyframes. The default value of 1 means that every frame
will be a keyframe , a setting of 2 will make every second frame a keyframe , a setting of 4 will make every fourth frame a keyframe etc.
If you are
planning on editing the resulting animation then it is better to set the
resolution to a higher value so that you have space between the keyframes. It is then much easier to edit as there are
fewer keyframes to adjust. You file size will also be smaller!
The overall
“Frames per Second” setting determines the overall framerate
of the animation. If you record 2
seconds at 24 fps then you will record
48 frames of animation. How many of these frames are keyframes
is decided by the Keyframe resolution setting.
Check “In
Place” to record the animation In Place. In this mode only the Y Axis (Height)
values will be recorded for the Master Joint. Movement in the X and Z axis can
then be controlled by the programmer at run-time.
You can
modify the global values for, Gravity, Bounce and Friction using the
appropriate spinner. Click on the “D” button beside each value to reset to
default.
You can
also record an IK session. This act in the same way as the impact recorder but
without the impact and the physics model is adjusted to IK.
When you
click on “Rec IK” the recording goes into PAUSE mode.
You can then choose your transform mode, select a joint, set up anchors or any
other operation. Once you are ready to proceed hit the SPACE bar. The SPACE bar
toggles pause/record.
Manipulate
the model as required.
Hit SPACE to pause at any time to change joint
or mode or to anchor/un-anchor any joints.
Hit SPACE
to continue recording or STOP to end recording.
Note – the
recording will stop automatically when the “Max Recording in secs” value is reached.
You will
then be transferred to the animation tab to review the recording as keyframed animation.
You can
enable the IK tool at any time in Animation or Physics mode.
To switch
from free form to IK click the “IK” button.
While in IK
mode you can manipulate the joints in the same way as in freeform.
Rotate mode
applies Torque – Move mode applies force.
The amount
of force or Torque is determined by the speed of the mouse movement.
The faster
you move the mouse – the stronger the force or torque will be.
You can
anchor/ un-anchor any joint at any time using the MB3 (or KEY 3 with mouseover).
It is quite
common to anchor the feet or ankles when you don’t want your model to move its
feet or to anchor a shoulder when you just want to move the lower arm etc.
You can
switch between free-form animation and IK at any time,
however, you must be aware that if, in free-form, you rotate or position a
joint beyond its limits, when you scroll through the animation with IK enabled
and it reaches that position, the joint in question will be snapped back to its
limit. If this is the case then it is better to kill the IK and then scroll
through to preview the animation. You can re-enable IK at any time.
This is
also true if you enable IK when your model is in a pose that places one or more
joints outside of its limits. The offending joint/s will snap back to its
limits when enabling the IK tool.
A collision
plane is created automatically when enabling IK at Y=0 position. You can
disable this feature by un-checking the “Collision Plane” checkbox.
Collisions
with the plane are calculated on the joints themselves the radius of which is a
grid square * 0.1
Owing to
this you may see parts of your model penetrating the collision plane. You can
create extra joints at strategic points to prevent this. In future versions
there will be an option to adjust the radius of the collision spheres..
When the
collision plane is enabled and you invoke the IK tool you may see your model rise slightly. This is due to the fact that the collision
plane is “pushing” the joints up that are semi-penetrating it. The amount of
push is proportional to the amount of penetration.
You can
avoid this by moving the offending feet joints up slightly so that they do not
penetrate the collision plane. If you don’t need the feet to move you can
disable the collision plane and just anchor the feet.
NOTE:
Joints can be anchored/un-anchored at any time – with or without IK enabled. They ,of course, only become anchored when IK is invoked.
Anchored
joints are displayed in GREY.
The IK Tool
is based on real-world physics and expects to work with real-world sized items.
If you are using VERY large or VERY small models you may have problems with the
stability of the Physics given the distance between joint and other factors I
have done my best to scale and compensate as much as possible to allow
different sized models to behave in a similar fashion, however with extremely
large or small models
you may have problems.
For best
results try to keep the size of model’s used between 1 and 50 Blitz units of
height width or depth.
PaceMaker
has an ‘Adjust Mesh’ tool that is used to orientate a mesh – normally after
importing a .3ds or .x static mesh. An imported static mesh can be correctly
orientated before adding a skeleton using this tool. Use of this tool destroys
all bone and animation data so it is only to be used on an ‘empty’ mesh.
Mouse
Button 1 click – KEY 1
Mouse
Button 2 click – KEY 2
Mouse
Button 3 click – KEY 3
Mouse
Button 1 Down – Left Cursor
Mouse
Button 2 Down – Right Cursor
Mouse
Button 3 Down – Down Cursor
Camera Mode
– F1
Rotate Mode
– F2
Move Mode –
F3
Toggle Grid
– F5
Toggle
Plane – F6
Enter –
Bring Mode buttons to front if hidden.
Toggle 3D /
2D view – KEYPAD ‘0’
View Front - KEYPAD ‘8’
View Back - KEYPAD ‘2’
View Left –
KEYPAD ‘4’
View Right
– KEYPAD ‘6’
View Top – KEYPAD ‘5’
View Bottom
KEYPAD ’3’
Toggle
Camera AutoPan selected joint – KEYPAD ‘
+ Zoom
Camera in 2d mode – KEYPAD ’ +’
- Zoom
Camera in 2d mode – KEYPAD ‘ –‘
In 3D
perspective mode Mouse button 1 controls the camera rotation. In 2D
orthographic mode there is no rotation and so the PAN function is promoted from
MB3 to MB1.
You can
auto-pan the view to the selected joint by selecting the “Auto Pan” checkbox.
BlitzUI GUI
Library written by Chris Fuller.
‘Dwarf’, ‘Robot’,
‘Ninja’, ‘Zombie’, ‘Turtle’ and MiB .b3d animated models
are by Psionic.
Physics
Engine – Open Dynamics Engine http://www.ode.org
via JV-ODE physics wrapper for Blitz3d
PaceMaker
conceived, designed and programmed by Ricky Smith.
Please send
feedback, comments or questions to rsmith@unilink.co.uk
http://www,gOddesey.com/pacemaker.htm
LICENSE
This
software, including documentation, source code, object
code
and/or additional materials (the "Software") is owned
by gOddysey
Software.
By
registering you obtain the non-exclusive,
non-transferable, royalty free right to use the software.
LIMITED
WARRANTY
IN NO EVENT
SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO
ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OF THIS
SOFTWARE,
ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
EVEN IF THE
AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
THE AUTHORS
AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY
WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE,
AND NON-INFRINGEMENT. THIS SOFTWARE IS
PROVIDED ON
AN "AS IS" BASIS, AND THE AUTHORS AND
DISTRIBUTORS
HAVE NO OBLIGATION TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.