I'm Lluis, a computer engereering student, and an app and videogames programmer from Spain. My partner needed a free app to study anatomy, so we decided to use these models to create it. It is in the early stages of development, so there is a lot of room for improvement. I would appreciate your opinion and / or ideas to improve it.
It's made using Unity, so it can be exported to any platform. I don't know 3D modeling, so it's been difficult to optimize the mesh for mobile. I've reduced the polygons of the models to a 30% of the original size using the Decimate tool in Blender, but it's not enough to get a good performance in low-end devices. You can download the demo APK here:
https://bit.ly/30QcFyt It is very helpful if you tell me the performance and model of your mobile. *Note: Only tested on an Android high-end mobile. *Note 2: The colors of the elements are not strictly correct. They are temporary colors.
Thank you! :)



UAu! Es enorme!
Hablamos mejor mañana, pero ya te digo que estoy boé de impresionado!
MESHES
The file size has been a central question on the contribution made in the .blend, and it is still too heavy for many computer devices.
A solution could be to split the file into several chapters that could be loaded independently from each other (Bones+Muscular insertions+Ligaments/Bones+Vascular system/Bones+nervous system...).
The use of curves for all vessels reduces a lot the poly-count (and make it much easier and cleaner to edit)
Another important trick is to instance the symmetrical structures (Alt+D) in Blender, instead of duplicating them (Shift+D).
VISUAL
In the .blend, the default colors of Blender >2.8 have been used for both the file and the website. Background is 303030
Colored lights help give an overall warm look.
Although it is not photo-realistic, saturation is intentionally lowered to pacify the contrasts.
Some specular/metallic effect gives humidity to the materials, and some Subsurface scattering can be a good compromise between a plain diffuse and transparency.
In the .blend, the orthographic view is default because it seemed convenient to study the anatomy and avoid to get lost while navigating in the 3D view.
Your buttons and sliders for the cross-section planes are very ergonomic.
The system used to create a rim-like color (to get something that looks as a plane where the mesh gets visually opened by the cross-section plane) in the .blend passes through a system of nodes, made by Marcin Zielinsky; it is based on the BIM add-on system for architecture in Blender (but works directly). The principle is to give a full emission material to the inner surface of meshes.
FUNCTIONS
The ergonomy of your app is clearly what is needed to reach a greater public.
The .blend file heavily uses the collections system that appeared in Blender >2.8. This rhizomatic organization allows to reach any level of the hierarchy by pressing RMB when an object is selected. In order to keep a readible outliner, that reproduces the TA2 (https://ta2viewer.openanatomy.org/) with only one occurrence of each anatomical structure; a bunch of hidden collections have been created, where they can appear several times. The downside is that the collections are duplicated (Eye; Eye') and that the ones without the ' do not include the content of their sub-collections.
Two features are often proposed by proprietary apps:
-Optional definitions.
-Research a structure by its name. It could then open only the layer and center the view on this selected object.
'Zygote Body' proposes the same kind of features; A later evolution of the .blend should be to parent the other structures to the armature, add an IK (Inverse Kinematics) mode to the armature shared in the .blend file, and create animations (eyes blinking, heart beat, breathing) :
Congratulations for what you have done so far!
The .blend is evolving, (I struggle with names and translations these days) so that I hope that your system does not suffer too much from these changes.
It is very inspiring.
N.B.: the latest version of the script has been shared in the 'About Python script/addon' section of this forum; it is also included as a text file within the .blend (and as a separate file in the Mac version).
Thanks for your detailed reply.
MESHES
As I said, I know nothing about 3D modelling or Blender, I'm just a programmer, so it's difficult to me understand technical aspects about blender or modelling.
I took the models and applied them the Decimate modifyer to reduce the polygon count to the 30%. Then I exported them as .fbx. They don't have any normal, metallic or occlusion map, reason why the materials look that flat.
VISUAL
In the main page of z-anatomy, we can see some renders of the models with pretty nice materials, but again, I don't know how to achieve that result. I just took a provisional flat color and applied to each material. I'd appreciate if you could tell me how to get that beautiful results. FUNCTIONS
- Optional definitions: Absolutely fundamental. In wich file the're stored in? It would be easy to program it if there's a file like this, or a similar structure:
BodyPart1,Description1; BodyPart2,Description2; So I can read in runtime when we select a body part.
- Research a structure by its name: I had not thought of it, but it's a great idea! I will work on it.
- Animations: It would be amazing and very instructive. I'll set it on my to-do list!
- Also, I'll set the camera to ortographic.
Thank you for your feedback, I will post updates on this forum! :)
The labels and muscular insertions are parented to the bones in the .blend, and the script links their visibility. In this way, when the bone is moved, the labels and insertions follow, and only the labels of the selected object appear. The script also constraint the labels towards the 3D viewport.
Can I export only the labels as .fbx?
I would make an option to show all the labels of the active body parts, and an option to show only the labels of the body part selected.
@Lluís Vinent You may have to open the file removing the script in order to select them all. They are all texts objects and their line is not selectable (see filter options>Arrow icon on the upper right corner of the outliner; Shift click on the main collections to make them all selectable). They use a Hook modifier in Blender to follow the label, when it is move, you may have to apply it to get them right. The lines are parented to the label and the labels (text objects) are parented to the labelled object.
N.B.:On the upper side of the 3D view, the icon of the eye&arrow allows you to show/hide certain objects type.
In the outliner, the filter (syphon icon) allows you to do the same within the outliner.
@Lluís Vinent Also: although it represents some work; the labels used in Blender may not be the best solution for an app: they are actually 3D objects, also curves, that needed to be constraint towards the 3D viewport through a python script. The script also links their visibility to the one of the labelled object, as mentioned before, and selecting them opens the definition.
An important reason that lead the decision to use this system and abandon the labels made with the 'MeasureIt' add-on (https://www.youtube.com/watch?v=23nkz2_r97E) is that these curve-text-objects can be searched and found through the outliner, and the view can be centered on them.
It may be more logical/lighter to use an overlay as the 'MeasureIt' add-on does; to constraint the position of each label in the 3D viewport but:
-this system would then need to be invented;
-I would recommend to give priority to the search and center functions upon the performance considerations.
UPDATE LOG
19/11/2021
- Camera background set to 303030. - Camera set to ortographic. - .blend lights imported. - '.001' suffixes removed. - Search engine.
22/11/2021
- Descriptions
23/11/2021
- Little changes on UI and some bugs fixed.
24/11/2021
- Translated to spanish (automatic translation at the moment). 26/11/2021
- Fixed minor bugs. - Avoid unwanted interactions.
- Removed the "Move" button. Replaced by two finger movement. - We can chage the font size in the settings.
- We can hide all the UI in the settings. - "About" page with a link to the Z-Anatomy web page (provisional design). - Now he can hide all the panels. "Cross sections" is hidden by default. - Now all the UI is 100% adaptative to any resolution. - Programmed all the controlls for PC. - Exported for WebGL.
29/11/2021
- Added the 'selected outline'.
- Added the multiple selection tool.
- Added a twinkling bar on the text input.
- Now when we select isolated mode we can edit the transparency of the non-isolated objects. - Fixed minor bugs.
04/12/2021
- Box selection.
- Multiple deletion and recovery.
- Fixed minor bugs.
05/12/2021
- Deselect all button.
06/12/2021
- Brush Selection
The definitions (mostly imported from wikipedia- can be found as Texts:
This is the Outliner, in 'Blender file' mode.
In the .blend, thanks to the script, they are automatically displayed within the text editor when an object that has the same name is active (last selected).
Here is the difference between 'Duplicate' and 'Duplicate-Instanced':
This is about exporting curves as .fbx (does not seem possible for the moment but would reduce drastically the poly-count):
If, as said in the post, Maya and/or 3DSMax do export curves, it should be easy to get them as .fbx passing though someone who has the program.
They appear as pipes inside Blender thanks to a function called 'Bevel'; otherwise, you'll get only their path but no real visible geometry. This function uses a general bevel radius, and each 'node' of the curve gives an additional information to widen or shrink this value. To keep it humanly understandable, I set all main radius to 0.5mm, so that each node's custom radius gives the diameter in mm.
Those are .py files. Do you have them in plain text files(.txt, excel, google sheet...) so I can read them on runtime?
@Lluís Vinent I think that the .py are but .txt whose suffix has been changed.
There is no text-export option and making it manually would require a few hours.
See if it helps: https://docs.blender.org/api/current/bpy.ops.text.html
I'll keep in mind to get an external version of these definitions in the future.
@Melodicpinpon It helped, thanks! :)
The script to get the descriptions as .txt (or any other extension) files: *It's a .txt file. Change the extension to .py.
The general trick to get rid of these '.001' suffixes, is to name the mesh shared by two symmetrical objects without suffix and to name the objects themselves with .r/.l. The mesh is the same but one of the two objects
-Has been mirrored in relation with the world's origin (0,0,0)
-These transformations have been recorded within their 'Delta transforms' coordinates,
-And has a '-1' value on the X-axis-Scale, so that it appears inverted.
The version that appears in your video is full of these .001 because of the translation system -that we try to set up with Marcin-; which is told to ignore these '.l'/'.r' suffixes when translating the name of an objects (according to the text file called 'Translations'). The one that is now shared on this website has been corrected but there are still some '.001' appearing after translating the whole atlas.
The file used to work on the trans