Ok, I think we’re approaching a point where it’s time to start talking about simulating more than just rigidly attached cells. Without doing softbody simulations, the best alternative would be skeletons. So, I’ve built a model that can determine the strength & flexibility of a skeleton, which can then be used to determine the swim speed & energy consumption.
Here, a fish is only represented as a spine, ribcage, and muscle tissue. The white Ts are the bones, and the red lines are the muscles. This model can support anguliform & thunniform movement, depending on the number of segments & flexibility of the skeleton.
The method of determining swim speed involves a couple variables: number of segments, joint flexibility, rib stiffness, width / height, spacing, and energy consumption per muscle. Here is the equation I came up with:
E is energy consumption, r is rib stiffness, w is width, s is spacing, g is the number of segments, and f is joint flexibility.
As you can see, while being an anguliform is possible, it’s much more advantageous to add stiffness, and trend towards a thunniform.
Furthermore, this technique can be adopted for other uses. Having multiple highly flexible symmetric
‘skeletons’ could represent an octopus. You could also have other body plans, including humanoid ones.
I think this is pretty interesting. How would this be handled in the editor, considering player’s might not want to go to the effort of individually placing a ton of joints and setting their flexibility manually?
I think this ideea needs more polishing especially for other locomotion types that arent swimming.
Some quick eyeballing of this model tells me youd need to include:
-the viscosity/density of the medium of locomotion
-contact surface
-muscle efficiency
You’re right about that. I was focusing on swimming creatures because that seems like the earliest form of locomotion we’d need to implement. Walking would probably be similar to the swimming equation, but mostly because the swimming equation is a measure of muscle efficiency, instead of just swimming efficiency. Though I would need to add a factor of water friction, but that would probably be defined by the whole body shape instead of just the leg segments.
I was thinking that the player would draw a line, and they could choose the number of segments inside that line using the scroll wheel. Then, you could adjust multiple segments at once using a box select, (I’m talking about when you click and drag on the desktop, and it makes a box which selects anything it touches) Then you could also use the shift & control keys to select. You would also be able to select a single segment to edit it’s properties individually.
That sounds pretty complicated. Also I’m worried about the overall editing experience like how you build the sections you don’t want to bend, and how flexible the editor would be for people who don’t want to make the default kind of fish…
I think we should go for a system as simple as possible- perhaps starting with body “bones”, then overtime add “limb bones”, which are built specifically for arms, legs, etc-
I’ve been kind of thinking that we’ll start with metaballs (and convolution surfaces will be used to smooth them out for nicer display once Nunz gets that done) that can be placed and moved about. And then the player can add joints between specific metaballs to create appendages. I haven’t thought things through much more than that, but I think that system may be simple enough for most of the players to understand quickly.
Yeah- I think that will work well, atleast for now-
To tell where the metaballs go, I think we coullld implement a “bone system” like this, which basically just make animation and implementation easier for us, while making building simpler for the player. It’s like spore, just a bit more complex. Perhaps there are tail bones, and body bones, to make sure animation is more efficient.
I’m sorry, I think I explained it poorly. A bone which you wouldn’t want to bend could have it’s joint flexibility set to 0, so that it wouldn’t bend. It can also be extended to creatures that aren’t fish, or aren’t even aquatic. Magna inguine massam, for example, is a human skeleton. I just thought it was funny to draw it as a fish. I specifically designed it so that you don’t need to follow a classical fish skeleton. Also, for the editor, Here’s a diagram:
I split off this thread so let’s have the convolution surface be there.
And maybe here we can discuss if @stingpie’s idea is compatible with the approach of starting with metaballs and moving that system to convolution surfaces later in this thread?
my concern is how will players like having to input so much information, particularly stiffness and joint flexibility? His idea is readily applicable to both convolution surfaces and metaballs.
you’d be able to select the archetype of limb you want from a couple standard options. Then, if you want to edit it more, you can select a couple, and use sliders to customize the variables.
sorta like the limbs you can use from spore, except it’s different tissues instead of different leg shapes.