This is why Inverse Kinematics are the best thing to ever grace this Earth

This is all I’ve been working on for the past 2 weeks. As you can see, the results range from “i gatta haz dis brik” to “rslistix battel rifel”

Code for first one:

Animation.RightArm.Grab(game.Workspace.Part)

Code for second one:

wait(2)
Animation.RightArm.Grab(Gun,Vector3.new(0,-0.4,0.2))
Animation.LeftArm.Grab(Gun,Vector3.new(0,-0.4,-0.5))
5 Likes

Will this turn into something open sourced or are you just sharing your work with Inverse Kinematics?
It looks cool, but does it work with custom characters (Ex: The Lego Hero Factory characters) and non-player characters (NPCs)?

Math is math no matter what. It will work in every situation, given that you modify it.

Also, I make no income. This is by far the most advanced animation system on ROBLOX, and I’m not going to give it up until I have properly taken advantage of it! After I become pretty popular, absolutely I’ll opensource all my stuff. But right now? Absolutely not!

What actually is Inverse Kinematics?

1 Like

GOOGLE IT

GOOGLE IT[/quote]
It did not help.

Ouch

Ouch[/quote]
Those are well-done animations, but nothing I’ve not seen before.

Kinematics describes the orientation and motion of bodies and systems of bodies. Additionally, where forward kinematics typically refers to computing the position of an object given input parameters–rotation, relative orientation, velocity & acceleration, angular velocity and torque, etc.–inverse kinematics is the problem of computing the inverse, as in, necessary parameters to guarantee the position of a certain object. Usually this is an end effector attached to a sequence of joints, as in a robot arm in an industrial setting.

While forward kinematics is pretty straightforward if you use your equations of motion, inverse kinematics is difficult due to a number of conditions:
[ol]
[li]There may be multiple (possibly infinitely many) optimal solutions for a given problem, in which computing the best one becomes undecidable (your computer gets stuck)[/li]
[li]There may be no solutions at all, especially if a system is locked in extremal orientations (in which case the orientation is called singular[/li]
[li]Specific, situational constraints are common in practical applications and render many solutions unacceptable[/li]
[li]The number of degrees of freedom (independent parameters) in a given system can make the number of configurations unmanageable for naive motion planning algorithms. For example, protein chains can have upwards of 200 DOF, giving rise to some number like 10^143 different possible orientations. Even systems with merely 6 DOF have no straightforward methodology.[/li]
[/ol]

Ouch[/quote]

Standing on uneven ground

Walking ways other than forward

OUCH

Reminds me of :

Ouch[/quote]

Standing on uneven ground

Walking ways other than forward

http://i.gyazo.com/e31a5b3b448eb993c960a1f2f0c3cadc.mp4

http://i.gyazo.com/13b8e480bcc4697a0eae7689745cdd33.mp4

OUCH[/quote]

I don’t hear people complaining about any of those :?

Knees, ankles, wrists, elbows, stylized animations, footstep sounds, FE, multiplayer, 50 player servers, quick animation development?

Animation blending

Animated trees that dynamically interact with wind

I’m sorry that you don’t really have a demo to criticize :uhhh:

I just thought this was a very assertive claim

edit: Replaced dead gyazo links with mp4. (This wasn’t my proudest moment, but I’ll still mend the link rot.)

I am also into the inverse kinematics.

2 Likes

Did this thread seriously become an ego contest between Axis and Tomarty.

Please stop. You’re both beautiful, ok?

Roblox Develops is an ego contest, did you not get the memo?

It’s true, Trey is being presumptuous–but your one-word interposition proves you no less mock-worthy than him.
If you’d like to object, then act in a respectable manner when doing so.

[quote] I don’t hear people complaining about any of those :?

Knees, ankles, wrists, elbows, stylized animations, footstep sounds, FE, multiplayer, 50 player servers, quick animation development? [/quote]

When I joined the game, it felt like “Campness simulator” instead of an animation demo.

They could do with proper ground tracking and less exaggerative movements.

[quote] Did this thread seriously become an ego contest between Axis and Tomarty.

Please stop. You’re both beautiful, ok? [/quote]

I made somewhat of a joke post about a thing I’m working on. Then Tomarty wanted to respond, so he did.

Tomarty and I have talked extensively about our animation techniques. I don’t see where this became an ego contest. Just two guys poking a little fun at each other.

EDIT
Or, now that I see that Tomarty thanked your post, maybe he doesn’t see it in the same way I do.

I didn’t know this was becoming an ego contest. Have you read my thing under my avatar? I tend to exaggerate a lot for effect. I don’t really mean it.

ANYWAY. Those trees look pretty cool. That was my favorite part of your demonstration. Are drag forces being applied to each branch? It doesn’t look like it, but you never know. I also like your character models. Always have.

However, on the things you stated as arguments for your system, I have a few comments to make.

If you couldn’t tell, my characters also have knees and elbows and hands and feet. Actually, they have the full construction for upper arms, lower arms, and hands. However, because I’m working with a basic ROBLOX character, I only map the arms to the lower arms and legs to lower legs, however the full model is still calculated and I could make some modifications to add upper arms/legs and hands/feet. I like the basic ROBLOX character because if you get too much away from that, it stops feeling like ROBLOX.

I don’t see how stylized animations is really valid as that’s up to the style of an animator, not the system.

I love your foot step sounds. I’ll definitely be working on something like that sometime soon.

As far as FE goes, I have my own network system which automatically sends all local changes of the character to all other clients, which then upscale the changes to whatever framerate you have (Which is probably 58 or something), and the best part is that if the CFrame doesn’t change then the information doesn’t get sent. You can add new update checks with a function, Network.AddToAnimationUpdater(Object,Property), which would be used as,

Network.AddToAnimationUpdater(Shoulder,"C0").

50 Player servers, however. That is something I don’t know if I can do. The Network updater can slow the update rate if there are more players, though the animation of the players people see will drop in quality a bit, but it will still be at the framerate of their client. I do really like how low impact your animation system is. You could probably handle 200 players.

Quick animation development, however, is the singular goal of my system. Literally, animation is down to RightArm.Grab(Part,Offset)

Something that my system has as a result of this is situational awareness. In other words, there are no animations, per se; they’re all made on the spot, and therefor this means that it will work in every situation. Grab(Ledge) will try to grab the Ledge part no matter how you’re standing or where you are, while your other arm keeps doing its thing, and your legs keep doing their thing.

I would show you, but I’m in the middle of reorganizing everything.

1 Like

Oh, this is pretty much what I was working on recently, although I didn’t finish the animation system itself. This is my function, but I bet your is way more elegant:

function animator:MoveLimb(joint,center,lookAt)
	local c = {lookAt:components()}
	if lookAt.p == lookAt.p and c[4]==c[4] then -- NAN check
		local center = center:toObjectSpace(joint.Part0.CFrame)
		joint.C0 = CFrame.new(center.p,lookAt:toObjectSpace(joint.Part0.CFrame):inverse().p)
		joint.C1 = CFrame.new(0,lookAt:toObjectSpace(joint.Part0.CFrame*center):inverse().p.magnitude-1,0)*CFrame.Angles(-math.pi/2,0,0)
	end
end