Hi there! You are currently browsing as a guest. Why not create an account? Then you get less ads, can thank creators, post feedback, keep a list of your favourites, and more!
Instructor
#101 Old 13th Jun 2010 at 6:32 AM
This is amazing! Thank you SO much Wes! You're gonna love your new PC, I'm sure of it

This space intentionally left blank...
Advertisement
Instructor
#102 Old 1st Jul 2010 at 10:56 AM
Also, if you want to use a rig that works very well, Mesher made one over here.

I tested it out myself and the legs and arms seem to animate perfectly fine in game. Even the hopping legs and stuff.

This space intentionally left blank...
Alchemist
#103 Old 1st Jul 2010 at 12:18 PM Last edited by orangemittens : 1st Jul 2010 at 12:31 PM.
Nukael, if this is the same rig I linked to in post 96 of this thread, I tested that one and posted in-game footage of it in Mesher's thread. I had arm issues with it using an EA clip although the legs worked fine. You can see what I'm talking about if you play the .avi that I posted. Did you make your own clip or use an EA one with it? If it was an EA clip which one was it?

eta: the avi I posted is in the last post of Mesher's thread.
Instructor
#104 Old 1st Jul 2010 at 1:09 PM
That's what I found strange, I used the same clip you used as far as I can tell. Ran it through the Animtool and Milkshape untouched and back into the game, and as far as I could tell the animation didn't have any hand problems.
I then whipped up a test animation of my own with arms and legs and that test animation in the game looked exactly like it did in my 3D software. Maybe Mesher sneakily updated that rig? Or I'm not looking hard enough :D

Anyways, are custom animations now theoretically possible? Could you like make a new animation, insert it in an existing animation. Then in S3PE give that new animation a unique instance number. Then make a JAZZ script and a custom object with a script that calls your animation?

I am kind of sad that so few people are working on animations. Although I do understand the rig setup is far from ideal. I work as an animator and the rigs we work with are more user friendly I was thinking of rigging up something in Puppetshop, just so animating wouldn't be so hard to do. Using that rig it feels like I'm animating with technology of ten years ago :D
But I don't know nor understand enough on how the rigfile.txt is created to attempt that...

This space intentionally left blank...
Scholar
#105 Old 1st Jul 2010 at 1:17 PM
Quote: Originally posted by orangemittens
Nukael, if this is the same rig I linked to in post 96 of this thread, I tested that one and posted in-game footage of it in Mesher's thread. I had arm issues with it using an EA clip although the legs worked fine.


Looks like you made a Global (instead of Local) rotation on the elbow joint...

Quote: Originally posted by Nukael
Anyways, are custom animations now theoretically possible? Could you like make a new animation, insert it in an existing animation. Then in S3PE give that new animation a unique instance number. Then make a JAZZ script and a custom object with a script that calls your animation?


Same exact thing I've been wondering. Up until now, I've only been making default replacements for movie-making purposes, but would love to make some truly custom animations as new game interactions.
Alchemist
#106 Old 1st Jul 2010 at 1:56 PM
I don't think Mesher updated the rig...I think I'm just doing something wrong. This is why I've been hoping people who know what they're doing would test some of this so it isn't my mistakes causing misconceptions about what it can and cannot do. I'll freely admit I'm a complete beginner.

Jasumi, I just copied one EA clip and turned it into an smd. Overwrote that with another EA clip that I had done the same thing to. I think I did essentially what Nukael describes having done. Where in that process does the altering rotation part come in and is there some way of knowing when I'm making the mistake that's causing the global rotation? Thank you for any help

Nukael, if this rig is working, and it sounds like it is, then custom animations are theoretically possible I think. I'm interested to know if you were able to suppress the head motion, that "look at" kind of motion the game has which was described by Wes and CM earlier in this thread, when you put animations into your game.
Instructor
#107 Old 1st Jul 2010 at 2:03 PM
I think the way to suppress to Look At animation lies in the JAZZ scripts. All animations in JAZZ scripts are given a priority, and I'm guessing (but could be TOTALLY COMPLETELY wrong about this) that it's the JAZZ scripts that decide whether the head motion is suppressed or not when used in an animation.

