| Anim8or:
bugs and improvement suggestions
I have been testing Anim8or v.0.51 for
a while, and came up with several ideas, as well as noticed several bugs.
Don't take this too negatively, I'm excited about Anim8or and that's why
I've spent so much time analyzing its user interface and usability. I just
want to give my contribution in making it into a better program, and that's
why I've written this.
General problems
What annoys me with Anim8or editing interface
is the amount of modes: On the top level there's four modes: object, figure,
sequence and scene. These are all clearly different and are justified.
Under that there's however another set
of modes: in object mode, for instance, there's object edit mode, view
edit mode, pivot edit mode and mesh edit mode. Under mesh edit mode there's
again face edit mode, edge edit mode and vertex edit mode. I think that's
far too many.
Whenever I want to change the view, for
instance, it requires a mode change, a tool selection, a view adjustment
operation, a mode change back to editing, and a tool change back to the
tool I used. What I'd prefer is a single "pan" tool, which can be used
for screen moving, scaling or rotating depending on which mouse button
and modifier key I use with dragging.
What also annoys with modes is that the
icons of modes don't clearly indicate that they are modes: with mesh edit
mode I have countless amount of times clicked the object edit mode arrow
instead of selection arrow - the icons are identical!
The other big problem is selecting. As
there's two different tools for selecting, an arrow for point-clicking
and the drag-select tool for selecting several objects, I always find myself
trying the wrong method first and changing the tool. Also the way to add
to the selection with right-click is clearly non-standard: people have
been asking on the forum that what modifier key their should press for
that when shift, ctrl or alt seem to do nothing. And then there's no way
to subtract from the selection once you have added something.
Proposed solutions
Selecting
Let's go to selecting first. I think there's
no need for two separate selection tools. In fact the move tool should
be combined with selection tools as well. Freehand
for instance uses a selection approach similar to this, and I find it very
intuitive and fast to use. So, here's how it should work:
-
Selecting:
Click with the arrow tool to select one
object.
Drag a selection with the arrow tool to
add everything inside the box.
-
Adding to the selection:
Click with shift down to add one object.
Drag a selection with shift down to add
everything inside the box.
-
Subtracting from the selection:
Click with shift down to subtract one
object.
Drag a selection with shift down to subtract
everything inside the box.
This is the same as adding: already
selected will become de-selected, not selected will become selected.
OR
Click with alt down to subtract one object.
Drag a selection with alt down to subtract
everything inside the box.
-
Deselecting everything:
Click outside any of the selected objects.
If a non-selected object is clicked, it will become the selected one.
Clicking an object that is already selected
will do nothing. If there's more than one object selected, this won't deselect
the others.
Selecting should of course work in the
same way with all modes, so you could select multiple bones in the figure
or sequence editor just the same way as selecting objects in the object
editor.
Mesh editing vs. object editing modes
I don't think that there's need for separate
modes for object and mesh editing. The same tools could be used for the
objects and vertices, lines and faces, if objects are represented with
a bit different approach.
I borrow again from Freehand. Although
it's a 2d vector package, there are entities such as point, line and object.
An object is a group of its points and lines, so if the object is ungrouped,
you can edit each line or point separately, but if its grouped, you always
edit the whole object. These objects can be grouped together - along
with other lines and points as well - to form new objects. It is always
possible to make selections that contain both complete objects and individual
points, and perform all moving and rotation operations with them.
This is something what I'd like to see
in Anim8or as well. If mesh editing and object editing were combined and
view mode was reduced to pan tool, then also pivot edit mode could be reduced
to a toggle that makes pivots visible, and the same selecting and editing
tools could be used with pivots as with the other objects. This would reduce
the huge amount of modes under object edit mode into one single and easy-to-use
mode.
Point editing vs. line editing vs. face
editing
Even more important than combining mesh
editing and object editing is to combine the point editing, line editing
and face editing modes. There is no need for editing these in separate
modes: if you click on a surface, you select the surface, if on a point,
you select the point, if on a line, you select the line. It's possible
to have points, lines and faces mixed in the same selection also currently,
and move and rotate those selections, so there's no need to make differences
with the tools for selecting them. (If you select a line, you select also
both end points of it. If you select a face, you select also all edge lines
of it and all corner points of it.) Surfaces are a bit problematic as they
can block points and lines behind them from being selected, but selecting
things should be made in a way that points are preferred over lines and
lines are preferred over faces if a click is placed so that it could select
any of those entities.
Surfaces can also block other surfaces
from being selected if they are in front of them, so there should be a
way to select a surface behind the others also. I suggest an interface
where pressing ctrl and clicking a surface would discard the furthest selected
surface and select the one behind it. Shift-ctrl would keep the furthest
selected surface and select the one behind it. (Example: we have three
overlapping surfaces in an object. To select the one behind all the others,
click once - the closest is selected. Press ctrl and click - the middle
one is selected. Press ctrl and click again, the one behind the others
is selected. If you'd want to select the two surfaces behind the frontmost,
do the last ctrl-click as shift-ctrl-click. If you want to select the closest
and the one behind the others, click once - the frontmost is selected,
ctrl-shift-click - now the two closest are selected, then ctrl-click, the
middle one is discarded - but the closest is kept - and the furthest is
selected.)
If there already are faces, points or lines
in the selection, this would not de-select those. This ctrl-selecting should
just operate in the depth direction behind an already selected face. Similar
mechanism could be used also with points and lines (although it's not so
necessary), as sometimes it's difficult to select points if the object
is oriented to the coordinate system (say, a box looked directly from the
front).
Bugs and suggestions
Here's some quick and more specific lists
of bugs and suggested features.
General:
-
Operations in the menu and the toolbar should
be greyed out if they can't be applied to the selection.
-
Title screen shows up weird
when all documents are closed (1280x1024,16bit color, Riva TNT 1, Detonator2
drivers). Open Anim8or, select file->close twice. (Why twice BTW?
Shouldn't the first "close" close everything?)
-
Del-key should delete the selection (same
as the scissors icon).
-
If implementing 3ds Import/Export is troublesome,
Lib3ds
could be of some help. It seems to be a bit under construction though.
-
The wireframe display could be made a bit
clearer. Now it easily becomes filled with lines and it's difficult to
know which of them are in front and which are in back. I suggest that lines
on the borders of back-facing triangles are drawn with darkish grey instead
of black, so that the front side of the object is more visible than the
back side. Another option could be to have a wider "erasing line" drawn
first with the background colour, and then the actual line. This would
make the depth order of lines more apparent, as lines in the front of others
would be continuos, as the ones behind would be cut from a short distance
when they cross the lines in front of them. Both methods could be combined
as well.
Images: 1. as
currently 2. with
erasing lines 3. with
grey back lines 4. combined
Object editor:
-
Grid snap should work also with scale tools
and rotate.
-
Axis lock should work also when scaling and
rotating.
-
(2d) scaling should be possible to lock so
that it scales the same amount in both directions (shift down maybe).
-
It should be possible to duplicate and copy
materials between objects.
-
Full view should be available in mesh editing
also. It's often very important to see the actual shape of the object instead
of the wireframe when adjusting individual vertices. Individual vertices
could be still shown with ticks that the user can also switch off. It could
be useful to also have a view mode where full view and wireframe are stippled
together as the bones and objects in the figure editor.
Lots of people have asked for boolean operations
- and I would also like them. Making a robust constructive solid geometry
implementation with polygon meshes is not an easy task though, but there's
some libraries freely available that implement it already:
-
IRIT
comprehensive system, also other areas
than CSG
for only non-commercial use
-
GTS
polygonal CSG
polygon reduction (this would be cool
as well...)
distributed under LGPL license
in beta stage
Figure editor:
-
Adding bones between existing bones should
be possible. Currently, if you decide to add a joint somewhere, you have
to reconstruct the whole figure.
-
Pasting bones doesn't work (but cutting works).
-
Why there's not scissors icon in figure editor
(bones have to be removed by cutting)?
-
Selecting several bones works with right mouse,
but not with "edit->select all".
-
"Add cylinder" in the figure editor doesn't
remember the cylinder name and cylinder length, they have to be edited
from properties dialog after adding.
-
Renaming bones in the figure editor should
reflect to the sequence editor as well. Now old bones become "ghosts" in
sequence editor, and all keys have to be copied to newly named bone by
hand.
Sequence editor:
-
Keyframing is annoying, as you have to key
every joint separately. It should be possible to key the whole character
at once. Now after a complex pose I have to check that I have keyed
every joint.
-
Selecting several bones works with right mouse,
but not with "edit->select all".
-
Deleting keys of several joints at once should
work as well. Now it's really annoying, as every axis of every joint has
to be deleted separately.
-
The view-window should scale down when enlarging
the sequence editor, at least when using autofit in the view adjusting
mode.
-
Rotating bones in sequence editor is sticky
- sometimes the joint doesn't rotate at all from some view directions but
sometimes it does. As there's one button linked to each rotation direction,
it should always rotate it, no matter in what position the bone is. (I
suppose the rotation is somehow mapped from the screen to the bone coordinates,
and this results something weird.) And yes, I have a three button mouse.
-
"Ghosts" don't work as I understand their
should: If I show the ghosts, I can't edit the current pose anymore. The
bones move to the position, but as soon as I release the mouse, their
return to their original place.
-
Adding and deleting frames from the sequence
should be possible.
-
Copying and pasting keys in sequence editor
should be possible. It should be possible to select a block from the timeline,
copy it, and paste it into another bone or position in the timeline - thus
making it possible to copy animations between bones and also from one moment
in time to another.
-
Selection could be used for deleting frames
and clearing keys as well. If selection is less than the full height of
the sequence, frames can still be deleted or added - this results removing
or adding frames from only a part of the keys, so that the keys would get
moved into a new position. The length of the whole animation should either
become the length of the longest key array (so that keys will never be
pushed over the end of the sequence), or be totally independent of this,
just the length that's defined in the sequence properties.
-
Cursor in the timeline in sequence editor,
now you see just what frame and what bone is selected, but not what
degree of freedom. (This should be there especially if copying and pasting
is implemented...)
-
Adjusting the position of the root bone should
be possible, for instance walking character has no place that is static
to the ground, and so it requires tweaking in the animation editor to prevent
the character from floating - or adding extra bones for height adjustment.
-
Looping playback in sequence editor (for walk
cycles etc.) Now you have to go to the scene editor for that.
-
In bone editor dialog the order of text boxes
is not correct when browsing through them with tab-key. This may be the
case with other dialogs as well, I didn't bother to go through them all.
-
Selecting the frame in sequence, the frame
should change also when clicking on a certain bone, not just on the sequence
title line. If there's lots of bones in the figure, it's annoying to scroll
all the way up to change the frame and then back down to edit the bone.
-
Several bugs in sequence editor joint list.
The files mentioned here are packed into sequence_bugs.zip:
-
Bone properties can be edited in sequence
editor, but adding a new degree of freedom doesn't update the list down
below (until you leave to the figure editor and come back). Worm-b-01.an8:
Go to sequence editor, expand sequence list, double click the upper long
bone of the figure (joint2), set Z freedom to -180,0,180 - it won't be
in the list. Go to figure editor, come back, and it's there.
-
Removing a degree of freedom doesn't update
the sequence list. Trying to set the key properties (double click in the
sequence list) of removed degree of freedom crashes anim8or. Worm-b-02.an8:
Go to sequence editor, expand sequence list, double click the upper long
bone (joint2), disable Z-freedom - it's still there in the list. Double
click the list entry, anim8or crashes.
-
The same happens when removing a degree of
freedom in figure editor as well. The un-usable degree of freedom stays
in the list until the file is saved and loaded again. Worm-b-02.an8:
go to figure editor, double click the upper long bone, disable Z-freedom,
go to sequence editor - it's still there in the list. Save the file with
a different name. Double click the list entry, anim8or crashes. Load the
saved file - the list is now OK.
-
If the degree of freedom is keyed before disabling,
it will stay in the list also after saving. Double click crashes anim8or.
Worm-b-03.an8:
go to figure editor, double click the upper long bone, disable Z-freedom,
go to sequence editor - it's still there in the list. Save the file with
a different name. (Double click the list entry, anim8or crashes. Restart
anim8or.) Load the saved file - the list is still bad.
-
Adding a degree of freedom to a joint when
figure has been already inserted into a sequence will cause the indices
get mixed: boneNN-? will appear last in the list, not next to other degrees
of freedom of the same bone. (This is just visual and makes finding the
correct bone a bit more difficult) Worm-b-04.an8: Go to
figure editor, double click the lower bone (joint1), set Z freedom to -180,0,180,
go to sequence editor, expand list: Now joint1-Z is on the bottom of the
list, not after join1-X and joint1-Y.
Scene editor:
-
rendering should be possible with bigger screens
than 1024x768
-
moving objects in camera view with scene editor
can crash (hang up) This is probably OpenGL related, as hardware rendering
doesn't work until a reboot is done.
-
the same thing happens also sometimes from
other views as well when moving camera.
-
rotating camera doesn't show the correct camera
direction: after rotating the camera (from side view for instance) and
starting to move it, in the beginning of the move it snaps to the direction
it's actually looking.
-
adjusting camera view (go to camera view and
use tools under eye icon) in the scene editor messes everything up. Camera
moves to strange directions and doesn't come back, grid gets messed up
etc.
The abilities of the current rendering engine
are rather limited. Instead of re-inventing the wheel, there's lots of
rendering engines available for free use - and they usually lack a good
modeler and animator. So evaluating the following options could be useful:
-
Lightflow
C API for application development
Free for non-commercial use
Complex and has lots of features
-
Easyrayer
C API for application development
Free for non-commercial use
Simple with only basic features
-
Ray++
A collection of C++ classes for raytracing
Distributed under GNU Library General
Public License (LGPL).
-
BMRT
Separate program
Industry standard Renderman interface
-
Siren
Separate program
Industry standard Renderman interface
Command line (MSDOS)
I know this is long, and my explanations may
not be clear all the time. If there's some unclear things, feel free to
ask
what I mean.
Last updated
7th August 2000
|