CG BLOOD
I've seen too many films with bad CG blood. So many that I decided to make my own CG Blood.
After months of research, and experiments I finally made a CG Blood asset that I can use in my own films.
My goal was to achieve realism without sacrificing my artistic expression.
Experiment
As valuable as this research was I still needed some first hand experience with real blood to get a better understanding of how it moves and interacts with hard surfaces.
So, I decided to do a real experiment of my own using Pig's blood. The reason for choosing Pig's blood is that Pig bloods' physical properties are actually very close to human bloods'. Pig's blood is even used in blood transfusions.
The experiment went as follows:
A controlled environment with one diffuse light source (sun) and two cameras recording from different angles at 60 fps.
I used a real skull and a painted brick as my two hard surfaces.
I then I used the Pig's Blood to pour over the two objects.
*In order to reduce any risks I wore protective eye glasses, gloves, a white lab suit, and a mask. *
Experiment:
Results
Stills
All stills were taken ~ 15 minutes after pour
~ 60 minutes after extraction from Pig.
As disgusting as this experiment was it gave me SO much footage to work with. Seeing how blood runs around objects and interacts with itself ... I don't think there are many resources like this around the internet. I now can use all this reference footage for the rest of my life, till I decide to do another experiment.
The biggest observations I made during the experiment were how blood dries overtime, how reflective it is, how adhesive it is, and it's variation in texture.
Some more takeaways:
Fresh Blood is fairly “runny,” as in lower viscosity, than I thought
It also has higher surface tension than I would have imagined
Fresh blood is dark in color
Blood in general has high adhesion to surfaces
Blood is extremely reflective
Simulation
Now, with all this great information the simulation process was fairly straight forward.
First step was to create an Adhesion parameter. This all comes from the geometry the blood will collide with.
I took the collision geometry, scattered points across it's surface, and then applied an attraction force via the normals of each point. The intensity of the attraction force was controlled by a ramp parameter. So, as the fluid falls down the surface it may be more 'attracted' to some parts of the surface than the others.
Next step was to create the flip fluid, as well as the Surface Tension and Fill Holes parameter.
The flip fluid was pretty simple, nothing too fancy other than using the research data I collected before. I plugged my data into the proper solver parameters such as Viscocity and Density. This helped bring my simulation to realism pretty quick.
After the solver parameters I had to make the Surface Tension and Fill Holes. Surface Tension acted quite similar to the Adhesion I made before , but differed in the fact that the fluids velocity had to be taken into consideration. So, as the fluid moved, it would be more attracted to itself at certain velocities. The fill holes was just a 'for' loop saying 'for every 2 or more points that are [this distance apart] a new point will be created.'
Next, was the wetmap. I actually got the wetmap solver from another artist named Jérôme Oliveras. I messaged him asking if I could use his digital asset and he was kind enough to let me use it for free. You can check out his work and download his asset from his website here.
This wetmap solver gave me everything I needed. All I had to do was plug in my fluid geo, and collision geo. After that the solver would create a wetmap based on intersecting points between the two geo's. Once I got a look I liked I exported the map as a PNG sequence to use for texturing.
This was the final scene before texturing and rendering.
With all my geo and simulations complete, texturing was the final to do.
This was definitely the easiest part of the process, but required the most decision making. The 'wet' skull was made using the wetmap PNG sequence. I ended up using the sequence as a mask for one 'Wet' skull texture, and another 'Dry' skull texture. I then composited these two textures together using an Octane Composite Material node and ... Voilà!
Simulation:
Final Results
In the end, I am very happy with the results. Obviously nothing is perfect, so I plan to conitnue to develop this asset for as long as I can.
Future Asset Plans:
Try interaction between wet and dry blood
Add particulates such as bubbles, dust, and dirt
Add more variation of texture
Longer wetmap life, and more variation in wetmap texture (fix artifacting)
Try splatters, splashes.
For enquiries or interest into this Digital Asset
contact me here.
References
Blood Research References
Morphology of drying blood pools (Fig. 1)
https://www.sciencedirect.com/science/article/abs/pii/S0379073816303358
Measurement of human blood viscosity a using Falling Needle Rheometer and the correlation to the Modified Herschel-Bulkley model equation (Fig.2)
https://www.sciencedirect.com/science/article/pii/S2405844020316352
Blood viscosity during coagulation at different shear rates (Fig. 3)
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4187573/
Measurement of the refractive index of whole blood and its components for a continuous spectral region (Fig. 4)
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6403469/
A literature review and novel theoretical approach on the optical properties of whole blood
https://iopscience.iop.org/article/10.1088/0034-4885/39/1/002/pdf
Blood Rheology: Key Parameters, Impact on Blood Flow, Role in Sickle Cell Disease and Effects of Exercise
Simulation References
Particle Fluid Surface Node
https://www.sidefx.com/docs/houdini/nodes/sop/particlefluidsurface.html
Octane for Houdini Rohan Dalvi
https://www.youtube.com/watch?v=f4xNxOd1I0U
Adhesion VOP
Houdini Flip Solver node
https://www.sidefx.com/docs/houdini/nodes/dop/flipsolver.html
Custom Surface Tension VOP
Custom Fill Holes VOP
Wetmap Digital Asset: Jérôme Oliveras
https://www.jeromeoliveras.com/v3/#1632293719726-4bd5ce6d-f2d
Research
An undertaking of this scale needed a good foundation. So, I started the process with research on real human blood. I looked specifically into Blood's physical properties such as: Viscocity, Density, Coagulation, IOR, and Absoprtion/Scattering.
The best places to look into properties like this were: Blood Pattern Analysis groups, Labratory tests and experiments, and Medical Research papers.
Fig. 1 to the left was a very important source of information for my simulation. This diagram is taken from a blood pattern analysis group, and describes (using pictures) how blood coagulates and desiccates over time. It also shows how blood changes color and texture through time.
Whenever I got lost while creating my simulation I would look back at this diagram for help.
Fig. 1 Morphology of drying blood pools
Fig. 2 helped me understand the density of blood. Its density is actually fairly close to water. Water’s density at room temperature is 997 kg/m³.
The needle number on the left of the diagram is a vile of a person's blood. These needles are numbered by ascending age. So, needle 1 is someone that is 20 years old as needle 12 is somone who is 60 years old.
This was a very important source of information because most fluid simulations in FX software have a density value.
Fig. 2 Measurement of human blood viscosity a usin
Falling Needle Rheometer at 305 k (89.33 F, 31.85 C)
Fig. 3 shows how the viscocity of blood changes over time. After blood is extracted from body it seems to not change in viscosity for about 2-3 minutes. Then immediately raises in viscosity to about 30 (centipose) for 1-2 minutes, then slows down to a plateau.
It plateaus around 10 (centipose), but after a while it reaches it's original viscocity of about 3.5 (centipose).
To conclude, the viscocity of blood changes drastically over time. To create an accurate simulation, you would have to pick which point in time your blood will be.
Fig. 3 Blood viscosity during coagulation at different shear rates
Fig. 4 to the right shows human Whole Blood's Index of Refraction at different spectral wavelengths. Overall, the IOR seems to range between 1.344 and 1.364.
Fig. 4 Measurement of the refractive index of whole blood and
its components for a continuous spectral region
The most important takeaways:
IOR of blood : 1.344 to 1.364
Density of blood : 1087.5 kg/m³ +
Viscosity of blood : under 10 cP (centipoise) after 1000 seconds from extraction
Sorry :( . . . Research pages are only available on Desktop Site.
here's a cool rock.