Couldn’t find any references to this in the forums so I thought I’d ask. How did you guys (OTEE) create the deformation effect in GooBall when the ball would contact something like a boulder in sticky mode?
Best regards,
Doc
Couldn’t find any references to this in the forums so I thought I’d ask. How did you guys (OTEE) create the deformation effect in GooBall when the ball would contact something like a boulder in sticky mode?
Best regards,
Doc
I think they did that using the mesh morpher. With that you can morph between 2 object that have the same amount of verts. I might be wrong though.
Bill
Well, I looked at the first arena in the demo and rolled the ball up onto some of the rocks, onto the edges of platforms and around on some of the other obstacles. It seems like the goo ball does respond in some sense to the body structures that it encounters in a way to conform to the unique polygonal shapes corresponding to each position.
Wouldn’t using the mesh morph require a precomputed mesh to morph to? I don’t think that would work in this case, or at least can’t see an effective approach at the moment.
Seems like there might be a couple possibiliites: 1) You would need to allow for direct alteration of the mesh procedurally through the OpenGL (GL Class) interface (or via direct OpenGl access through a plug-in) using surface matching or something. And in that case I think that you would have to handle the physics outside of the built in physics engine. I am making an assumption here because I would imagine the environment is a mesh collider and therefore the goo ball would have to be rigid body. So how would you get that behavior of a mesh colliding in custom ways out of a rigid body collider?
Best regards,
Doc
…or you could have a skinned ball with lots of “bones” around it, and move the bones to deform the ball.
Well, a lot of this stuff (especially 3D character animation and unity in general … which I realize covers a lot) is still a bit new to me so forgive me if I ask some rather obvious questions.
My questions:
First I guess, is this actually how it was done? Noting that you work for OTEE now I figure it probably is and my questions proceed under that assumption.
How are the bones/joints deformed during game-play to match the surface that the GooBall is resting on? Is it the Ragdoll physics? Or some other method?
How many bones did it take? The gooball seems to conform to odd shapes, such as the cacti, in the first scene rather decently; so when you say lots of bones you mean…?
Do you have multiple skins with the bones arranged on the bottom of one ball or are the bones evenly distributed in a lattice around the whole ball? (Seems like it would be the later based on the fact that the entire gooball seems to rotate and deform; not just an outer shell.)
When the gooball is in sticky mode it achieves rather odd and unstable resting points that collapse to stable positions given the immediate geometry as soon as you let go of the sticky button. Is this a function of moving between a ragdoll object and a normal object under control of the physics engine? Why?
How did you manage the dependency graph in Maya? What sort of bone structure would allow for all the various deformations and appropriately impact connected joints?
Sorry for all the questions and, given my inexperience, the likely poor understanding of the subject matter. Thanks for your help though!
Best regards,
Doc
I don’t know if they did this with bones, but if they did it must be a root bone with a child/limb going out to every vertex on the surface of the sphere. Sounds like a lot of bones so maybe they instead distributed them evenly around the sphere with 30 bones or so. But with the bones I gues you would snap the tips of the bones to contact normals of the surface your “squishing” over?
Or, they may have used a “Goo Lattice”.
Ok a ‘Goo Lattice’ would be funny and all but any response possible from the otee crew?
Best regards,
Doc
I should probably elaborate …
During the beta, and perhaps up until about version 1.1 of Unity, there was a feature called Goo Lattice. It was never fully imlemented and never documented and eventually disappeared.
I had always figured it was a deformer lattice and was the culprit used to make the GooBall act all gooey.
Maybe, if we’re all really good, the Unity folks will put it back in the editor one day.
Looks like that day has come and gone…
Too bad too, sounds like it was a cool feature!
It should be semi-easy* for someone to code a lattice control. I looked into it a while ago, and we have access to everything we need for it, it’s just a matter of spending the time to add it.
-Jeremy
*Translation: Bloody hard taking months of grueling pain-ridden work only to find out that you thought they said “lettuce”.
Mmmmmm, lettuce.
It would be nice to have low-level support for cage deforming of objects, especially if it were physics-aware as well.
I’m not sure if that’s what the Goo-lattice was, but I always kind of thought it was from playing Goo-Ball.
Mmmmmm, lettuce.
It would be nice to have low-level support for cage deforming of objects, especially if it were physics-aware as well.
I’m not sure if that’s what the Goo-lattice was, but I always kind of thought it was from playing Goo-Ball.
AFAIK it was just a handy programmatic way to quickly deform the mesh without having to set up a complex set of bones, etc.
They likely just checked what lattice points where intersecting some geometry, and shifted the points around based on that, maybe with some simple spring code.
There are probably better ways to do it with PhysX anyway mind you, although I agree it would be nice to see this built-in if any of the Unity devs needed a side project.
-Jeremy
You can use Impact Deformable, available on Unity Asset Store: Impact Deformable | Physics | Unity Asset Store