Morphing, a wasted feature?

General Moho topics.

Moderators: Víctor Paredes, Belgarath, slowtiger

User avatar
J. Baker
Posts: 1086
Joined: Wed Mar 23, 2005 7:22 pm
Location: USA
Contact:

Morphing, a wasted feature?

Post by J. Baker »

From my knowledge, the morphing feature has always been a wasted feature. And here's why...

When you morph something, that means you created an object on one frame and then created another object on some frames later. But the thing is, in order for these two objects to morph properly, they have to have the same amount of control points. Or else you get a funky morph or no morph at all, depending on the it was coded for that app. So you select the second object and some how tell it to morph with the first object.

Anyone see why this is pretty pointless yet? You might as well create your object and either use bones or edit the control points in later frames. As you're doing the same thing anyway, when using a morphing feature.

So, unless someone has coded a way for two different objects to have two different amount controls points, you're wasting your time asking for a morphing feature.

And as for morphing images, it's usually nothing but fading one in and fading another out.

So just take the time to learn to animate no matter how bad your first tries may be. You'll eventually get better. ;)
User avatar
heyvern
Posts: 7042
Joined: Fri Sep 02, 2005 4:49 am

Post by heyvern »

Some programs like Flash for instance and possibly "Solo" or whatever it is (I never tried it) use a different type of morphing than what you describe.

They don't rely on matching number of points but morph the "shape". So you don't have to have the same number of points, it just morphs from a shape to a shape. In Flash this is based on the curves or vectors. When you do a morph in Flash you can see how the software will sometimes have no idea what to do with some of those shapes.

Sometimes you don't always get what you expect. I've never been happy with the results in Flash... they look... fake... shape morphing in Flash looks like computer generated morphing... I don't like it. but that's just me. There is of course "shape hinting" or something like that that can help in morphing.

Photographic morphing (not fading in and out, but true morphing) is also possible with specialized software, but it is based on points placed by the user, it isn't going to be automatic. It usually requires extensive set up and placement of common points in both images, like in a face morph, the points would be on the eyes and nose, the mouth etc.

There are some open source programs I've played with that do this. It is tricky.

I think what many AS users are hoping for is the first type of morphing that is independent of the number of points. I seriously doubt we will see this any time soon in AS. I just don't think it would be easy to do based on the way AS works by animating point to point.

What you described as a "wasted" feature... well... not exactly. Moving the points on another frame to create a "morph like" transition always existed in AS/moho. It is the OTHER type that is desired. The one independent of points count. AS is different than similar applications. It is based on moving points. Programs like Flash allow manipulation of the shapes directly with out even seeing the points (take a look at the points in a Flash drawing... HOLY COW there's a lot of points.)

I don't desire morphing in AS it to be honest. How would you place a key frame in the middle of a morph between two different shapes that don't have matching points? Would you be able to create a whole new vector layer from it?

What in the world would happen to disappearing and reappearing points during a morph? The feature goes beyond just being able to morph... the program itself would have to have a totally new type of vector layer. Probably a new type of curve description completely.

Currently you can't add and remove points DURING animation, even by hand. That limitation would have to be overcome somehow.

to those who think "morphing" is just a simple new feature that efrontier is too lazy to implement... think again. It is a MAJOR feature that would require a ton of work.

I just don't see it happening. But I could be wrong. ;)

-vern
User avatar
J. Baker
Posts: 1086
Joined: Wed Mar 23, 2005 7:22 pm
Location: USA
Contact:

Post by J. Baker »

Those other programs you speak of must morph based on X/Y location of a pixel then. Which could definitly be done. But if you're as picky as I am, I don't think morphing that way would be as exact as I would want it to be. There's might be times where an edge doesn't bend the precise way you might have thought. As you may have noticed, I prefer to have control of my shapes through control points. You place them exactly where you want them instead of relying on someones morph code to do it for you.

But everyone has different needs and I wouldn't mind the feature. But it's just best to learn to animate through control points I think. Just think, we could be drawing frame by frame. Now that would take much more time then I care for. ;)
User avatar
heyvern
Posts: 7042
Joined: Fri Sep 02, 2005 4:49 am

Post by heyvern »

There's might be times where an edge doesn't bend the precise way you might have thought.
Yup!

I spent ages once on a Flash morph. I needed one shape to morph to a logo. The client thought this would be "cool". I tried in vain to talk them out of it. I think they saw a rerun of "Willow" and got all nostalgic. ;) Fiddled and fiddled with it and never was satisfied with the results.

I too would embrace morphing of that type in AS if it came along... I'm just not going to worry about it or long for it. I can take it or leave it at this point.

