Project update for Anatomy Re-engineering Framework

Written by Lathreas

A small project update for the Anatomy Re-engineering Framework!

To recap, the rationale behind this project is that re-engineering human anatomy is a complex task, and cannot be done without proper Computer Aided Design tools. Although many CAD tools exist, these are focused on factory-produced products with sharp edges and well-defined dimensions. Unfortunately, no tool yet exists that faithfully represents the functional properties of anatomy such that these properties can be changed without interference. As such, we are developing such a system to answer our strategically critical engineering questions.

Moving on to the facial region: representing irregular bones

For this past while, we have mostly focused on the elbow region to test and implement a working principle of long bones. Now that we have this mostly in place, and we know that the joint model works, it becomes time to move on to bones that are substantially more difficult to model: irregular bones.

The difficulty of irregular bones lies in the 2D parametrization of the surface. With long bones, we could use a simple cylindrical parameterization, such that we can project data, deformations, and anchor points on these surfaces. However, irregular bones especially have such a weird shape that trivial parameterizations are not possible. Instead, UV-unwrapping is needed, and that leads to having to make arbitrary choices in how to unwrap each bone.

UV-unwrapping is in principle a common procedure in 3D asset development. For games, a UV-unwrap can be made relatively arbitrarily. However, for CAD systems, especially the one we are making, the choice of UV-unwrap must be carefully made to ensure that all features have consistent detail and don’t produce any artifacts that may interfere with the function of, in this case, a bone. As such, we cannot just define the topology of the bone on a whim.

We set out to find a consistent representation of irregular bones that would not lead to problems down the line. While working on the shoulder blade, we brainstormed, implemented and tested various ways to represent a bone, from developmental, mechanical, to anatomical standpoints. Some of these implementations simply weren’t feasible for what we needed, for example due to bad topology or because it wouldn’t represent the features we require, so this experimentation proved to be very important for us to be able to move on.

Now that we have done all of this experimentation, it seems that we have made a small breakthrough in how we can best represent irregular bones for functional editing! The model that we will explore going forward, and which appears to be very promising, splits up each irregular or flat bone into its defined anatomical surfaces and its anatomical borders. Each surface is then separately UV-parametrized, while each border connects the surfaces and through beveling allows for fine detail to be presented where it is needed.

The area highlighted in yellow represents one anatomical surface. Note that the jaw does not yet use the parametrized model and is triangulated.

This representation has the advantage that any anatomical features, such as joints, can be represented as separate anatomical surfaces too. That way, there is a clear separation between each part, allowing the system to infer what shape each bone should have without artifacts. And similarly, this representation allows us to make very consistent decisions about how to topologize the bone’s surface, and avoid artifacts of three- or five-edge stars interfering with bone function.

Closeup of the topology of the anatomical surfaces of the maxilla, one of
the most complex and relevant bones in the skull.

Excitingly, this has allowed us to make a beginning of representing the bones of the skull – which are incredibly important for engineering, say, the anatomy of an anthro snout. We will soon begin exploring if this representation is powerful enough for us to create such a shape, and to smoothly deform the skull in that direction. This may require re-examining each bone’s topology to ensure enough control points exist to represent the much larger shape of a snout.

Muscles

We have some similar advancements in muscles. Previously, we had implemented muscle tissue as a series of fascicles that were aligned next to each other. Although this approach produced some appealing images, getting each string to align turned out to be difficult due to limitations in Blender’s strand system. We are now investigating a model where alignment is implicit to the model, because all vertices are already connected to each other! This approach is known as a “continuum model”, which offers several benefits and is relatively easy to switch to.

In this model, the direction of the fascicles are not determined by the direction of individual strands, but instead by a continuous 2D vector map that determines the direction of fascicles. Due to the properties of this vector map, we may represent it quite simply as the gradient of a UV map. In the case of a sphincter, this UV map must loop around to ensure that the vector field is defined properly.

Fancy picture of a muscle that has been textured based on the gradient defined by the UV parameterization. The user can smoothly define regions on the muscle as tendons, displayed in a white texture. The grooved texture is currently for visualization purposes only.

Data in Blender

After our development of Geoscript, presented in the last update, we went looking deeper into Blender’s data model to experiment how we can implement the data access. Blender internally allows data blocks to store arbitrary data, which is useful for us! Not useful for us is that any such custom data would be included in every object, regardless of whether it represents a bone, a muscle, or skin.

As such, we are currently using our own makeshift type system to represent crucial data of each anatomical element, such as the dimensions of a joint or what it connects to. It is not ideal, but it works for now, and we will later refine this process to make the data representation more robust.

User interface

We’re getting closer and closer to something that’s not just a demonstration, but a usable product. And that means we can and should start focusing on the user interface too.

I’ve added the beginning of a user interface for adding and editing anatomical joints on existing anatomical bone objects.

The bone properties panel, which allows the user to add, remove and edit joints linked to bones.

We also have some lovely work on UI by Pine, who contributed the mode-switching system that allows the user to switch between viewing and editing bones, or muscles, or skin. This will be very important for the users to be able to cleanly work and focus on the parts that they are engineering, which otherwise would be hidden under the noise. Thank you Pine!

ARF Context Modes, contributed by Pine. Selecting such a
mode brings the user into a focused view.

Looking forward

Now that we have the conceptual model of irregular bones in place, we can move towards finishing the entire skull, implementing sutures, and then examining the shape of an anthropomorphic skull. We will also soon implement the simulations of soft tissue, like muscles, to ensure they won’t intersect bones or other muscles during editing.