Game Development Community

dev|Pro Game Development Curriculum

Ecstasy Motion Dev Blog #6

by Chris Calef · 02/08/2010 (7:18 pm) · 25 comments

So, it's been a couple of months since my last Ecstasy Motion dev blog, and we have a lot of news to share with you! This was a big, bad set of changes to do all in one bite, but from now on I should be able to keep the updates coming more frequently.

News Item #1: There is a new release of Ecstasy Motion available for download! If you have already purchased Ecstasy Motion, you'll want to open your launcher and hit Update. If you haven't bought it yet and are still waiting to see if it's worth the money, we're thinking this release might just be the one that tips the scales for you!

So, what's in it? First, check out this video by Jon, and then I'll explain things in more detail. (Credit for the dragon goes to Magnus Blikstad and Prairie Games, for releasing their free Minions of Mirth MMOKit resource - thanks, guys!!)




1) New GUI


We are now running Ecstasy Motion in a modified version of the old Torque mission editor - so anything you're used to doing there, like clicking on a scene object, moving or rotating it using the axis gizmos, checking it out in the inspector, etc. - you can now do in Ecstasy Motion. You can select your highlighted actor for the Ecstasy GUIs by just left clicking on it in the editor. You can multiselect actors. You can drop new actors and props into the scene directly from the Library tab, you can copy and paste them with Control C and Control V, and you can delete them by pressing "delete". Overall, things are just much, much easier to use and faster to learn, because the interface feels more like a "regular program" now.


2) Partial Body Ragdoll


Most of what you saw in the video above was creative use of Ecstasy's new Partial Body Ragdoll feature. Previously, there were only two modes of animation in Ecstasy Motion. You could be fully 100% kinematic, in which case the body was entirely animated by the sequence you were playing, and the physics had no effect on it (although this body could affect other objects in the physics scene, just not be affected by them.) Or, you could make a body go 100% ragdoll and be entirely subject to the physics simulation, but have no animation.

Now, you can turn off animation and turn on physics for [u]any[/u] bodypart, any time you want! This ability can give you vast new powers to make natural, physics-generated animations on parts of a model that you might want to just hang and bounce, like the tail, wings, or possibly the neck and head of something like a dragon.

(Sorry about the rest of these videos, YouTube starting taking exception to my codecs, apparently, and I had to upload them to Vimeo, but we don't have a Vimeo embed option here on this site yet...)




3) Sequence Actions


Another new feature that is designed to work in conjunction with partial-body ragdoll is motor-drive "Sequence Actions". These enable you to blow away the separation between ragdoll forces and kinematic animation, in that they play animations as a set of motor forces on the physics joints! This works for a whole body or an subset of bodyparts. The bodyparts playing a sequence action end up making approximately the same motions as they would with a kinematic animation, but with active collision and joint "bounciness" coming from the physics simulation. With certain actions this can provide a level of realism that would be very hard to achieve in a traditional, non-physics-based animating environment. (Be warned, however - this system is still in its infancy and I had problems with the PhysX D6 joint "slerp drive" implementation, with the result that motor targets are sometimes wrong on certain rotations - but most sequences seem to work fine. Give it a try!!)




In the above video, watch the soldier as he is kicked over. His arms and legs continue to cycle as they would if he was still running, but they do it as he is falling down. The same technique could easily be applied to motions like arms flailing as an actor flies into the air due to an explosion - the possibilities are limitless.

4) Scene Events


In previous versions of Ecstasy, physics events, like impulse forces, torque, etc., used to be stored by animation sequence, as special keyframe types. That didn't work very well, so now they are tracked as separate objects called "Scene Events", which are sorted by time from the beginning of the whole scene and affect the character the same way no matter what animation he may be doing at the time they occur. This change has revolutionized the whole interface and made physics events much easier to apply and test.

Each scene event has an XYZ value (to store the force or rotation or whatever data the event needs), an action or function name, a start time and duration, an actor ID, a node ID, and an event type, as well as a link to a "cause" event if this event was created as a direct result of another scene event.

A scene event can represent anything from application of an impulse force to a particular bodypart, to starting an animation on an actor or making it go ragdoll, to calling a custom user script function at a certain time. (More on that in a minute.) There are three general types of Scene Event: "Impulse", which has no duration and applies the value instantaneously; "Duration", which applies the value over time; and "Interpolation", which linearly interpolates the value over time from this event to the next event of the same type and node.