There are so many things that can be done with AS I haven't even pushed it to the limits yet.

-vern
User avatar
slowtiger
Posts: 6257
Joined: Thu Feb 16, 2006 6:53 pm
Location: Berlin, Germany
Contact:

Post by slowtiger »

The usefulness of "morphing" is highly overestimated, IMO. It just makes no sense, except in stories with a higher amount of magic.

Morphing doesn't make good body turns. It doesn't help in any of the more difficult tasks in animation. The kind of film where morphing makes sense is a so small fraction of all possible animation that no programmer should bother much about implementing that feature again anywhere, since there are useable solutions both for point and bitmap morphing.

There's only one aspect which is worth exploring: any scene in AS does only work with the same amount of shapes and points per layer from start to end. What I like to have is a new kind of layer for frame-by-frame animation. It would be similar to a switch layer except that I don't have to create switch keys first, just click and create a new (empty, or a copy of the last) key.

I could create the same result with an ordinary switch layer, but right now the amount of clicks necessary to do this makes it prohibitive.
User avatar
funksmaname
Posts: 3174
Joined: Tue May 29, 2007 11:31 am
Location: New Zealand

Post by funksmaname »

slowtiger is right... what this thread made me think is that a layer must contain the same number of points througout an animation, which means 'morphing' is just plane ol' point manipulation which you'd have to do to create your target...

i would be more interested in what slowtiger suggested so you can make trad-style animation, even in sections of a sequence, without using switch layers which is pretty cumbersome.

Also - I'd be more intereted shape layer ordering and line hide/show on the time line than morphing as a feature...
slice11217
Posts: 279
Joined: Thu Mar 30, 2006 6:12 pm
Location: Verona, New Jersey

Post by slice11217 »

I would think that if anyone had proved morphing to not be a wasted feature, it would be the wonderful artists at Greykid. They have a lot of rotations that use the morphing of point animation to accomplish the task.

-Or are you talking about something else entirely?

I would agree that the effect as seen in 'Willow' or the Michael Jackson video has had its day and that generally speaking, the 'wow' factor has worn off, but that doesn't mean that it's a 'wasted' effects element. It's just that no one since then has come up with any other use for it.
User avatar
heyvern
Posts: 7042
Joined: Fri Sep 02, 2005 4:49 am

Post by heyvern »

They have a lot of rotations that use the morphing of point animation to accomplish the task.
Yes but that type of animation is exactly what AS is designed to do. The whole program is built specifically to move points over time. Point to point motion is what makes AS unique. I may be wrong but I think there was a time when it didn't even have bones.

The morphing that some focus on is shape morphing independent of point count. The applications that do that aren't anything like AS at all.

Shape morphing would only be needed when the shapes are entirely and completely different. If the shapes are basically the same (for instance a head turn) then morphing of that type isn't required (it would "nice" but it isn't a deal breaker).

That is the type of morphing I think being discussed here, morphing a star into a logo. Or morphing a chair into a car. You draw a shape, then draw another completely different shape and they "morph".

Morphing is basically a visual "concept" anyway. It isn't tied to the process of creating the illusion. How you get there depends on the application or technique used.

It's like saying you want to "paint a chair blue"... you could use spray paint, paint brush, dip it in a tank of blue paint, build a robot to paint a thousand chairs. Some are easier to paint, some are more blue. On some the paint drips and it looks awful. In each case you still end up with a blue chair.

That type of morphing isn't possible in AS as it is now. There is no mechanism for it. Points must match. It would have to have a whole new type of curve definition or layer type based on shapes not points.

-vern
User avatar
dueyftw
Posts: 2184
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Post by dueyftw »

Points must match

Why?

It would be nice to split one point into two then back again.

I wished I could program scripts but I have no Class.

Dale
User avatar
heyvern
Posts: 7042
Joined: Fri Sep 02, 2005 4:49 am

Post by heyvern »

Points must match

Why?

It would be nice to split one point into two then back again.

I wished I could program scripts but I have no Class.
It's not possible with scripting. How would you "split" a point into 2? You can't. This would involve deleting and adding points not splitting.

AS is based on a list of points in a specific location. Move a point on a frame and it tweens the motion of that point. Programs like Flash use the shape not the points to do tweening of motion and shape changes. It is the difference between night and day.

There is a script in the scripting forum that sort of does something almost like this. I have zoned out completely and can't remember the details. It allows you to redraw existing mesh shapes on frames. It doesn't create new shapes but rearranges the existing ones. It creates an "illusion" of freely drawing on frames.

