Buddha Dispersion using Krakatoa
|
Hello guys I am Vikas Nagolkar and I am bringing you another exiting tutorial on a very famous and common topic "Dispersion".Yet this you can call as famous and common, it is still being used in Films, Game Cinematic and Television commercials. But their execution of dispersion may differ. We can carry out many kinds of dispersion either by Geometry, Shaded techniques, Compositing, Lighting and mainly through particles and dynamics.
|
Now , let see what Krakatoa can do…Krakatoa is a Volumentric particle render engine. It acts as an Particle Optimizer and manipulator for massive amount of particles reacting in CG. It can drastically drop the rendering time for calculating huge amount of particles in scene. Now when we say that it drops rendering time , it does not mean that we crank up our particle high. Every CG apps has their own limitations. Proceeding these limitation may hang up or crash our software or plug-in. Visual Effects is one of the most largest sector of this industry. Basically there are two types of sector …first is CG and second is VFX. Both of these has to work hand in hand. Here you cannot deny either of them.Here we are going to use a plug-in for 3DS Max called “Krakatoa"developed first as in-house Volumetric Particle Render Engine by Frantic Film, a sister company of Prime Focus. Well there are other add-on from the same company like "Flood, Flood Spray, Flood Surf, Deadline" for 3DS Max and "Awake" for Digital Fusion.
In our especially 3D software's and here considering 3DS Max we have type of FX section …
1) Particle Flow Source (PFS)
2) Fume FX
3) Afterburn
4) Pyroclusture
5) Particle Tool Box (1 , 2 , 3 , Pro , Freebies)
6) Volume Breaker
7) Thinking Particles
8) Pull Down It
9) Ray Fire
10) Glu-3D
11) Houdini Ocean Tool kit
12) Pheonix FD
13) Well these are few of those systems in which you in add in 3DS Max. Bu there is something which you all should know…about these above plug-in.
1) Particle Flow Source (PFS):- Particle Tool Source was added in 3ds max since 3DS Max 6.0 version. This excellent tool made 3DS Max venerable and 3DSMax stood our different from all other CGI application since then. Before PFS, 3DS Max was working over "Spray, Snow, Blizzard, PArray, PCloud, Super Spray". In this system creating cinematic FX was rather difficult until PFS was introduced in software. Lots and lots of Max-scripting was used to overcome their deadline and create complex FX. But when PFS was introduced it saved lots of time-cost. Particle Flow is a versatile, powerful particle system for 3ds Max. It is an Event Driven Particle System…purely node based system. While the rest of particles are legacy particles which is not based upon node system. There are many different types of explanations between event and non-event based particle system. And the very important thing of PFS is that, it records and keep data in its memory by "Caching" the entire time-segment. As I said earlier every CG system has its limitations so even PFS has its own limitation. PFS wont cache out our scene if it runs out of memory. Caching memory depends upon the total amount particles interacting in our scene and objects (animated/non-animated) and particle limit amount.
2) Fume FX (FFX):- Fume FX is one of the most powerful tool for simulating smoke, explosion FX. FFX works with and without PFS. Fume FX is breadth taking and powerful gaseous liquid simulation engine designed especially for Visual Effects artist. The key to the FumeFX difference is that it combines your specific aesthetic vision with real-world physics. Fume FX fire and smoke behave according to the laws of fluid dynamics and react to relevant physical forces, such as temperature and gravity. This means you can produce realistic voxel-based simulations with greater speed and ease than ever before. Furthermore, the combination of a dynamic feature set, intuitive user interface, and open architecture offer the performance and flexibility to enhance virtually any pipeline. Even Fume FX can take legacy particle system for simulation too. Its one of the best tool that should reside in your FX tool kit every day. Fume FX has been heavily used in many TV Commercials, Game Cinematic and Films. I'll highly recommend everyone to try this engine.
3) Afterburn (AFB) :- AfterBurn is an advanced volumetric particle effects engine plug-in that works exclusively with Autodesk Media & Entertainment's 3ds Max program, and gives you the ability to create realistic smoke, clouds, explosions and other organic fiery and gaseous effects. AfterBurn is designed to work in concert with the integrated 3ds Max particle systems to augment their effects, and, in many cases, to create visual effects that you could not achieve easily using the 3ds Max program’s native tools. AfterBurn makes it possible for you to create convincing exhaust trails from rockets and missiles, fiery explosions that rival the real thing, swirling tornados that can rip buildings to shreds, gooey lava flows and much more. Reating Medical FX and Detailed Nebula can be done very effectively here. No particle , no Afterburn Effect.
4) Glu-3D :- Glu-3D uses CFD (Computational Fluid Dynamics ) method called as SPH ( Smoothed Particle Hydrodynamics ), to calculate interparticle calculations. Glu3D is designed to work tightly integrated inside the 3ds max™ standard interface. Glu3D uses particles to simulate the fluid behavior, and a multi-resolution polygonal surface is also generated to display the fluid surface. Its main features are listed below…
a) Particle based dynamic engine that automatically animates liquids that interact with surrounding geometry.
b) Triangle mesh surface sequence is generated to visualize liquid surface.
c) Fully integrated in 3dsmax environment in order to simplify production workflow.
d) File cache system to store pre-calculated dynamics results.
e) Object instances at every particle positionA Surface Mesh generator for any kind of particle system (not only glu3D).
f) Motion blur.
g) Wet maps.
h) Texture mapping.
i) Arbitrary planar shapes as sourcesFill objects function to speed up scene initial condition setup.
j) Friendly customizable UI full of shortcuts, menus and toolbar buttons.
k) Integration with Particle Flow.
l) Special Space Warps to accomplish specific effects like fluid logos and path constraints.
5) Rem Infografica:- It is a Spanish company that develops well known plug-ins like…
a) Meta Ryes
b) Cloth Ryes
c) NPR (Non-Photorealistic Rendering)
6) Pheonix FD (FD=Fluid Dynamics) :- Phoenix FD is a fluid dynamics simulator that is intended to create a wide range of effects related to burning, explosions, smokes etc. The working process in Phoenix can be divided in two main parts: simulation and rendering. The result of the simulation is sequence of files, containing per-cell quantities called "channels" (temperature, velocity etc.) and these files are used afterwards in the rendering. The simulation is done in background mode and the UI of the 3ds max remains active. You can change the parameters (except few initial core parameters) during the simulation and see how this affects it. The rendering is also enabled and the user is not obligated to wait the end of simulation to see a single frame.
7) Ray Fire (RF) :- Ray Fire is again another powerful plug-in designed and developed by Mir Vadim for 3DS Max from destruction point of view. This plug-in should be in your effect kit bag where ever you go. It totally deals with legacy particle system, yet PF Source system is not integrated with this tool kit. RayFire is now very well integrated within 3DS Max. Just like Blast Code for Maya, functionality of RayFire is same.
8) Houdini Tool Kit for Max (Hot4Max) :- Hot4Max is a simple dll file developed by Guillaume Plourde and Christian Schnellhammer for 3DS Max. Apply the Houdini Ocean modifier to any mesh object. For best result use a plane object with over 100 heigth and width segments. The following properties are available, Resolution, wind, size, shortest waves, choppiness, wind direction, damp reflection, wind align, ocean depth, time and seed.
Core reason I am explaining about these plug-ins to you people is that I have been asked many times by artist, " Which software's do I have to learn if I want to become successful VFX artist??? ". Truly speaking, I ain't know anybody who knows all things in VFX. Everybody round this globe are constantly learning either by education, freelance stuff and or through projects from production area. Now learning all these applications will not make you guru overnight. Each of these applications are getting updated day by day and I is so vast that it is very hard to leave any rails of learning behind. Visual Effects is not software base section , it is technique based sector. It is possible to learn all these above and other application in not time, but if the execution is not amended, then what's the point of learning. Visual Effects and Computer Generated Pipelines are different and yet connected with each other seamlessly.
Before starting this tutorial I would strongly advise you guys before hitting krakatoa in your 3DS Max area and directly working by cranking high your particles and dusting your computer into flames, kindly follow it's help menu online. Basic understanding will help you to cover a very much system of how Krakatoa works actually. Krakatoa is one of the most effective and efficient render engine for optimization and manipulating particles that I can go and create infinite effects with it. Well this tutorial does not deal with Krakatoa GUI (Graphic User Interface). May be in future through this magazine I'll cover up Krakatoa GUI for more better workflow.
Through Krakatoa, you can easily work close with Fume FX, Pyroclusture, Glu-3D and Phoenix FD as well as Real Flow. Here in this tutorial we'll simply look at dispersion level right from setting up PF source blocks and using Krakatoa to calculate and render our scene. There are two ways that Krakatoa GUI allows user to do. One is direct render from Krakatoa GUI itself, while other is using Krakatoa Partition for dividing particles into multiple portions, then loading them via PRT loader, while there are other system that Krakatoa allows us to use . For the time being look at the screenshot blow. Will look confusing t the very beginning, if get used to it, it's fairly simple.
I'll be covering and explaining the function of those parameters that I'll be using for final result.
Especially when you say for Particle Dispersion , you can easily create this stuff in PFS, Fume FX and Thinking Particle. You can advance this stuff via shader and lights too.
- Requirements:- For completing this tutorial, you'll need these following stuff.
1) 3DS Max (above 2010).
2) Thinkbox Krakatoa v1.6.0.43178.
Now before we take our step towards making of this dispersion, I would like to know you that sometime by installing Particle Tool Box and licensing them PFS gets wiped out entirely from 3DS Max showing "Missing 6551" likewise error. So before installing anyone of these setups , kindly get down to se read me file attested with it or ask somebody who'd actually performed it pretty well.
Alright I think it's time for us to get started now…shall we then…
PART-1
" Setting up Particles, using helpers for particle distribution and placing camera for close set up "
Alright, go open "Buddha_Dispersion_Start.max" file. No matter if you don't have Buddha model. You can try out on any basic geometry or any model you may have downloaded or modeled by yourself.
Now once you open this start file, you'll see that camera and entity has been already set up for you all.
Camera settings are as follows…
1) Lens = 35mm.
2) FOV = 54.432 deg.
3) Type = Target/Free(your choice).
4) X axis = 11.707
5) Y axis = -375.53
6) Z axis = 27.584
7) X axis = 96.073
8) Y axis = 0.000
9) Z axis = 1.535
Once you have loaded your start file, kindly check it properly before we start building our particle system.
Hit "6" from your keyboard or go to Graph Editor to open Particle View. Those who are familiar with 3DS Max GUI should be knowing this step.
Let's build our particle for our scene…
Go to depot and drag "Empty Flow" in "Particle canvas" or "Particle View". Add Render, Cache and Display operators to it. Rename these operators as … "Render ---> F-Look, Cache --- > Data_Calculator and Display --- > Visual".
Keeping your main PF Source engine selected make tgis following changes for all those operators that we have just added…
a) Selecting the global event "PF Source 01" rename it as "PFS_Dispersion_Engine" This global event holds 3 main section…
Emission --- > Quantity Multiplier --- > Viewport and Render = 100%.
System Management --- > Integration Step --- > Viewport --- > Half Frame.
No changes in Script, unless if you want to add something within it.
b) Now select your Data Calculator (Cache Operator) and increase its memory limit to its maximum it takes…mine is "4194304K".
c) Now towards Visual(Display), change from ticks to dots and change color to see properly in viewport.
See this screenshot for better visual.
This event is global event which controls the overall system of particle wrangling in our scene.
Now we'll build local event which will get direct orders from global event. But all local events are global in their own way.We need a source from where particles will outpost itself. Create a Birth Operator and rename it as "Core_Source". Once Birth operator has been active, automatically event is created. N o9w this is local event. Henceforth, whenever we create a new operator or test which we call as "Node" new event is formed, unless and until we specify them to be or not to be. Now kindly make changes for birth node..
Emit Start = 0 Emit Stop = 0 Particle Amount = 1000000
Now for once that our particles been arrange to move out, we need substance from which particle will emit. PFS allows us to choose two ways to emit particles. One from Icon and other from Object. This time we choose Position Object operator. Within its parameters, add our entity and check on "Delete particles if location is invalid".
To make particle more active we'll add "Collision Test". TEST will see according to our particle scene set up the condition… "if condition" , if it is true then it will pass forward and if not then it won't. Now open up "Maxscript Listener Window" and type "SDeflector ()" and hit enter. You don’t have to go in search for helper if you know it (their name) properly. Maxscript listener will do it all for you.
Also amend the following changes for SDeflector.
1) Increase deflector's diameter from 10 to 100. And position itself of Y Axis to 19.35 and Z Axis to 229.408. Now enable your timeline fo animating SDeflector from top to bottom. Keeping selected the deflector at frame 0 all we have to do is just value Z axis. Prior Z axis value is 229.408. Take your time slider from 0 to 100 and bring deflector down to value 62.281(Z Aixs).This is the only animation for SDeflector. Now rename that SDeflector as "Master_Deflector".
2) Scrub through your time slider and see the following changes. It's getting direct deflected but it's not getting vivid and or random wise turbulence.
Here the condition of deflecting is true and so now particles will pass forward to next set of events.
For trigging our particles we'll need wind. Again open your Maxscript :Listener Window and type "wind()" and hit enter.
Well with wind we need to control wind, so in order to do that we need drag. Do same in Maxscript Listener Window. Drag will hold the extreme flow of windy particles in our scene. Rename drag as " Hold_Trigging ". Just change Time On from 0 to -25 and Time Off from 100 to 300 frames. Placement of Drag is not important. It works globally.
Now for that wind that we have created, let's change some parameters of it. Rename this wind as "Windy"
Strength = 0.03 Turbulence = 1.0 Frequency = 2.0 and Scale = 0.04
Position it as … X Axis (-117.09) , Y Axis (29.644) and Z Axis (75.099) also rotate X and Z Axis to 90 deg.
Now again keeping windy selected make a clone of it and name is "Suction_Out". And amend these changes…
Strength = 0.1 Turbulence = 0.15 Frequency = 2.0 and Scale = 0.12
Position it as X Axis (163.833) , Y Axis (29.644) and Z Axis (49.562).
Now til now whatever we have created and amended changes from itsdefault values, time to add it someplace. Drag "Force Operator" from particle depot and add "Hold_Trigging, Windy , Suction_Out". A new set of event is created called Force. Rename Force operator as " 1st_Reaction" and rename that event as " Impact ".
Save your file as "Buddha_Dispersion_WIP.max".
Time to move ahead.
Now when the parent particle collides with external source, new particles are formed.
Add Spawn Test below Force operator. Careful while playing spawn test. It sets out new particles from existing particles. It is really dangerous if you hit play button. No matter how powerful your system is will get hang.
Change spawn test settings…
1) Change from Once to By travel Distance.
2) Inherited = 25.
3) Variation = 20.
4) Divergence = 10.
Add Age Test below Spawn Test. Here Age test will decide triggering of newly spawned particles.
Age Test new settings…
Test Value = 52 and Variation = 65
Now again Age Test is true, particle will more to next set of event. Add Force operator to our particle view/canvas. Rename that event as "Flow". Now according till now we have couple of winds and one drag. We'll add three more winds in our scene. Select your first created wind (windy) and clone it three times. Rename it as "AirBelow, AirApart, AirCut".
AirBelow parametric values…
Strength = 0.063 Turbulence = 0.19 Frequency = 0.2 and Scale = 0.02
Position X Axis = 43.236 Y Axis = -60.089 Z Axis = 9.907.
AirApart parametric values…
Strenght = 0.03 Deacy = 0.01 Turbulence = 0.095 Frequency = 0.2 and Scale = 0.28.
Position X Axis (-55.603) Y Axis (-60.089) Z Axis (-34.756).
Rotation X Axis (0.0)deg Y Axis (54.171)deg Z Axis (0.0)deg.
AirCut Parametric values…
Strength (0.03) Decay (0.01) Turbulence (0.22) Frequency (0.2) and Scale (0.02).
Position X Axis (-126.095) Y Axis (-60.089) Z Axis (1.272).
Rotation X Axis (0.0)deg Y Axis (83.847) Z Axis (0.0)deg
Now when everything is going good, we still have few cards to play. To kill parent as well as its siblings, we need to frame them through their ages. Add new Age Test just below Force in the same Flow Local Event. Rename that age test from default name to "Killer_Age" . Amend the following changes…
Killer_Age (Age Test) parametric values…
Test Value (3) Variation (2)
Now with a all hard part done…we have to end all what we have created. Drag Delete operator into canvas and rename it a " Global_Killer ". And also rename that event as "End_Dispersion". Delete all particles will be the only option opened. Keep it as it is.
Time to see whether we had done everything OK. Try to scrub your tile-slider SLOWLY.
Now when you'll play, you'll notice that spawned particles are not getting deleted. So what now? Pretty simple. Remember earlier idid mentioned that PFS is event based particle system. One wrong connection, jeopardizes our whole scene. Unwanted result may appear in your scene resulting in crashing your backup file too.
Connect Sibling to Flow Event and Sibling_Age to End_Dispersion event. Also Killer_Age will be connected to End_Dispersion event.
See screenshot for better visual.
Part-2
" Using Krakatoa for partitioning particle and usning prt_loader to load portioned sequence "
Now with all particle animation been done suitably, it's time to lighten them up.
Time to render via Kraktoa. Once you launched Krakatoa GUI, just click open "Global Render values".
The Global Render Values rollout provides Overrides for various render values including Background Color, Particle Scatter Color, Emission, Absorption and Density Channels and any other channels that can be modified using MagmaFlow.
Click on Override color button. The Override Color option will replace the Scatter Color of all loaded particles with Color specified by the color picker and/or the map.
Render once and see the result.
Now you see we get white color. Not clear as white.
Anyways, kindly get your attention that whenever you install Krakatoa and render any scene, you won't get render controls in rendering window. But fair enough only the license file gets basic controls from Rendering tab into Render Window.
Now change the color as you wish…here is mine…
Now go to main controls and change "Light Scatter Phase Function" from Isotropic to "Henyey-Greenstien".
Now move your time slider ahead and render off single frame.
OK here comes our choises, either you can render off the entire sequence without partitioning particles or with partitioning them.
For those who want to render off entire sequence without portioning these particles…can follow the following steps…
1) Go to Krakatoa Render set up.
2) Click on "Active Time Segment" in common parameters.
3) Save your file from "Render Output".
Now how to partition our particles through Krakatoa…
Follow these steps very carefully…
There are 4 main roll outs of Krakatoa, which we usually counts. They are "Global Render Values , Main Controls , Save Particles , Partitioning " .
Now go to Main controls , below enable Depth Of Field you'll see drop down section, we get 3 main option… " Render Scene Particles , Save Particles to File Sequence , Light Scene Particles ". Select " Save Particles to File Sequence ".
Particle partitioning is a way to multiply the total particle count of a particle system through the repeated running of the particle system with different seed values. Generally speaking, particle partitions are related subsets of particles processed independently and cached to disk files.
Each partition is generated using different random seeds to generate a slightly different solution.
The partitions are combined at render time to produce an aggregate result containing more particles than 3ds Max can normally generate in a single pass.
In addition, partition generation can be optionally split between multiple machines using the Deadline Network Manager or by manually running multiple copies of Krakatoa on multiple workstations to generate the same high amount of particles in a fraction of the time needed to process in a single pass. For example, instead of creating 10 million particles per frame on one machine, you could save 1 million particles on 10 machines in 1/10th of the time.
Krakatoa contains tools to automate the process of creating particle partitions.
Now how to know whether what is happening in our particle partition?
Once you have click on "Generate All Partitions Locally " then, you'll see two colors bars (red bar and blue bar ) and some readings coming below them…let's see what does it states here…
The first line will show…
The partition number.
The requested partition range.
The partition count so far out of the total requested partition counts.
The current total frame count out of the total frame count for all requested total partitioning.
The total numbers of frames left to save.
The second line will show…
The last frame in Hours:Minutes:Seconds.
The elapsed time so far in :Hours:Minutes:Seconds.
The remaining (estimated) time left as per our progress so far in :Hours:Minutes:Seconds.
The text "Press Esc to cancel".
Now you may cancel this ongoing partition anytime as long as 3DS Max has focus to stop this process.
- Also if you have notice that just on the right hand side of partition section, you'll find " Deadline ".
- Now Deadline is an Rendering Management System for most of the applications like "3DS max , Digital Fusion,"
- What Krakatoa will do is it will submit its count to Deadline for partitioning our scene.
- Kralatoa takes a special advantage of Deadline for partitioning the particles.
- Also Krakatoa will automatically look upon if Deadline has been install in our computer system or not.
- Now Deadline works for two nodes free without limitations.
Now let's see how files look…
prt_files above….
Now once these partitions are created, time to launch them.
Now in order to do that, go to Standard Primitive section and drop down your selectors to Krakatoa. There you'll find 4 types of prt systems been amended. Click on "prt loader" in your scene.
- This is how it looks…
- Now how to actually open partition sequences here…
- Now this particle loader comes in with 6 types of roll outs. And they are "presets, particle file loader, rendering , viewport, culling and deformation and last is particle counts".
- We'll go inside "Particle File Loader " and click on " add files ", this would open up a path for loading our partitions. When you say OK , a small floating box will prompt you to load 3 conditions "Yes, No, Cancel" laying YES means to load all partitions that were created, NO suggest to load single partition and CANCEL to cancel the overall loading of partition files. Again when you hit "YES" another wide box will float in your scene…
Opening prt files ….that is loading partition sequence…
Condition of partition…
Krakatoa prt loader…
Now after going through all these process. This is how our scene looks like.
Here the prt_loader stack will load all 3 partitions that we have created. So in that stack we'll find 3 layers of partitions in the form pf parts naming as " part 1 of 3 , part 2 of 3 and part 3 of 3 ".
Now make the following changes as shown in this screenshot below…
And here is the look of display system from prt loader.
Well here we finish up of how to partition and load prt files from our simulation.
Now what is the use of prt_loader. Well you can use Fume FX for smoke dissipation, Fire Dispersion and once you finish up your simulation from Fume FX you can use Particle Flow again to convert Fume FX simulating particles into Max integrating particles. From there you can easily access you shading, lights and also make you custom geometry shapes and use in PFlow and render off the sequence.
Now this is how FX Pipeline goes.. Long process and yet results are pretty fascinating.
Anyways I just wanted you guys to know how to partition particles while using Krakatoa. As since 99% of Effect houses round this globe prefer particle partitioning for better control for effects.
Now since we know how to partition particles , let see how we can render from inside Krakatoa render engine. Remember Krakatoa is Volumentric Particle optimizer and renderer. It would drastically drop render time for high voltage of particles. But that doesn't mean you just crank up your particle system.
This won't take very long time…just go to your Krakatoa rendering tab. Open " Main Control " and click on " Render Scene Particles ". Also open up your main render tab control and amen the following settings in the screenshot below.
These are the looks of my final rendering.
As you'll notice that there are some gaps in between the particles on the model, well I had purposely kept it like that, we can prevent that from happening as it would be to heavy for you guys.
As I have mentioned earlier that someday through magazine I'll cover Krakatao feature.
Guys, particles partitioning can take good amount of size on your hard-disk.
Mine goes to 8.77 GB in total.
Now you'll notice one thing while rendering, you'll get some creepy curved lines. Well they can be fixed. All you have to is play in "Final Pass Density " and " Density Exponent ".
All you can do is take your favorite compositing application, drop in your passes and play with your colors and layer/nodes.
I hope this will help you people to create a basic Dispersion for your project and use Krakatoa well to suite your pipeline.
More will come from my side over krakatoa and various effect.
In next edition I'll write to you about using this very same file of PFlow and use \Fume FX o design particle based smoke and ue Krakatoa to render our scene.
Till then HAPPY RENDERING.