top of page
Search
Writer's pictureBaldingWizard

Volumetric Distortion

Updated: Jun 22, 2019

Managed to make some good progress with the maths behind volumetric distortion to create 'tendrils' from a volume captured using the Smoke2EXR add-on. Here's an animated image (sorry, not very high quality) - I'll be refining this and will write a more detailed post (along with the maths) in due course. Rendered using Eevee.





The nodes to distort the volume were created using the Node Expressions add-on using the following expression text :


# Extract the coordinates

_x = Vector[x] - Offset[x]

_y = Vector[y] - Offset[y] - YThreshold

_z = Vector[z] - Offset[z]



#Stretch coordinates as we move away from the threshold to spread out the tendrils

_xzScaling = (_y < 0) * (abs(_y) * XZScalingFactor{1}**XZScalingPower{0.5}) + 1


# Scale the coordinates to produce stretching

_x2 = _x/_xzScaling

_y2 = _y

_z2 = _z/_xzScaling


# Apply noise to the coordinates by an amount proportional to abs(_y) to distort the tendrils

_distortion[] = vmult(vsub(noise(combine(_x+NoiseOffset[x], _y+NoiseOffset[y], _z+NoiseOffset[z]),DistortionScale), 0.5), DistortionFactor)

_x3 = _x2 + _distortion[x] * (abs(min(_y, 0))**DistortionPower)

_y3 = _y2

_z3 = _z2 + _distortion[z] * (abs(min(_y, 0))**DistortionPower)


_yOffset = (_y3 < 0) * _y3 * min(1,vsub(noise(combine(_x3,0,_z3),NoiseScale,0),NoiseBias{0.5})*StretchFactor) **NoisePower


Output[] = combine(_x3, _y3 - _yOffset +YThreshold, _z3)


51 views0 comments

Recent Posts

See All

Comments


bottom of page