It was created for those who want to "draw" frame by frame with a stylus but not specifically for morphing... although I suppose it could be used for that purpose.

-vern
Genete
Posts: 3483
Joined: Tue Oct 17, 2006 3:27 pm
Location: España / Spain

Post by Genete »

So, why all those functions have the frame number as an argument? If in fact the point operation is done at frame 0 or the current frame (available by the Scriptinterface functions), why do they have 'frame' as an argument ...?

-G
void AddPoint(pos, attachID, frame)

Add a new point to the mesh.
Return value: none
pos (LM_Vector2): location of the new point
attachID (int): if -1, then start a new curve, otherwise attach the new point to this point id
frame (int): frame number

void AddPoint(pos, attachCurve, attachSeg, frame)

Add a new point to the middle of a curve.
Return value: none
pos (LM_Vector2): location of the new point
attachCurve (int): curve identifier to attach to
attachSeg (int): which segment of the curve
frame (int): frame number

void AddLonePoint(pos, frame)

Adds a lone, unconnected point to the mesh. Lone points are not normally allowed in Moho, so this function must be followed by one or more calls to the AppendPoint function.
Return value: none
pos (LM_Vector2): location of the new point
frame (int): frame number

void AppendPoint(pos, frame)

Adds a new point, connecting it with a curve to either the AddLonePoint point, or the last call to AppendPoint.
Return value: none
pos (LM_Vector2): location of the new point
frame (int): frame number

bool WeldPoints(movingID, solidID, frame)

Welds two points together. The point identified by movingID will move if necessary to line up with solidID. Not all welding operations are allowed, so this function will return the status of the weld.
Return value (bool): true if successful, otherwise false
movingID (int): point identifier
solidID (int): point identifier
frame (int): frame number

void DeleteEdge(curveID, segID, frame)

Delete an edge of a curve.
Return value: none
curveID (int): curve identifier
segID (int): which segment on the curve to delete
frame (int): frame number
User avatar
dueyftw
Posts: 2184
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Post by dueyftw »

Then it is possible to have a tool that turns one point into two separate points in the time line. Or back again to one? This would make morphing possible. I see the problem is every thing is linked back to frame 0, but what if it wasn’t.

Dale
User avatar
heyvern
Posts: 7042
Joined: Fri Sep 02, 2005 4:49 am

Post by heyvern »

I think the frame reference for adding a point is there by default.

In some cases you may want to use a script to add a point on a vector anywhere in the time line, or the frame reference would be needed to add a key frame to a modified point. Nearly all of the animateable properties in the scripting interface has a frame reference.

You could for instance use a menu script to create animated meshes from scratch by creating points and changing them over time.

If you add a point on any frame by any means, that point instantly exists on ALL frames.

I suppose you might be able to create some kind of script that could calculate the position of a point between two points and dynamically remove or add points over time... this would require keeping track of every point on every frame. When a point is added or deleted the point IDs will all "shift". I suppose some kind of stacked array could be used to do this similar to what Genete has done with the 3Drig scripts.

Holy cow... I wouldn't want to try it myself! ;)
This is where I lose interest. All that work invested for such a small return. I have to admit ... it probably could be done... but it would be very difficult.

Morphing of shapes with variable point counts will probably have to wait for efrontier to add a brand new type of layer or vector type to AS. This would be a new thing completely different from what is there now.

-vern
User avatar
funksmaname
Posts: 3174
Joined: Tue May 29, 2007 11:31 am
Location: New Zealand

Post by funksmaname »

Instead, why not use 7feet's (i think) HowManyPoints? tool script? and just make sure both shapes DO have the same number of points? maybe it would be simpler to write a script to allow you to replace a shape along the time line from another layer, as long as it has an equal amount of points? regardless of its shape, fill, etc...?

that would create a morph would it? what you might need to do is go around the path in a circle and redistribute point IDs so that both shapes have points in the same direction, otherwise you will get ugly twisting...

...duno if this is any simpler than hayverns idea which was too much for my little brain ;)
User avatar
dueyftw
Posts: 2184
Joined: Thu Sep 14, 2006 10:32 am
Location: kingston NY
Contact:

Post by dueyftw »

Ok, I get it. Vector is only a 2d plain and stored as such. To add points you would have to expand the dimensional variable to 3 to include each frame and each frame would now be taking up memory. That is the way ToonBoom works, and a few sequenced hundred bitmapped pictures will crash it. But you have to admit that it would be a nice feature if someone could apply it with out making the program slow and a memory hog. Here another feature. Make points move in the z plane and add lights. Now we have 3D. Just kidding, My brain starts to hurt on that one.

Dale
Post Reply