Basic Macroscopic Procedural Parts Design

I have spent a little bit of time designing a rough proposal for a procedural parts demo. These ideas seem to be relatively straightforward to implement in the game, though I do not claim that they are a particularly long term solution that would be able to adapt to the full range of features we would want to have eventually. This is mostly a test to see if this style of procedural parts design would work, and to potentially create a more visually complete demo of the macroscopic and aware organisms.

I initially created these as internal notes and ideas, so some parts may not be as clear or missing the context, so I am mostly just asking if this design seems like it would be worth me potentially working on. (Unless anyone else would want to create it). This is from the perspective of the implementation, not the editor.

I have identified two parts to work on: The Mouth and Generic Limb Parts

Mouth:

Creation Steps:

Use Mouth Plane to intersect Face with plane of depth Mouth_Depth

All Triangles intersecting are to be split, and the resulting intersection vertices on the mouth plane are to be recorded as the mouth outline.

There are to be two main parameters: Mouth_Hinge_Depth is the total depth, and reaches the hinge of the jaw. It represents the full mouth cavity.

The other depth is the Mouth_Opening_Depth, which is how far the mouth opening goes before it is covered by skin.

Triangles past the mouth opening depth will not be split, but the mouth plane will still record the intersection vertices for the purposes of internal mouth shape.

All vertices below the mouth plane and in front of the hinge are assigned to a separate Jaw animation/bone group. (Vertices that are within that area and are not part of the mouth opening may be handled a bit differently, to handle the stretching that occurs at those triangles spanning the mouth plane that would stretch a lot. Like perhaps subdividing triangles in that area to increase quality when mouth is stretched)

The Mouth Outline (which has its vertices marked for opening/interior of the mouth) will be offset into the center of the mouth in order to get the tooth plane. This can also be used for constructing a internal volume for the mouth and things like lips.

Teeth could be placed evenly across the tooth line, or according to some other more complex function involving multiple tooth types.

A Tounge could also be created by having another offset in the mouth outline.

To start, The Mouth will only involve the area between the Muzzle and the Head Metaballs. Will not need to check intersection with any other metaballs’ skin. Might need to involve the Neck metaball for the jaw animation/bone weighting, but this if a future consideration. In the future there could also be more complex sets of metaballs associated with the Head that would need to be checked against.

It might be easiest to have the Mouth Plane always perpendicular to ground, and have the muzzle metaball being moved change the rotation of the mouth plane vs. the Head.

The Mouth Plane could even be set to Z=0, and have that be the main reference point that all other heights are compared to. (The mouth would be the main reference point for the entire organism)

Generic Limb:

This design is of a generic vertebrate-style limb. There are various parameters for number of joints, but this design shows the common tetrapod Shoulder-Elbow-Wrist-Digits plan. There are two modes shown here for the limb: Planted mode, where the limb operates as a foot, and Swim mode, where the limb operates as a fin. A limb can be capable of use in multiple different modes, such as a Tiktaalik-like organism using Swim mode in the water, then switching to Planted mode for its limbs on land. Other modes not pictured are Flight and Grasper/Arm modes, and other modes could be devised.

5 Likes

I think it’s a good idea to have some sort of presentation material for the future stages. I also support you targeting these features, as you already have your hands dirty in creating our planet generator.

I will say that I am commenting on this post with the frameworks established in the Macroscopic Editor concept document I shared in mind.

I think any work on a “Mouth” prototype might be a bit early, as the exact progression of mouths could really influence how they are handled - extremely procedural, or a bit more “part-based”? Mouths vary alot, from being mandibulated, or jawless, etc. and having that variety of parts could make us lean towards being a bit more “part-based” if necessary as opposed to sculpting-procedural. But if you feel like you have a vision that you think is very well thought out and corresponding to our goals, feel free to pursue that.

Any work on the torso and limbs meanwhile would be pretty immediately beneficial I think, because I do think that no matter the exact nature of progression or implementation, that will be pretty consistent.

  • Metaballs are linked laterally with each other. You can add more metaballs for the torso on each end, and scale the metaballs.
  • You can place a metaball extension on this torso, which will serve as the root of an appendage. You can add more segments to this extension and scale them to create different parts of the appendage.

For more extensive appendage functionality…

  • You can place something at the end of an appendage. This will be the basis of placing different extremities on your appendage. In the future, this will alter the appearance and abilities of your appendage.
  • You can designate the base of an appendage as a “joint”. This will specify that appendage as being a limb, and as having a function related to movement. In the future, this will lead to the system revolving around fins, feet, and graspers.

For more extensive customization…

  • Ability to flatten or broaden an appendage/part of your torso. This will tie heavily into the constraint system.
  • Some sort of basic digit manipulation - placing a foot or a hand or a fin for example, and being able to increase or decrease the number of digits present.

I think in terms of gameplay prototyping with editor functionality, one important thing to think about is creating ways to proximate different parameters - for example, SA:V, Mass, a “Streamline” measure from the shape of metaballs. Then derived stats from these larger parameters - health from mass, buoyancy from streamline, etc. But this obviously relates to gameplay and is beyond the scope of a basic editor prototype.

This post might be useful too. Though it was created before the most recent concepts, I do think their baseline controls would be pretty universal beneficial: Macroscopic Editor, Progression, and Principles - #36 by Deus

If you go about this soon and would like some input, please do feel free to contact me about it! Again, feedback here was made with the master concept in mind - so if you are pursuing some other interpretation, take all this with a grain of salt.

3 Likes