Hmm, I find it strange you keep having that issue. It makes me question my own attention span Maybe I just missed seeing the issue. I'll test it again later on. Now I'm off to go swimming!!

This space intentionally left blank...
Alchemist
#108 Old 1st Jul 2010 at 2:25 PM
CM posted a little bit of his findings regarding the "look at" motion in post 68 of this thread. He seemed to feel it's gonna require a mod to suppress this thing.

I'm not sure why I keep having this happen either. I'm going to re-download the rig on the off-chance I don't have the most current version of it and try again. Rather than questioning your attention span it's probably more reasonable to question my animating abilities...lol. I'm sure I must be doing something wrong. While I'm thinking Wes checked my work on the clip I made using the first rig is it at all possible the issues I had with it were the same as the issues I'm having with Mesher's...that the leg/foot thing was due to global vs local rotation or some other mistake I made?

Lol...I wish I was going swimming...instead I'm off to work.
Scholar
#109 Old 1st Jul 2010 at 3:36 PM
Quote: Originally posted by orangemittens
CM posted a little bit of his findings regarding the "look at" motion in post 68 of this thread. He seemed to feel it's gonna require a mod to suppress this thing.

I'm not sure why I keep having this happen either. I'm going to re-download the rig on the off-chance I don't have the most current version of it and try again. Rather than questioning your attention span it's probably more reasonable to question my animating abilities...lol. I'm sure I must be doing something wrong. While I'm thinking Wes checked my work on the clip I made using the first rig is it at all possible the issues I had with it were the same as the issues I'm having with Mesher's...that the leg/foot thing was due to global vs local rotation or some other mistake I made?

Lol...I wish I was going swimming...instead I'm off to work.


That seems to be the only explanation I can think of, as the tool is working properly on my end. Also, did you check to see if the rigfiles were mixed up?

