Has anyone cracked the ragdoll code?
OK, I just noticed you posted a second function. Here's my version of your two functions:
Public Function HexToDec(Hex As String) As Double
HexToDec = Val("&H" & Hex)
End Function
Public Function DecToHex(Dec As Double) As String
DecToHex = Hex(Dec)
End Function
Talk about making something complicated out of something simple...
www.SaveCOH.com: Calls to Action and Events Calendar
This is what 3700 heroes in a single zone looks like.
Thanks to @EnsonsDeath for the GVE code that made me VIP again!
Thanks! Very nice, I might have to tweak some syntax, but I will give it a go.
I just recently started reading this thread 2 days ago, but I do so want to start poking at it, and see how things come out. Week ends are my only time I had to look at this stuff...
but weekends are my only time to everything else too.
Thanks!!!!
New version with all the 3D wireframes display is ready for download.
Screenshot
Homepage
I had trouble getting the wireframes to display in proper orthogonal view, so I'll have to play with that a little more. I'll clean up the interface and get started with the animation keyframing sometime this week.
www.SaveCOH.com: Calls to Action and Events Calendar
This is what 3700 heroes in a single zone looks like.
Thanks to @EnsonsDeath for the GVE code that made me VIP again!
Seriously, hire this man.
[ QUOTE ]
Seriously, hire this man.
[/ QUOTE ]
After you smack him around for using a keyword as a variable name.
Holy crap Leo and company...nice job!
"Scumball in the side pocket." - 8 Baller
So....
who is up for SATURDAY NIGHT FEVER!!! 8)
Ok, 0.45 worked fine under linux, the new one tho, spits this out:
X Error of failed request: GLXBadDrawable
Major opcode of failed request: 128 (GLX)
Minor opcode of failed request: 11 (X_GLXSwapBuffers)
Serial number of failed request: 5673
Current serial number in output stream: 5840
Locking assertion failure. Backtrace:
#0 /usr/lib32/libxcb-xlib.so.0 [0xf7cc0767]
#1 /usr/lib32/libxcb-xlib.so.0(xcb_xlib_lock+0x2e) [0xf7cc081e]
#2 /usr/lib32/libX11.so.6 [0x7ec7e518]
#3 /usr/lib32/libGL.so.1 [0x7eda6a75]
#4 [0xf7ccbd38]
#5 [0xf7ccbd38]
#6 [0xf7ccbd38]
#7 [0xf7ccbd38]
#8 [0xf7ccbd38]
#9 [0xf7ccbd38]
#10 [0xf7ccbd38]
#11 [0xf7ccbd38]
#12 [0xf7ccbd38]
#13 [0xf7ccbd38]
#14 [0xf7ccbd38]
#15 [0xf7ccbd38]
#16 [0xf7ccbd38]
#17 [0xf7ccbd38]
#18 [0xf7ccbd38]
#19 [0xf7ccbd38]
Im sorry if this answer was posted, but I didnt see it:
Has it been established that these two values are timing? Example from the demo record that Quinch made.. (thank you) if it is timing, has it been established on how it works?
7000 and 7020
27 1 EntRagdoll 11 7000 7020 00000085000001FF000001FF0....
I'm not sure if it is timing... haven't had time to play around lately. All I do know at the moment is that the second HAS to be greater than the first. If they're equal or lower, nothing happens.
Maybe it's increments? it's a sort of a timing... but if you say do it from
7000 to 7020, make this movement in 20 increments after 27 miliseconds?
I'd think that it's more along the lines of moving from the existing position to the ragdoll position given in the current line. I guess that'd be pretty easy to test, just put a much larger number in the second entry and see if the transition gets any slower.
what about the movement for ankle, wrist, fingers and toes? I know emotes can do that but the ragdoll movements can't, right? It would be nice it toes could point and fingers move out (like pointing). Great work on the poser. I can't believe how much work you have done on this.
-Listen to my Light!
-MA #1065 "Star Struck"
I was thinking the same thing on the drive home today.
Can I make an air guitar emote without the hands??
What about getting a squiddy knocked back? Does that have a rag doll? If so, does it have 11 joints?
Whatever the two values are- 2 different models can use them
0 2648 EntRagdoll 11 662346883 662345769
0 2709 EntRagdoll 11 662346883 662345769
I took this off a demo record- there were several examples of two different models using the same 2 values- they are always very near each other.
I dont' think it's miliseconds to midnight
Value /1000 (Seconds) /60 (Minutes) /60 Hours
662345769 6623457.69 110390.9615 1839.849358
Here are some value pairs I pulled off a demo record.
The second is LESS then the first, but the pair get progressively larger
662334506 662333644
662335172 662334367
662335943 662335083
662336663 662335879
662337410 662336663
662337736 662337410
662337936 662337410
662338698 662337548
662339442 662338227
662340168 662339153
662340884 662339738
662341616 662340513
662342357 662341247
662342357 662341247
662343188 662342088
662343188 662342088
662343842 662342723
662343842 662342723
662344694 662343713
662344694 662343713
662345308 662344182
662345308 662344182
662346133 662345071
662346133 662345071
662346883 662345769
662346883 662345769
662347606 662346612
662347606 662346612
662348305 662347232
662348305 662347232
662349133 662348058
662349133 662348058
662349883 662348773
662349883 662348773
662350612 662349528
662350612 662349528
662351353 662350238
662351353 662350238
662352094 662351034
662352094 662351034
662352844 662351744
662352844 662351744
662353570 662352551
662353570 662352551
662354317 662353302
662354317 662353302
662355067 662354146
662355067 662354146
662355067 662354146
662355786 662354769
662355786 662354769
662355786 662354769
662356512 662355573
662356512 662355573
662356512 662355573
662357199 662356274
662357199 662356274
662357199 662356274
Each number I have here is 9 digits- 3 sets of 3 numbers?
The rag doll lines i have in my demorecord all are at 0 miliseconds, so..,....I dont' know. I think I will have to take my PA out and kills some things.
Not necessarily - the decimal values in my demos seem to vary between six and nine digits. Here's a file with all the EntRagdoll values from all the recorded demos I have, in case you need reference data.
I wonder if it depends on the zone or time of day?
Okay, I'm in the midst of writing a custom animation generator, and I have the bare essentials done except for outputting my internal representation of the animation to ragdoll code. (Yeah, it's "only" that left, but the input, keyframes, and a multiple-angle display are all done.) So, I'm resurrecting this thread in case anybody out there has more knowledge or experience to share. Here's a summary of where I am right now, before I begin to really mess around with EntRagdolls:
<ul type="square">[*] There are eleven bones.[*] Each bone has PYR values represented as an 8-digit hex number.[*] Going from 0 to 1024 represents a full circle.[*] The bones are ordered as follows: Lower Right Leg, Upper Right Leg, Lower Left Leg, Upper Left Leg, Lower Left Arm, Upper Left Arm, Lower Right Arm, Upper Right Arm, Head, Torso, Waist.[*] We really don't know what the second and third arguments mean.[/list]I'll probably be spending a lot of time with my FF/nrg defender this weekend, knocking low level mobs around and recording demos. Does anybody have any additional insight to share? Has anybody gotten a custom ragdoll figure to smoothly animate in-game, even if it's not quite the animation you wanted?
PM Leandro. Maybe he'll share his code for the Poser program with you. You can see what he's done so far here.
Currently, it looks like this. This is a purely functional UI that will undoubtedly evolve as the program progresses, but the main pieces are there:
<ul type="square">[*]The three small views are fixed, flat perspective view of the figure along the three axes. Individual bones can be adjusted with the mouse, although the precise connections between mouse movements and rotations needs some work.[*]The large view on the right is an adjustable view that you can adjust to see whatever angle you want on the figure.[*]Additional fixed and adjustable views can be opened using the "Open View" button.[*]The left grid is the current key frame, showing the PYR values for each of the eleven bones. The "S" column is a smoothing factor that controls the interpolation from the previous key frame to the current one.[*]The right grid displays the key frames. An "X" in a box indicates that a bone has a position set. Hyphens indicate interpolation.[*]The export button! It does nothing! (Yet)[/list]I've actually played around with Leandro's program a fair amount and drawn some obvious inspiration for the UI from him. (He's also told me that he's more than happy to let me wrestle with this ragdoll programming.) I'm currently at the point where I'd like to get the export actually working before I start messing with anything beyond a purely functional UI. Once export is working, I'll do things like track down a nicer looking figure instead of Boxy Rainbow Man.
Judging from a quick demo of my ff defender tossing around some warriors, EntRagdoll commands are recorded approximately every 250 ms, or 4 commands per second. This contrasts with movement, which is recorded about every 33 ms, or 30 commands per second.
Of the two unknown numbers, the first parallels the timing in the demo. If you look at the amount of time between two EntRagdoll (not necessarily consecutive) commands and the difference between the two values of that first unknown number, the difference is always three times the amount of time (up to a small amount of rounding error). Perhaps the physics system needs timing information at 3000 ticks per second, while the rest of the game records at 1000 ticks per second? This could explain why the demo saves duplicate timing information.
Examples: (timing is absolute from the beginning of the demo)
2660 2460 EntRagdoll 11 605724759 605723741
2910 2460 EntRagdoll 11 605725509 605724403
Difference in time = 250
Difference in first unknown = 750
Div by 3 = 250
10425 2461 EntRagdoll 11 605748055 605746940
21409 2438 EntRagdoll 11 605781006 605779865
Difference in time = 10984
Difference in first unknown = 32951
Div by 3 = 10983.67
This pattern has held for a few tests from one demo, but it appears too precise for me to think that it's a fluke of my small sample size.
Now, on to the second number....
[ QUOTE ]
PM Leandro. Maybe he'll share his code for the Poser program with you. You can see what he's done so far here.
[/ QUOTE ]
My code won't help him because I think he's coding in some java 3D addon, while I used OpenGL. Pure OpenGL can be messy (38 lines to draw one cube), so he's probably better off not looking at my mess.
www.SaveCOH.com: Calls to Action and Events Calendar
This is what 3700 heroes in a single zone looks like.
Thanks to @EnsonsDeath for the GVE code that made me VIP again!
My code is a lot more compact. Stripping the declarations and such, this takes the long string in EntRagdoll.Text and puts it in each of the scrollbars:
For Init = 0 To 10
ScrollPitch(Init) = Val("&H" & Mid(EntRagdoll.Text, (Init * 24) + 1, 8))
ScrollYaw(Init) = Val("&H" & Mid(EntRagdoll.Text, (Init * 24) + 9, 8))
ScrollRoll(Init) = Val("&H" & Mid(EntRagdoll.Text, (Init * 24) + 17, 8))
Next Init
Would most likely work as an Excel VBA macro by replacing the references to controls with references to cells.
The Val() function takes an string and returns a value. Putting &H before a number makes VB realize it's a hex and not a dec. So Val("&H" & HexNumber) is the same as the big function you put there.
www.SaveCOH.com: Calls to Action and Events Calendar
This is what 3700 heroes in a single zone looks like.
Thanks to @EnsonsDeath for the GVE code that made me VIP again!