#FieldRend bug workaround
3 messages in this thread
As of this writing, the current version of Imagine is 3.1, and it suffers
from a bug that manifests itself when you combine pop morphing with field
rendering. I'm very happy to share with you a workaround for it!
As you know, Imagine doesn't allow morphing if the source and target
objects have different structures, e.g. different point counts. Imagine
supports what it calls "pop morphing", which is basically an instantaneous
morph: a target object "pops" into view at the same time the source object
"pops" out of existence. This is implemented by going into the Action
editor and altering timelines like this:
1
1 2 3 4 5 6 7 8 9 0
AAAAAAAAA B BBBBBBB Actor
A Posn.
OBJECT A Align
A Size
(Other timelines omitted for clarity)
The "A" timelines were created when you originally loaded object A in
Stage editor frame 1. You then went into Action, shortened the A Actor bar
to frames 1-5, and added two Actor bars using object B: one at frames 6-6
and one at frames 7-10. This creates a 1-frame morph to object B on frame
6, which essentially means no morph at all; then a 4-frame morph to object
B on frames 7-10, which has no effect since we're morphing from B to B.
(Side note: you must deselect "Spline interpolation" in the last timeline,
i.e. frames 7-10. Even though you're morphing from object B to the SAME
object, Imagine will complain if Spline is left on. This is unrelated to
our bug, but is nice to know for anyone who's planning to pop one object
into another)
If you render this sequence from the Project editor, you'll see object A
from frames 1-5, and object B from frames 6-10.
Now comes the bug.
Turn "Field render" on in the Modify Subproject requester, and re-render,
you'll get an error message when Imagine reaches 50.00% complete on frame
5: "Warning: can't morph objects with different point counts". Why?
Because with field rendering, the second half of the frame will be
computed at time index 5.5, and Imagine will attempt to interpolate all
values from frame 5 to 6. This works fine for position, color and such,
but falls apart when Imagine tries to interpolate between Actor bar object
definitions.
(I had gone away on vacation and had left my computer to re-render a
170-frame animation, using this spiffy new field render setting. Boy, was
I miffed when I returned to find this error message hanging on frame 74)
And now, the workaround!
It's simple: use two different objects. Just create the animation using
only object A. When you're satisfied, select object A in Stage, and pick
Object/Clone. Save changes and go to Action. You should see this:
1
1 2 3 4 5 6 7 8 9 0
AAAAAAAAAAAAAAAAAAA Actor
A AAAAAAAAAAAAAAAAA Posn.
OBJECT A AAAAAAAAAAAAAAAAA Align
A Size
AAAAAAAAAAAAAAAAAAA Actor
A AAAAAAAAAAAAAAAAA Posn.
OBJECT.1 A AAAAAAAAAAAAAAAAA Align
A Size
(In this example, I added motion to object A by establishing keyframes on
frame 10; this is animation, after all)
Now, all I need to do is make object A disappear after frame 5, and object
B appear on frame 6:
1
1 2 3 4 5 6 7 8 9 0
AAAAAAAAA Actor
A AAAAAAAAAAAAAAAAA Posn.
OBJECT A AAAAAAAAAAAAAAAAA Align
A Size
BBBBBBBBB Actor
A AAAAAAAAAAAAAAAAA Posn.
OBJECT.1 A AAAAAAAAAAAAAAAAA Align
A Size
This substitutes objects, but maintains all settings you'd created for A.
Best of all, it renders just fine in field render mode! Until Impulse
fixes the problems field rendering encounters on half-frames, this is a
quick and flawless solution.
Blaq!
Hi,
thanks for this workaround. I have been using this thing in other situations
when I wanted to "morph" object that didn't morph (becaue of different number
of points).
-David
Regarding your field render bug, nice save! Keep 'em coming.
Tim