All posts filed under “Uncategorized

Areas of Expertise in Houdini

Hard Surface
Scene Assembly (USD, Universal Scene Description)

Keyframe Animation
Muscles Simulation
Motion Capture & Retargetting

Pyro FX (Fire & Smoke)
Fluids / Large Scale (ocean, whitewater)
Destruction FX
Sand, Snow
Hair and Fur
Vellum (clothes, softbody)
Abstract FX (magic)

Game development:
Procedural Environments & Assets

Mantra / Karma
3rd party (Redshift, Arnold, Renderman)

Other areas:
Stage Lighting
Shader Building
Houdini Development Kit
Pipeline Development (Python, PDG)
USD, Universal Scene Description

Houdini Education at UTB

I am a fulltime freelance Houdini Indie user since 2016. Before that, I spent few years as an Apprentice. In September 2020, I was admitted to Doctoral Studies, Tomas Bata University in Zlín, Czech Republic.

My thesis tightly relates to Houdini and I also have to introduce and implement Houdini education on the University. I will be first Houdini lecturer there. As a PhD student, I will teach Bachelor’s and Master’s degree students.

The first lessons should start in 2021. I am already creating the curricula and hoping that Houdini Insight LMS could help me prepare better classes and the overall resulting effect for current and future students.

Houdini Insight LMS (Learning Management System)


At present, in the field of visual effects, great emphasis is placed on art directable outputs. Mathematical computational models simulate the photoreal visual, but the usual dynamic system shows chaotic behavior. Thus, a small change in the initial conditions leads to a very different result over time. This behavior is difficult for artists to influence. For example, the real running water will not form a shape of the heart in the air. The shards of a shattered plate on the ground never form a silhouette of a woman. Combining physically plausible elements in the computer simulations reinforce believability. Audiences perceive media content as realistic, if they judge it to be like real life, but audiences also vary in their judgements of the same material. It is therefore important to classify the attributes of real worlds dynamic system behavior and their impact to subjective perception of realism.

Numerical methods

Discretization in time

Temporal discretization is a mathematical technique applied to transient problems that occur in the fields of applied physics and engineering.

Transient problems are often solved by conducting simulations using computer-aided engineering (CAE) packages, which require discretizing the governing equations in both space and time. Such problems are unsteady (e.g. flow problems), and therefore require solutions in which position varies as a function of time. Temporal discretization involves the integration of every term in different equations over a time step (Δt).

The spatial domain can be discretized to produce a semi-discrete form:

If the discretization is done using backward differences, the first-order temporal discretization is given as:

And the second-order discretization is given as:


φ = a scalar quantity.
n + 1 = value at the next time level, t + Δt.
n = value at the current time level, t.
n − 1 = value at the previous time level, t − Δt.

The function F() is evaluated using implicit- and explicit-time integration.


Methods for evaluating function F()
After discretizing the time derivative, function F({\displaystyle \varphi }) remains to be evaluated. The function is now evaluated using implicit and explicit-time integration.

Implicit-time integration
This methods evaluates the function F(phi ) at a future time.

Explicit-time integration
This methods evaluates the function F(phi ) at the current time.


Semi-Implicit Method for Pressure Linked Equations

In computational fluid dynamics (CFD), the SIMPLE algorithm is a widely used numerical procedure to solve the Navier-Stokes equationsSIMPLE is an acronym for Semi-Implicit Method for Pressure Linked Equations.

The SIMPLE algorithm was developed by Prof. Brian Spalding and his student Suhas Patankar at Imperial College, London in the early 1970s. Since then it has been extensively used by many researchers to solve different kinds of fluid flow and heat transfer problems.

Many popular books on computational fluid dynamics discuss the SIMPLE algorithm in detail. A modified variant is the SIMPLER algorithm (SIMPLE Revised), that was introduced by Patankar in 1979.

The algorithm is iterative. The basic steps in the solution update are as follows:


Splitting Fluid PDE


Courant–Friedrichs–Lewy condition

The principle behind the condition is that, for example, if a wave is moving across a discrete spatial grid and we want to compute its amplitude at discrete time steps of equal duration, then this duration must be less than the time for the wave to travel to adjacent grid points. As a corollary, when the grid point separation is reduced, the upper limit for the time step also decreases. In essence, the numerical domain of dependence of any point in space and time (as determined by initial conditions and the parameters of the approximation scheme) must include the analytical domain of dependence (wherein the initial conditions have an effect on the exact value of the solution at that point) to assure that the scheme can access the information required to form the solution.

Fluid Solvers

Navier-Stokes Equations

