Clockwork VFX


Technical Work

Technical Work

Flux Plugin by Morteza

Believe it or not, there isn’t one button for lighting, one button for texturing, and two buttons for animating. Creating computer graphics requires an enormous amount of work, and some of it extremely technical. Although we usually only show the artistic side of CG on our web site, there is also a great deal of programming that goes into many of our projects. Although the technical clips above are by no means exhaustive, it will give you at least a taste of what we do.

The first clip titled Technical Work, shows some of the programming and simulation work which has gone into some of our recent commercials. Details of the Tornado programming can be found below:

Description Tornado System For Maya
Technology C++, Maya API, MEL
[ dnaTransferFluidAttributes ]: Transfers particle’s scalar and vector including customPP attributes to fluid containers within Add, Replace and Multiple modes. Interpolates data using linstep, smoothstep and hermite functions.

[ dnaTransformInterp ]: Interpolates transformation matrix between arrays of matrices

[ dnaRampInfo ]: Maps array of attributes using curves

In this example dnaTransferFluidAttributes was used to transfer particles’ attributes from tornado rig to fluid container; dnaTransformInterp was used to interpolate surface between main controllers (Stretchy Setup) and dnaRampInfo was used to add extra details to the surface of tornado.

In the second clip, Flux Plugin, you will see a huge personal project from Morteza, showcasing his latest plugin, which deals with approximate image based lighting for Maya. Having noticed that nothing like this existed in the current market, Morteza decided to start development on his own full featured plugin. Flux is the result of his efforts. This plugin will be available for download from his web site at in the near future. The in-depth details of the Flux Plugin can be found below:

Description FLUX: An approximate image based lighting tool for Maya
Technology C++, Maya API, MEL, Boost, OpenGL, OpenMP, OpenExr
Main Features:
– Less Noise in Render
– Less Render-time
– Editable and Keyable
– Precise Control over the result
– Ideal for lighting Fur, Hair, Fluids and matching lights with Live action
– Combines and interpolates multiple sets of HDRI
– Pipeline friendly; Exports centroids data to Maya’s native data structure
– Artists friendly; Customized “Attribute Editor Templates” for easy node connection and traversal
– Fast and responsive; Multi-threaded and accelerated using built-in kdTree
– Interactive modification of lights properties
– Output statistics, verbose, diagnostic data

Flux Pipeline:

Stage (1) – Importing data
[ fluxLoader ]: Supports all type of openExr files (Tiled, Scanline, Multichannel) with channel shuffling and extra bit info; Built-in support for Latitude-Longitude and Cube environment maps.

Stage (2) – Pre-processing
[ fluxLuminance ]: Computes luminance energy of input data with compensation at poles
[ fluxSat ]: Accelerate computation using SAT (Summed Area Tables)

Stage (3) – Centroids Generation
[ fluxMedianCut ]: Adaptive and fixed importance sampling using MedianCut algorithms with an optional pre-processing Barlet filtering
[ fluxHammerslayHalton ]: Importance sampling with Hammerslay / Halton sequences and computing energy based on Voronoi patterns
[ fluxUserInput ]: Generates centroids based on user’s input, UVs, Radius, Falloff; Computing luminance/color by using Mean, Normal or Sum operator.

Stage (4) – Visualizing
[ fluxCentroidsViz ]: Visualizes centroids data in viewport including Color, Luminance scale, Magnitude, IDs, Centroids orientation

Stage (5) – Centroids Editing
[ fluxCentroidsTransform ]: Centroids transformation including translation, rotation, radius and orientation; Meta information including Location, description and centroids count
[ fluxCentroidsField ]: Generates centroids field by combining multiple sets using weight balance or union interpolation
[ fluxCentroidsEdit ]: Clustering and selecting centroids by Luminance, Color, UV ranges, Volume and IDs; Cleanup and deleting centroids; Editing centroids color and luminance using stackable operators with priority feature; including Generic, Set-Range, Normalize, Clamp, Override (Axial) and remapping in RGB or HSV color space

Stage (6) – Exporting data
[ fluxCentroidsExport ]: Exports centroids data to Maya’s native data structure including Matrices, Colors, Energies, UVs; Ideal for transferring data to shaders, lights, etc.
[ fluxGlobal ]: Global container for flux’s IBL settings, lights rigs and flux’s Mentalray shader
[ fluxMentalrayIBL ]: Utilizing centroids data inside Mentalray
[ fluxLightsGeneration ]: Generates light rigs based on centroids data and global container nodes