Skip to content

Commit 97dacc1

Browse files
committed
Update 'Animations' section.
1 parent e3018a2 commit 97dacc1

File tree

5 files changed

+55
-2
lines changed

5 files changed

+55
-2
lines changed

docs/Recomendations-for-future-developers.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Significant improvements to the simulation system (managed by SimulationManager
1515

1616
- Investigate automated methods for spline generation to better simulate blood particle flow.
1717
- Use the predefined poses available in the project to support a fully functional and position-aware anatomy simulation system.
18-
Do not forget about dynamic organ positioning and simulating corresponding blood flow variations based on different body poses.
18+
Do not forget about dynamic organ positioning and simulating corresponding blood flow variations based on different body poses. (See more: [Body positions](Virtual-Anatomy-(Unreal-Engine)/Explorer-level%20(hospital%20and%20simple%20environment)/Animations/Body-positions.md))
1919
- Last, but not least, minimize the frequency of crashes that occur when interacting with this system.
2020

2121
### Slicer
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Body positions
2+
3+
## Introduction
4+
5+
The body positions feature has been being developed to expand the clinical realism of the Virtual Anatomy application and improve the learning experience for nursing students
6+
by enabling the 3D human model to be displayed in various medically relevant poses. These include common patient positions such as:
7+
8+
- standing,
9+
- sitting,
10+
- lying down,
11+
- lying down with raised limbs.
12+
13+
Incorporating these postures would, as mentioned, enhance the educational value of the application by allowing users
14+
to observe and interact with the human body in contexts that reflect real-world medical scenarios.
15+
16+
One of the primary challenges in implementing this feature was to ensure that each body pose could be displayed accurately
17+
without interrupting the continuous breathing animation already integrated into the model. The solution required a method that supported both static positioning
18+
and additive animation blending, maintaining a natural appearance while minimizing performance overhead and animation artifacts.
19+
20+
Initial development focused on exploring whether skeletal mesh manipulation could serve as a foundation for pose switching.
21+
However, this approach proved to be inefficient and inflexible. It complicated the animation workflow and introduced difficulties in preserving consistency across poses.
22+
23+
## How poses are created?
24+
25+
After some consultation with TU Delft's New Media Center, the focus shifted toward working directly with animations rather than skeletal structures.
26+
The adopted approach centers on creating individual Animation Sequences for each desired pose using the base skeletal mesh. These sequences capture the exact transformations needed to simulate each position.
27+
To preserve the breathing animation while applying new body poses, the Animation Blueprint system in Unreal Engine is used in combination with the “Apply Additive” node. This technique allows the base pose animation to remain static while layering the breathing motion additively on top of it.
28+
29+
<figure markdown="span">
30+
![body-positions](../../../images/Body-positions-apply-additive.png)
31+
<figcaption>"Apply Additive" function application (from one of the desired body poses)</figcaption>
32+
</figure>
33+
34+
35+
This method proved both efficient and flexible. By treating each pose as a separate Animation Sequence and using the Apply Additive function, it became possible to dynamically blend static and dynamic animations.
36+
This approach not only preserves the integrity of the breathing animation but also enables smooth transitions between different body states.
37+
38+
![body-positions](../../../images/body-positions.png)
39+
40+
## Current status and Future plans
41+
42+
After confirming the effectiveness of this setup, several poses were tried to be implemented as individual Animation Sequences and integrated into the Simulation Manager system.
43+
The groundwork was laid for extending this functionality further, with the potential to dynamically switch poses during simulation and adapt other systems - such as blood flow and organs alignment.
44+
45+
However, due to time constraints and competing other academic tasks, full implementation of the feature could not be completed within the development timeframe (namely, 2nd semester of 2024/2025).
46+
Nonetheless, the core animation system, including the additive blending of breathing and pose sequences, has been successfully prototyped.
47+
This foundational work could enable future developers (maybe it can be you who is going to fully implement this feature ;) ) to build upon a flexible and extensible system for representing human body positions within the Virtual Anatomy application.
48+
49+
To summarize, future plans for this feature and thus future tasks include:
50+
51+
- adjusting the behavior of blood flow simulations based on the body’s posture (for example, changes in circulation while lying down or sitting),
52+
- ensuring anatomical accuracy of internal organs in each position,
53+
- enabling real-time pose switching via Simulation Manager to reflect many clinical scenarios.

docs/Virtual-Anatomy-(Unreal-Engine)/Explorer-level (hospital and simple environment)/Animations/BaseAnimationClass.md renamed to docs/Virtual-Anatomy-(Unreal-Engine)/Explorer-level (hospital and simple environment)/Animations/UCPP_BaseAnimation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# UCPP_BaseAnimation Class
1+
# UCPP_BaseAnimation
22

33
This class serves as the base class for all potential animations in the game. It is designed to be inherited by other C++ classes, not directly by Blueprints. Its primary purpose is to start or stop animations in response to events fired by the `SimulationManager` class. This class may also be extended to hold various parameters in the future.
44

206 KB
Loading

docs/images/body-positions.png

504 KB
Loading

0 commit comments

Comments
 (0)