The Navier–Stokes equations mathematically express conservation of momentum and conservation of mass for Newtonian fluids. A laminar flow example: The higher-order term, namely the shear stress divergence ∇ · τ, has simply reduced to the vector Laplacian term μ2u. This Laplacian term can be interpreted as the difference between the velocity at a point and the mean velocity in a small surrounding volume. This implies that – for a Newtonian fluid – viscosity operates as a diffusion of momentum, in much the same way as the heat conduction. In fact neglecting the convection term, incompressible Navier–Stokes equations lead to a vector diffusion equation (namely Stokes equations), but in general the convection term is present, so incompressible Navier–Stokes equations belong to the class of convection–diffusion equations.

Incompressible Navier–Stokes equations (convective form):


Lagrangian and Eulerian approach

Lagrangian specification of the flow field is a way of looking at fluid motion where the observer follows an individual fluid parcel as it moves through space and time. Plotting the position of an individual parcel through time gives the pathline of the parcel. This can be visualized as sitting in a boat and drifting down a river.

The Eulerian specification of the flow field is a way of looking at fluid motion that focuses on specific locations in the space through which the fluid flows as time passes. This can be visualized by sitting on the bank of a river and watching the water pass the fixed location.


Material derivative

In continuum mechanics, the material derivative describes the time rate of change of some physical quantity (like heat or momentum) of a material element that is subjected to a space-and-time-dependent macroscopic velocity field. The material derivative can serve as a link between Eulerian and Lagrangian descriptions of continuum deformation.

For example, in fluid dynamics, the velocity field is the flow velocity, and the quantity of interest might be the temperature of the fluid. In which case, the material derivative then describes the temperature change of a certain fluid parcel with time, as it flows along its pathline (trajectory).

Suppose we have a flow field u, and we are also given a generic field with Eulerian specification F(x,t). Now one might ask about the total rate of change of F experienced by a specific flow parcel. This can be computed as

where ∇ denotes the nabla operator with respect to x, and the operator u⋅∇ is to be applied to each component of F. This tells us that the total rate of change of the function F as the fluid parcels moves through a flow field described by its Eulerian specification u is equal to the sum of the local rate of change and the convective rate of change of F.


Incompressible Newtonian fluid

For the special (but very common) case of incompressible flow, the momentum equations simplify significantly. Using the following assumptions:

  • Viscosity  will now be a constant
  • The second viscosity effect
  • The simplified mass continuity equation

This gives incompressible Navier Stokes equations, describing incompressible Newtonian fluid:


Inviscid flow

Inviscid flow is the flow of an inviscid fluid, in which the viscosity of the fluid is equal to zero. Assuming inviscid flow allows the Euler equation to be applied to flows in which viscous forces are insignificant. Some examples include flow around an airplane wing, upstream flow around bridge supports in a river, and ocean currents. In a 1757 publication, Leonhard Euler described a set of equations governing inviscid flow:


No-slip and No-penetration boundary conditions

The no-slip condition for viscous fluids assumes that at a solid boundary, the fluid will have zero velocity relative to the boundary.

The fluid velocity at all fluid–solid boundaries is equal to that of the solid boundary. Conceptually, one can think of the outermost molecules of fluid as stuck to the surfaces past which it flows. Because the solution is prescribed at given locations, this is an example of a Dirichlet boundary condition.

While the no-slip condition is used almost universally in modeling of viscous flows, it is sometimes neglected in favor of the ‘no-penetration condition’ (free-slip, where the fluid velocity normal to the wall is set to the wall velocity in this direction, but the fluid velocity parallel to the wall is unrestricted) in elementary analyses of inviscid flow, where the effect of boundary layers is neglected.


Ordinary Differential Equations (ODE) and Partial Differential Equations (PDE)

An ordinary differential equation (ODE) is a differential equation containing one or more functions of one independent variable and the derivatives of those functions. The term ordinary is used in contrast with the term partial differential equation which may be with respect to more than one independent variable.

Partial differential equation (PDE) is an equation which imposes relations between the various partial derivatives of a multivariable function. The function is often thought of as an “unknown” to be solved for, similarly to how x is thought of as an unknown number, to be solved for, in an algebraic equation like x2 − 3x + 2 = 0. However, it is usually impossible to write down explicit formulas for solutions of partial differential equations. There is, correspondingly, a vast amount of modern mathematical and scientific research on methods to numerically approximate solutions of certain partial differential equations using computers. Partial differential equations also occupy a large sector of pure mathematical research, in which the usual questions are, broadly speaking, on the identification of general qualitative features of solutions of various partial differential equations.


Matrix multiplication

In mathematics, particularly in linear algebra, matrix multiplication is a binary operation that produces a matrix from two matrices. For matrix multiplication, the number of columns in the first matrix must be equal to the number of rows in the second matrix. The resulting matrix, known as the matrix product, has the number of rows of the first and the number of columns of the second matrix.

If A is an m × n matrix and B is an n × p matrix, the matrix product C = AB (denoted without multiplication signs or dots) is defined to be the m × p matrix.