For each of these general types, there can be many specific types of action, e.g. "set local force", "set global force", "set local torque", "set motor target", and so on. Many of the most useful types, like Local / Global Force, have buttons on the Events Tab (formerly the Physics Tab) of the Tools Window, but you can add any type of event by selecting the actor you want to involve, selecting the node you want to affect, selecting the type of event, entering the start time, duration, and XYZ value for the event, and then clicking "Add" at the top of the Events Tab.

Since many of these event types make sense as any one of the three major types, I have reused the buttons and made the type distinction dependent on three checkboxes - Impulse, Duration, and Interpolation - on the Events Tab. Since many of the event types are also useful immediately in realtime as well in scheduled scenes, I have added the ability to uncheck all three of these boxes. When nothing is checked, the event happens right now.




5) Script Events


Since even _that_ much flexibility wasn't enough for me, I took it a step further and added the "action" field. This gives you the ability to write your [u]own[/u] script functions, and then call them at the time of an action, with the correct XYZ value for the action sent to the function as an argument. The action field also works in realtime, so you can exec Torque Script of any sort right there in your GUI if you so choose. (Saving the trouble of opening the console, for those experience Torque hands out there.)

6) Selection Groups and Scene Recording


Previously scene recording in Ecstasy affected all actors in the mission. With this release, only the selected actors are included, so you can work on parts of the scene without everybody always having to be involved.

7) Save Project


And, last but certainly not least... you can now save your work! All of it, easily, with one menu option. I hooked this up to the "Save Project" function under the File Menu, and what it actually does is saves the mission, with all your actors and props (rigid bodies) saved into the mission group. It then saves out all scene events, all sequences loaded on each shape, and all keyframes you have added to modify the loaded sequences. Sorry it took so long to get around to this one!

If you're still thinking about buying the program, we recommend that you stop thinking and get to it! It won't be that long before the price goes up, and if you buy now you will forever be one of our cherished "Early Adopter" customers, who helped us get this thing off the ground! If you like the direction you see us going here, then go pick it up!


PS

For those customers who are primarily interested in getting their own characters into Ecstasy Motion, I apologize for the delay in making that step easier. We have uploaded an improved version of the Retargeting plugin, but there are still some major gaps in that process that we are part of the way toward fixing but have not finished fixing yet. The above changes all had to be done in one sweep in order to get any of them working, so making this version work as it is had to take top priority... but we will now be able to refocus on some of the other hanging issues like node retargeting, as well as FBX and Collada support, to make import of artwork much easier. Stay tuned for updates!

Page«First 1 2 Next»
#21
02/10/2010 (10:32 pm)
@Jondo, having problems with the retarget plug, giving me lines like,

1;1;1632724;(0.0,0.0,0.0);(0.0,0.0,0.0);(0.0,0.0,0.0);(0.0,0.0,0.0);

the 1632724 i making the app crash when i load the bvh. i have yet to be able to get new animation working correctly on the MOM setup with the retargeting plug. if you are able to load an animation from monsterbones please let me know how you did it. email me at info_at_360covers.com. thanks.
#22
02/11/2010 (8:39 am)
Awesome update. More to play with for the weekend. I won't be getting any sleep :/
#23
02/11/2010 (11:49 am)
@Stadi: I'm looking into your inquiry...as that 3rd column should not have a number that large!

The 3rd column is used to index the chains of the skeleton; and unless you have an figure that has that that many chains...OMgosh, what are you creating?!

UPDATE: Stadi, I just ran the Mom avatar thru the retargeter with a 'BoogieBones' BVH file. Seemed to work as expected. I think this may be in your setting the 'chains' with the Right Mouse context menu.

Can you give me some background on what constitutes, the 'Monster Bones' pack of BVH files?
#24
02/11/2010 (12:55 pm)
Quote:MMOKit can use .dsq or embedded animatons. Also, Dsq's can be turned into embedded using UU3D, Milshape, and fragMotion.

The new version of DSQTweaker (coming soon) handles this too.

@ Standi

We're doublechecking the retargetting plugin version that is patched out to live, making sure its up to the task. But you can already use the included default.cfg file for that character, I tested it last night.

I'll email you or PM you more particulars, but that third column should only be a 0, 1, 2, 3, or 4. This designates what chain a node is in (spine, l arm, r arm, l leg, r leg).

Jondo
#25
02/12/2010 (9:01 pm)
thanks guys i will post in the ecstasy forums to keep the topic going. havent tried boogie bones animations, i was using gamebones 120.
Page«First 1 2 Next»