Wes (if you're still around ), how could we go about making custom animation overlays? Are they yet a possibility?
Alchemist
#110 Old 1st Jul 2010 at 10:58 PM
The Animtool itself works fine. It's the rig I'm having trouble with. Which one are you using that works for you? Good idea on the rig files...I'll double-check that.

Is there some setting in Milkshape that could cause the problem I'm having? Something that you and Nukael have clicked correctly and I have wrong?
Alchemist
Original Poster
#111 Old 2nd Jul 2010 at 5:35 AM
Quote: Originally posted by Nukael
I am kind of sad that so few people are working on animations. Although I do understand the rig setup is far from ideal.


It took a long time for much interest to develop in Sims 2 animation. Much of what was done there was done by a few people that created various pose animations, and put them in packages that were used a lot by movie makers and for still shots. The main issue with that in Sims 3 would be driving the animation, and I did not solve that personally, it was ChaosMageX that made that painting that leverages JAZZ to call the animations. I expect that object, modified to point to CLIP files with unique names/TGI pairs, would enable non-replacement animations to be used. Pose animations are just single frame animations.

The text rigfile concept was a hack to get around the lack of ability to interface directly to the RIG chunks themselves. I made it by manually noting joint positions in the Granny Viewer from the aurig RIG file (you have to chop the leading chunk off these to get Granny Viewer to recognize them). Since all of the adults, children and toddlers are based on just three respective basic rigs, it is less of an issue than objects, which each have their own unique rigging. Although most objects have just a few joints that would need to be managed, and usually much simpler motions.

<* Wes *>

If you like to say what you think, be sure you know which to do first.
Instructor
#112 Old 2nd Jul 2010 at 10:43 AM
OrangeMittens: which version of Milkshape are you using? I use 1.8.5 BETA. Also, are you sure you didn't accidentally used Wes' rigfile.txt to convert the animation. And then used Mesher's rig to import into Milkshape, and then used Wes' rigfile to convert again?
I think since those rigfiles are different from each other, this could mess up something.

Jasumi: from what I gather from the AnimTool documentation is that custom overlays are possible by editing the rigfile to only export the bones that you want for your overlay. If the game then loads this animation, it will "blend" your animation with the one that's already active (in theory!).

Wes: wow, thanks for the info! Every time I feel like I'm learning new stuff! So I have a question, I'm wanting to make my own rig based on the skeleton used in aurig. What I mean is make my own custom skeleton rig from scratch, matching all the bone positions but having a better underlying rig so it's easier to animate.
To convert the animation I would then have to make a rigfile.txt for my new skeleton, yes? Would I just note the positions then of the bones in my skeleton and write those out in that text file?
Would you like to give me your copy of the aurig file that can be loaded into Granny viewer? I tried chopping off the bit myself with a hex editor, but Granny Viewer keeps saying it failed its CRC check.

If I want to make an animation unique, is it enough to give it a different name and instance number, or is there more to it?

This space intentionally left blank...
Alchemist
Original Poster
#113 Old 2nd Jul 2010 at 4:21 PM
You would need the new name and hash it into an instance value. But I really did not spend any time studying the Jazz files, other than determining that they are the 'scripts' that make animations play.

Only for the body rigs, there is a block of data on the head of the file, and if I remember correctly it has one longword that is some sort of a magic identifier, and the next longword is, I think, the offset value of the .gr2 data, you can determine this, if no other way, by matching the data values from the head of an object rig file. Select that header, delete, save and rename and there you go.

But I saved you the trouble and attached the three I had (au, cu and pu).

I tried to make the converter code very flexible. It imports anything from a clip file that is in the rigfile, and only exports what is in the rigfile. These do not need to be the same number of elements... for example making an overlay would mean just exporting a few of the joints from the animation.

I patterned the layout after the skeleton section of SMD files, except I used a string for the parent name instead of an integer, so you can just delete a child joint without having to renumber every joint as you would using integers.

The joint position/rotation values are more important... if those change, then the rotations specified in the animation are all going to be off.

I was surprised to read that the engine handles IK joint movements. From the looks of the files, I had presumed that all the animations were made with some IK, and then baked (and they appear to be that way) and that the IK joint movements were just being systematically exported with the rest of the joints. You should be able to import all the IK handles, although MilkShape will be unable to use them for IK purposes. But to the converter, they are just another joint. If it moves, it will generate a translation, if it turns, a rotation.

Have fun, show me what you learn.

<* Wes *>
Attached files:
File Type: rar  cupuaurigs.rar (22.0 KB, 20 downloads) - View custom content

If you like to say what you think, be sure you know which to do first.
˙uʍop ǝpᴉsdn ǝɹ,noʎ 'oN
#114 Old 2nd Jul 2010 at 5:10 PM
I've been working with object animations. I made a class with an interaction that calls my jazz script, which calls my animation. It works. In an attempt to make it unique, I gave the animation a new hashed instance value. Then I changed my jazz script to call the new name.That didn't work.

Do you think it makes a difference when I change the instance number? Like, before I make the clip or after (I did the latter)?

"Part of being a mesher is being persistent through your own confusedness" - HystericalParoxysm
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
Alchemist
Original Poster
#115 Old 2nd Jul 2010 at 6:38 PM
There are some bits in the hash for animations that are used for age/type specifiers. I think ChaosMageX did the research, here it is (quoted from the Wiki):

Quote:
These resources do not always hash from the animation name to the resource key. Any age specifiers (a2p, t2o, etc) are converted to only reference adult or objects (a or o) respectively to generate the hash, and the high bit is stripped off. This becomes the "default" animation if no age specific override is provided. Age overrides are found by XORing an age mask with the high byte (Or the second high byte for the second actor in an animation).


So the issue may just be that the naming/hashing needs to be done a little differently.

If you like to say what you think, be sure you know which to do first.
˙uʍop ǝpᴉsdn ǝɹ,noʎ 'oN
#116 Old 2nd Jul 2010 at 11:09 PM Last edited by cmomoney : 3rd Jul 2010 at 1:49 AM.
The animations original name is "o_dresser_open_pose_dresser" which hashes out to 0x6DDC51AECA077F21, which is the instance number. I made the clip and it worked as a default, so all the dressers were doing my drawer dance.I changed it to "o_dresser_open_pose_closet" which hashes out to 0xE0B3863D87CC593B, and gave it that instance number. Then I changed the jazz script to call that name. That didn't work.

In your rigfile.txt the first two lines are:
Code:
;"b__ROOT_bind__" "unparented" 0.000000 0.000000 1.012200 1.570796 0.000000 0.000000
"b__ROOT_bind__" "unparented" 0.000000 1.012200 0.000000 0.000000 0.000000 0.000000


Why are the values different?


ETA: I opened the animation in a hex editor and changed the name in there, too. Still didn't work.

"Part of being a mesher is being persistent through your own confusedness" - HystericalParoxysm
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
Alchemist
Original Poster
#117 Old 3rd Jul 2010 at 2:31 AM
I don't have an answer for the calling an animation question, but I am pretty sure that the game engine does not pay any attention to the name inside the CLIP. There may be debugging tools we have never seen that can track what animation was played (Sims 2 had them) but I think the link to the TGI built from the altered hashed name value is how it is done.

As for the rig file question, the commented first line is a remnant from development that was never removed. The difference is that the first line (';' in position 0 causes the line to be ignored) has Z up and a 90 degree X rotation. This is now done in the converter itself, on all world-based (unparented) joints. It is a remnant of the SMD format, where all the files were Z up (from 3DS MAX) versus all the OpenGL Y-up applications. MilkShape expects that it is reading a Z up file when it imports an SMD. So I made the converter change the Y up game files to a Z up model, which then gets read in properly into MilkShape (or fragmotion). But the rigfile matches the game layout, the conversion is done when reading the or writing the SMD file.

The export conversion does the opposite. If I was to leave out the rotation, when the skeleton gets into MilkShape, it is lying on its back with the feet toward you. Thus, rotating it 90 positive brings the whole model up to standing facing you. In these programs, as is most common, when you are looking down an axis toward the origin, counter-clockwise is a positive rotation. All this is difficult to learn; who would think that swapping Y and Z would be fixed by rotating X, but if you draw it out, that is what happens.

If you like to say what you think, be sure you know which to do first.
˙uʍop ǝpᴉsdn ǝɹ,noʎ 'oN
#118 Old 6th Jul 2010 at 7:02 PM
Could it be that changing the instance value disassociates the clip from its source? How are they related?

"Part of being a mesher is being persistent through your own confusedness" - HystericalParoxysm
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
Instructor
#119 Old 9th Jul 2010 at 8:53 PM
How are you hashing your strings? I've read on this forum somewhere the Sims 3 is using a lot of the hashes reversed. Anyway, there's a cool app by ChaosmageX here. He states in his post that the FVN32 is good for animation clip ID's.

You can also try Snaitf's app found here.

This space intentionally left blank...
Test Subject
#120 Old 23rd Jul 2010 at 7:23 AM Last edited by VenysJava : 2nd Aug 2010 at 7:47 AM.
Hi there! I need some information or suggestions. what did i do is correct or not.

I use Animtool to make an action with tool : ms3d , TigerM: Smooth Jazz, by follow the procedures that should be like this.
I use a CLIP from Fullbuild01 and export to AnimTool then export CLIP->SMD.
in ms3d
- Import .SMD file from Animtool to ms3d and clear all keyframes except 1st keyframe.
- Begin the step with simple original post in 1st frame and adjust desired posting in middle of frames, and copy keyframe of 1st frame
to the last frame.
-Then Export .SMD file .
Back to AnimTool
- rename AnimName and Source Name
- convert .smd back to .animation .
s3pe: Get hashcode of .animation CLIP ("Anim Name") in FNVhash tool, just for case.
- i wrote simple Jazz script in TigerM 's Smooth Jazz Studio (thanks).
( I m not sure how the script works, because lack of understanding how the Finite State Machine .
I think it use for control data from one node of data to other data node ,each node call "State" .The Data flows through transition
's link drives with some conditions ,or something like that. It use for make a decision to do somethings ,do i'm right?!)
minor Jazz script :
State Machine "TestAnimSMCName"
{
Properties Default
Actor "x"
Assign Actor "test_desired_action.ma"."x" as "x"
//Assign Actor 0x55628013."x" as "x"

State "Enter"
{
Properties Public, Entry, Explicit
Transitions to "action_state"
}
State "action_state"
{
Transitions to "Exit"
Play "test_desired_action" for "x"
}
State "Exit"
{
Properties Public, Exit, Explicit
}
}
End up with code for animation calling in C# I m so confuse about Get , Set State,,... and the group of code that call just like same result.
minor C# code in Run method section :
Code:
          protected override bool Run()
            {
                base.EnterStateMachine("TestAnimSMCName", "Enter", "x");
                base.EnterState("x", "action_state");
                return true;
            }

After that : I put all together in a painting portrait package.
I tested in difference place, si(m)tuation in the game.. no errors found . good to me!! ^ ^ !!
but, before these good . I found some errors when i choose "a2o_bathtub_clean_pose_sponge" CLIP :
the bones laid down on the ground and
in ms3d :

and same result in game.

maybe that because of code isn't correct, i just wondered.
So, I decided to modify another CLIP like "a2o_dance_body_rolled_" ( sorry! i did not remember the exact name because i changed it in S3PE exporting process.)
Finally , I made this up .it worked very well. thank you Wes. thank you so much. :lovestruc

This is not perfect action yet .it still need some leg adjustment.I go for that step but the lower of body goes Bulk, in game.
I know ,In order to fix problems for good result that is something about "Rigging" .i have to chang some infomation in rigfile ,right?
but after, i saw anumber of digits, name of joint . i said "oh my.. what are these! ".
I tried to understand the ChaosMageX 's RIG Maker Tool , that s hard for me. I'm afraid that i can not go that further, (sigh) .
EDIT POST :=========================
Oh! ,i'm sorry for unclear questions. please accept my apology.

Actually, I just wannted to report , the tool is pretty awesome .
There 's a lot of thing in the world to do ,to discover ,and get some relax right?
And i would like to say thank you. You've done the great works,Wes.
That 's all .
Alchemist
#121 Old 23rd Jul 2010 at 6:02 PM
I can't answer most of what it seems you're asking...someone with a lot more knowledge than I have is needed for that.

But the issue with the bathtub clip probably has to do with what Wes said earlier in this thread, "Mostly, you can edit an animation. Not all of them import smoothly, some require special rigging because they depend on extra joints and objects, like getting in a car or on a barstool."

My guess is, that since the clip you first worked with is a bathtub animation that something to do with the rigging makes this not work since an object (the bathtub) is involved with the animation.

Which rig are you using? There are two. There's one that comes with the AnimTool and that one does have some issues with the lower limbs in-game. There's another which is linked to in this thread that some people have been able to get working well in-game without the leg issues.

Also, what is it exactly that you're trying to do? If you can be more explanatory about that I think it might help people to help you.
Alchemist
Original Poster
#122 Old 24th Jul 2010 at 2:13 AM
I created the 'info' button for the express purpose of being able to see what joints are being animated in each clip. There is simply no one rigging that will work with every animation. But by comparing the joints from a clip that does not import well (like the barstool) to one that does, you can see that there is a different root joint being animated that is not used in many other clips. I would add that into the rig file here and the barstool animation would import, but that would break the others.

So what you have is a compromise default file. I did a lot of extra work to try to make it simpler than the SMD format... note that you specify a parent by name, not an index number, so to insert another joint, you do not need to renumber all of the rest of the lines (tedious and error-prone). The rig file is larger because all the names for the each joint's parent are longer than a couple of digits would be, but it is more flexible, although it was harder to code it that way.

I cannot spend all my time making custom rig files for every animation, but there is no reason others that have (the few, the proud...) cannot share their work with the community.

If you like to say what you think, be sure you know which to do first.
Lab Assistant
#123 Old 24th Jul 2010 at 7:12 PM
I just wanted to say thank you for this tool. I'm about half way done a jumping jacks animation that just wouldn't have been possible for me without your hard work.
Test Subject
#124 Old 27th Jul 2010 at 10:33 PM
So is there any code yet for incorporating Clips into custom objects? I'm trying to figure out how to apply a clip to a static mesh.
˙uʍop ǝpᴉsdn ǝɹ,noʎ 'oN
#125 Old 27th Jul 2010 at 10:55 PM
Quote: Originally posted by Cosmas
So is there any code yet for incorporating Clips into custom objects? I'm trying to figure out how to apply a clip to a static mesh.


Yes, it's basically the code in VenysJava's post (#120).

"Part of being a mesher is being persistent through your own confusedness" - HystericalParoxysm
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
Page 5 of 11
Back to top