The only differences between "regular" RenderWare objects and avatars
are that avatars (avs) have transform and tag commands for articulation/joint rotation/limb movement, and they can have extensive hierarchial clumping. I don't have much experience with making extensively hierarchial, articulated avatars, so I'll just provide information I've collected about it. In addition to what is below, refer to Grover's Avatar Walk-Through , and the Hierarchical Modeling section of the Criterion RenderWare API documentation.
Some viewers allow joint rotation.
Most of this information isn't organized well, so email the appropriate authors if you have any questions about it. If I ever get more experienced with some of these things, I'll try and reformat this information so it's easier to understand and follow. If anyone would like to do this instead, let me know and I'll add it here. At any rate, I've done some minor editing, with major additions in brackets ([]):
Eye Level |
---|
Roland: "'Eye level' for an avatar is 10% of the total height of the avatar down from its top. It's been this way for years. The origin of the avatar does not affect the location of eye level, only its height. While this logic has not changed in [AW3], the algorithm to calculate the height of an avatar model has (this code had to be completely re-written with the change to RenderWare 3). It turns out there was a bug in the [AW 2.2] object-height-calculation code that was producing incorrect heights for some objects and avatars (I forget exactly why now)...so the fact that [AW3] should get the true height correct in all cases now means the eye-level position might shift slightly from [AW 2.2] to [AW3] for some avatars."
Conversion |
---|
From Shamus Young, regarding trueSpace:
For the 'new' avatars currently in use in [AWGate world], we made an avatar, converted each part seperately, dropped the parts into an existing avatar, and then fiddled with the translate commands to get the joints in the right place. This was even more time consuming than it sounds.
Converting directly never worked because the joints would go haywire, the heierarchy would be a mess, and some joints didn't work at all. After messing around with the process for a while I found out some interesting facts:
My goal is to be able to build an avatar completely in truespace and then simply convert it and add the tag numbers and have it work in AW. Here is one method:
In order to get around the way COBTORWX drops joints you need to add a "dummy" joint at the end of each chain. So, if you were making a leg you would create some bogus extra object (say a cube) and stick it on the bottom. You would then glue them in this order: DummyCube + Foot + LowerLeg + UpperLeg
You would do the same for the arms and the other leg - start with a dummycube and glue your way up.
Do the same with the head: DummyCube, Head, Neck
Now you want want to take these seperate limbs and stick them on the body - but they must be siblings. You can't have any of the limbs UNDER any of the others, or crazy things will happen. Again, you will need a dummy cube. I think it works if you glue like this (glue as SIBLING this time!):
Dummycube + RLeg + LLeg + RArm + LArm + Head
Now take this new group of limbs and glue it (as a child) to the body.
Once you have it all together you need to go down though the ENTIRE object and fix all those axis that Truespace messed up. All the joints in your left leg will be in the left ankle, all the joints in the right arm will be in the right wrist. Move all the axis into place and make sure you have named each body part something usefull so you know what's what after conversion.
Now glue the whole thing to one last dummycube (so the dummy cube will the the topmost clump) and then you're (hopefully) ready to convert.
After you convert it you will need to go through and add the avatar tags, and remove the dummy cubes - if all went well, the av should work.
This still does not allow for a waist, and I havn't gotten that to work properly yet. I am just putting this info out there in case anyone else is messing around with this process, or if anyone else has gotten this to work. Would be SO much better if we could get a simple, well-documented way to convert directly from [trueSpace] to [Active Worlds]."
Actions/Animations/Gestures/Sequences (SEQs) |
In Active Worlds, avatar actions/animations/gestures/sequences (SEQs) are what avatars do when they walk, wait/idle, and when one of the buttons in the toolbar (, etc) is pressed. (Hopefully this will change to a pull-down menu some day, since having too many SEQs causes the buttons to overlap the right edge of the screen and get cut off.) More specifically, according to Grover, SEQs record what transforms are affecting which tag/clump at any time.
SEQ is the file extension of the actions/animations/gestures/sequences and are found in the Active Worlds SEQ cache directories (C:\Program Files\Active Worlds\cache\art\<world object path>\seq, or wherever Active Worlds is installed).
There are now a few ways to create a SEQ-format file. Life Forms, by Credo Interactive Incorporated, used to be the only known program that can do SEQ files, but XelaG's SEQ viewer/editor, Accutrans, and HamFon's COB Dump can also edit them. If you know of any other programs that can, email me. While the full version of Life Forms cost hundreds of dollars, the demo version (at least version 2.1 anyway) can/could export up to 5 frames, but it needs(ed) the SEQ import/export DLLs (47K/ZIP) to do it. Just put them in the Life Forms plug-in directory (C:\Program Files\Credo\Life Forms Demo\Plug-ins, or wherever Life Forms is installed) and SEQ format import/export ability should appear in the File | Open... and File | Export menus as "seqout .seq". Supposedly Life Forms 3 (which I haven't tried yet) has this functionality built-in so the import/export DLLs shouldn't be necessary with it.
Credo used to have some avatars and SEQs for AW called Active Avatars . Email them and maybe they'll make them available again.
From Grover:
Anyhow, heres a quick rehash of a .lfa -> .seq [Life Forms format file to SEQ format file] method I emailed a few people about 2 months ago when we first figured it out. Good luck. :)
To create a Life Forms file, press "new human figure" or load an old animation. You'll need to be able to see 3 windows: Stage, Timeline and Figure Editor. Be sure you can see all 3 easily, it may mean resizing...
When you can see the figure, click on a limb, it will be highlighted. You can then drag it with the mouse, or use the four arrow key buttons/two globes if you need finer control. You can click on any of the views in the smaller windows and that will bring up that view in the main window to use.
The timeline is what ultimately controls the animation. Life Forms will connect the red figure positions cleanly and internally, whether they are adjacent or not: example, you leave frame 1 as the default standing straight up. You drag the mouse over it and copy, and paste it again in frame 11. Then, in frame 11 you move the right arm up. Press the play button, and Life Forms fills in the 10 blank spaces with incremental movements when it exports to SEQ. If you had placed the right arm up in frame 2, when you export to SEQ, it will flash between down and up in Active Worlds... But in the demo we are limited to 5 frames, so this is unavoidable. :(
To export to an Active Worlds-compatible SEQ file, you need to load an existing SEQ. Be careful what SEQ you select, because some have been run through a program called LIMBCVT.EXE [Limb Convert?] to get rid of extraneous limbs, and may be missing the leg tags, arm tags, etc. and that info will be lost. Others have the other extreme, and include extraneous tags that coincide with the default Life Form ones. So if you choose wrong, when you go to cut+paste, either no box will pop up, or it will pop up missing a few limbs... I randomly discovered that DREDD3.SEQ includes all the proper limbs (and a few extra harmless ones), but you'll probably want to adjust the frame rate. To prepare the SEQ file, delete all the red boxes. When these are deleted, Life Forms will allow you to decrease the # of frames. We need < 5. When the # of frames are decreased, go into "frame rate" and change to whatever you want for your example.
Use the mouse to select and copy the timeline of your original animation. Bring up the SEQ timeline and paste the frames into it. A dialog box should come up prompting you to associate the Active Worlds limb names with Life Forms limbs. NOTE: not all limbs in Life Forms can translate. For instance—you'll notice a red torso and a blue torso piece. Which one you use is up to you depending the geometry of the avatar you're using, but its important you keep this in mind when you make the animation because if you move both the red+blue in your animation, one of those limb movements will be lost in the translation... Same with the shoulders in Life Forms—built into Active Worlds arms, and of course fingers and toes... And also remember that the Life Forms guy is facing you—i.e. his left is your right. ;-) Could cause problems, hehe."
Table 2: Limb Naming & Tag Declaration
Tag | SEQ | LifeForms | Alternate | Note: "?" limb names provided by Netropolis and XelaG; their use depends on SEQ (not all SEQs use all tags).
From there, you can just ["Save As..."], and bring that right into Active Worlds as a brand spanking new SEQ animation!! The dialog box which lets you associate the SEQ names with LFA limbs only pops up if there are unknown limbs, but requires all the existing limb names. But there's a problem: some of the GRAY*.SEQs have all the limb names, and never pop up this box, while others have been optimized for just a limb or two (i.e. the wave) so your animation would only affect the right arm, for instance. In the model I used, DREDD3.SEQ, there were also a couple extraneous parts... But for your information, these should be the correct limb names when you convert: [see Table 2] With all left stuff beginning with "lf"—if its spelled out as 'left' or 'right' in the animation, it probably won't be work too well... But also remember this when you make animations! Life Forms gives about 4 bends to the trunk of the body while Active Worlds has only two—you can associate any of the individual 'torso' pieces with 'torso' in Active Worlds, but make sure that's the one you moved to begin with. ;-) And don't bother with the fingers or toes, but I think that goes without saying..." From Andon/Susan Coleman:
Grover: "I think I've finally made a sort of breakthrough in SEQ generation! So far, all the files I've made have been plagued by erratic translations and rotations. This may be due to concessions made during the original coding to make walking SEQs easier to integrate, but I'm not sure. What I did discover was that the little "x" that annoyingly comes up in the blank timeline bar locks the SEQ in place when its converted! So, if we leave that x in, and lock it to 0.00/0.00, our avatar now stays put as it flails out the poorly constructed newbie animations. :) I'm still trying to figure out what the buttons do—setting the first "x" value to 1.00, the avatar moved slightly to the left. Setting the arrow to 1.00, the avatar moved up and to the left? (It's hard to see which direction it's moving from 3rd person). Changing the circle to 45.00 had no apparent affect on the imported SEQ. But this is OK, since we have full rotational control over the pelvis, which accomplishes the same thing. All the SEQ files I've been talking about are up in Guild [world] right now on the "grover" avatar, if you want to check 'em out..." Regarding animal avatar tags: "The actual SEQ file is very generic; it only records what transforms are affecting which tag/clump at any time. AW doesn't care where you place the tag, it will move the tag/clump as recorded in the SEQ file. You needn't put tag 4 on the head, for example. If your avatar was a headless man with a pumpkin in his hand, you could instead use that tag for the pumpkin clump. Any sequences that you saved for tag 4 (ie, head) would be played on that clump. For example, on one avatar I did, I placed a man in a hovercraft which freed up 6 leg tags. I placed the torso tag onto the entire hovercraft, and used one of the foot tags on a turret to make the turret animated. It worked out pretty good :) So yes, if you can visualize these transforms when you're making the SEQ file, it shouldn't be too difficult to use the human arm tags for an animal's front limbs." | |
1 | pelvis | Pelvis | pelvis/hips | ||
2 | back | U/L Back? | back/chest/torso | ||
3 | neck | Neck | neck | ||
4 | head | Head | head | ||
5 | rtsternum | ? | right sternum | ||
6 | rtshoulder | R U Arm | right shoulder/ upper arm | ||
7 | rtelbow | R Forearm | right elbow/ forearm/ lower arm | ||
8 | rtwrist | R Hand | right hand/ wrist | ||
9 | rtfingers | ? | right fingers | ||
10 | lfsternum | ? | left sternum | ||
11 | lfshoulder | L U Arm | left shoulder/ upper arm | ||
12 | lfelbow | L Forearm | left elbow/ forearm/ lower arm | ||
13 | lfwrist | L Hand | left hand/ wrist | ||
14 | lffingers | ? | left fingers | ||
15 | rthip | R Thigh | right hip/ thigh/ upper leg | ||
16 | rtknee | R Knee | right knee/ shin/ lower leg | ||
17 | rtankle | R Foot | right ankle/ foot | ||
18 | rttoes | ? | right toes | ||
19 | lfhip | L Thigh | left hip/ thigh/ upper leg | ||
20 | lfknee | L Knee | left knee/ shin/ lower leg | ||
21 | lfankle | L Foot | left ankle/ foot | ||
22 | lftoes | ? | left toes | ||
23 | neck2 | ? | neck | ||
24 | tail | ? | tail | ||
25 | tail2 | ? | tail | ||
26 | tail3 | ? | tail | ||
27 | tail4 | ? | tail | ||
28 | obj | ? | ? | ||
29 | obj2 | ? | ? | ||
30 | obj3 | ? | ? | ||
31 | hair | ? | hair | ||
32 | hair2 | ? | hair | ||
33 | hair3 | ? | hair | ||
34 | hair4 | ? | hair | ||
35 | rtbreast | ? | right breast | ||
36 | lfbreast | ? | left breast | ||
37 | rteye | ? | right eye | ||
38 | lfeye | ? | left eye | ||
39 | lips | ? | lips | ||
40 | nose | ? | nose | ||
41 | rtear | ? | right ear | ||
42 | lfear | ? | left ear |