Monday, August 29, 2016 at 11:19AM
Adaptive Motion Blur
- In previous versions of Krakatoa, the number of Motion Blur passes had to be set to a constant value that accommodates all particles on all frames of an animation.
- This means that if the animation contains frames with slow moving particles and other frames with sudden bursts of motion, all frames would need to use a high number of passes to ensure the fast moving particles appear smooth enough.
- In Krakatoa MX 2.6, the number of passes can be adjusted automatically by enabling the Adaptive Motion Blur option and specifying a minimum and maximum number of passes.
- Krakatoa will calculate the amount of screen-space motion of each particle on each frame, and determine the optimal number of passes to produce a consistent motion blur effect.
- If the calculated value is higher or lower than the user-defined minimum and maximum values, it will be clamped.
- Additional controls called Smoothness and Smoothness Bias can be used to adjust the quality of the Adaptive Motion Blur:
- The Smoothness parameter is a multiplier to the automatically calculated value, thus a value of 2.0 will suggest two times more passes. This is useful when rendering with Jittered Motion Blur where one sample per screen pixel might not produce a smooth enough output.
- The Smoothness Bias is an Exponent to the otherwise linear curve describing the relationship between the maximum number of screen pixels travelled by a particle, and the number of Motion Blur passes. By setting the Bias to values above or below 1.0, the curve can be bent to produce more passes for frames with fast motion while drawing frames with slow motion with less passes than usual, or the other way round. The Bias is applied only to the part of the curve pinned between the Min. and Max. values.
Depth Of Field Bokeh Effect
- The Krakatoa Camera Modifier has been extended in Krakatoa MX 2.6 with additional controls over the shape and color of the Bokeh effect.
- A custom texture map or map tree can be provided to control the shape, the color, or both.
- When no map is provided, a circular shape will be used like in previous versions.
- The Alpha channel of the texture map will be used to control the shape of the Bokeh effect.
- If no Alpha channel is provided but the mask is enabled, the Value of the RGB channels will be used instead.
- The texture's RGB color can also be blended with the particle's Color, producing custom Chromatic Aberration-like effects.
- The texture map will be rendered into multiple power-of-two resolutions (map-map), and the closest resolution to the size of the DOF circle of confusion will be picked.
- An additional control allows the circle of confusion size to be multiplied by a user-defined value in order to pick higher resolution textures and avoid obvious banding as the Bokeh texture size changes due to extreme DOF settings.
- An optional Anamorphic Squeeze parameter can be used to scale the effect along the vertical axis.
- Both the Color Blending and Anamorphic Squeeze parameters are animatable.
- The Color Blending can be controlled per-particle using a custom BokehBlendInfluence float16 channel which can be allocated explicitly and populated using a Magma modifier.
New World Space Modifiers
- A World Space Modifier version of the Krakatoa Delete modifier has been added to allow the culling of particles after they have been transformed and deformed in world space.
- A World Space Modifier version of the Krakatoa PRT Cloner modifier has also been added to allow the replacement of a particle with particles from other sources, or with procedurally generated particles, after world space transformations and deformations have been applied.
Magma Random Operators
- A number of pseudo-random number generators have been added to the Function category of the Magma editor:
- Uniform Random
- Vector Uniform Random
- Gaussian Random
- Exponential Random
- Triangular Random
- Uniform On Sphere Random
- Weibull Random
- All Random operators expose a Seed input which controls the random value output.
- Typically the ID channel of a particle can be connected to the Seed input in order to produce a consistent random value over the life of the particle.
- However, any particle channel could be used to control the random value, allowing for more flexible setups where the randomness changes based on Index, Position, Velocity, Color etc. components or magnitude.
Improvements To Existing Features
Depth Of Field Performance
- In previous versions of Krakatoa, rendering with Depth Of Field on multi-core machines could experience the so-called "Last Bucket Standing" effect, but in the form of "Last Image Buffer Standing".
- Krakatoa splits the particles along the depth of the camera and renders them into multiple Image Buffers, one for each thread / core / CPU.
- In previous versions, the split always produced equal particle counts in each chunk.
- However, when rendering with extreme Depth Of Field settings, some of the threads could take much longer to complete when out of focus compared to those in focus due to the different number of samples to be drawn.
- Krakatoa MX 2.6 will split the particles into non-equal chunks taking into account the Depth Of Field parameters, thus allowing all threads to finish in approximately the same time.
- The result is up to two times faster performance in extreme cases thanks to the better distribution of CPU resources.
- The speed increase may vary depending on the scene content and camera settings.
Combining PRT Cloner Modifiers
- The PRT Cloner modifier preserves the distribution particles' channels by renaming them with a Source_ prefix.
- However, trying to use a PRT object with PRT Cloner as the source of another PRT Cloner on another object would cause channel name collisions in previous versions of Krakatoa.
- In Krakatoa MX 2.6, the Source_ channels of the previous PRT Cloner modifier will be ignored and new Source_ channels will be generagted, allowing the combining of several levels of PRT Cloners into complex setups.
Magma Modifier Source Channel Toggle
- To make the access to Source_ channels of PRT Cloner modifiers easier, both the InputChannel and Output nodes now offset an [S] button next to the channel name.
- When pressed, the button will toggle a "Source_" prefix to the current channel name - for example if the channel is named "Color", it will become "Source_Color"; if it is already called "Source_Color", it will become "Color".
PRT Cloner Modifier Color Channel Multiplication Option
- In previous versions of Krakatoa MX, the PRT Cloner modifier always multiplied the Color channels of the Distribution particles and the Cloned particles.
- In Krakatoa MX 2.6, this multiplication is optional and controlled by an additional checkbox under the Miscellaneous rollout.
- The multiplication option is checked by default for backwards compatibility.
- When unchecked, a Magma modifier could be used to perform any mathematical operations between the Color and Source_Color channels like blending, adding, multiplying etc. for maximum flexibility.
Magma Modifier 'Use Existing Channels' Toggle
- An option has been added to the InputChannel operator to only display channels available in the PRT object(s) the modifier is applied to.
- Note that the channels will be taken from the top of the modifier stack and might not be available at the specific modifier's level.
- Still, this option makes the finding of existing channels much faster.
- The option is sticky between sessions and affects both the operator's drop-down list and the Input Channels menu list.
Magma Noise Operators Phase Option
- Both Noise and VecNoise now expose a Phase input parameter.
- The value can be set to a constant value for all particles, or to a per-particle value for ultimate flexibility.
Magma Use Existing Channels Option
- Both InputChannel and Output nodes now expose an option to only list existing channels.
- This option also affects the right-click context menus.
- It is sticky between sessions via the INI file.
- The filtering is based on the PRT stream's channel list on top of the modifier stack, not at the level of the modifier, so some channels created higher up on the stack might still show up.
PRT Loader Partition Channels
- When loading multiple PRT sequences, for example multiple Partitions, the PRT Loader will now tag each particle with a new procedurally-generated PartitionIndex integer channel.
- This channel will contain the index of the file sequence on the PRT Loader's file list, thus allowing Magma modifiers higher up on the stack to determine which partition each particle came from.
- A second integer channel called PartitionCount will provide the total number of sequences in the PRT Loader, allowing easy normalization of the PartitionIndex value.
Magma Editor HDPI Support
- The Helium control used by the Magma Editor will now scaled correctly on high-resolution monitors.
Krakatoa Menus And MacroScripts
- The Krakatoa menu has been enhanced with support for sub-menus.
- Rarely used options have been grouped into sub-menus to shorten the menu.
- New menu items have been added for all WSM and OSM modifiers.
- All Krakatoa MacroScripts now have icons and valid tooltips.
- PRT creation MacroScripts have been updated to switch the Command Panel to Modify mode after execution for faster editing.
Particle Data Viewer Access
- All PRT Objects with an options menu button now offer a menu item to open the Particle Data Viewer directly without a longer trip to the Krakatoa menu.
- Matte Objects rendering and Depth Of Field calculations performance suffered a regression in v2.5.x when compared to v2.3.x. Krakatoa MX 2.6.0 fixes these issues, and thanks to the other improvements to the Depth Of Field calculations outlined above, outperforms all previous versions of Krakatoa.
- The state of the Motion Blur toggle in the Krakatoa Renderer had an effect on the behavior of Load Single Frame Only option in the PRT Loader. Previously, if Motion Blur was disabled (and thus the Velocity channel not required for rendering), the PRT Loader would load the Velocity data unmodified even if Keep Velocity Channel was off. Turning on Motion Blur was causing the Velocity to correctly be set to zero though. This has been fixed, the Velocity will now be zero in both cases, unless Keep Velocity Channel is checked explicitly.
- Fixed the InputField Magma node to correctly support FumeFX 4.0.4.
Tuesday, June 14, 2016 at 12:52PM
- Added support for FumeFX 4.0.4 which had introduced a breaking change in the FXD file format access.
Nitrous DirectX11 Shader
- Added custom shader to support correct large dots drawing in all viewport types when the viewport is set to Nitrous DirectX11 mode.
- A new \Shaders subfolder will appear in the installation directory.
- If the folder is corruted or removed, this could lead to display problems when drawing Krakatoa objects.
Maximum Thread Calculation
- Improved the calculation of the maximum number of threads to be used based on physical core count, available free memory after loading all particles, image buffers size and count, and user-defined constraints on the memory percentage and maximum thread count limit.
- Prior to version 2.4.0 Krakatoa MX used all available cores, allocating one image buffer per thread per output. With high-resolution output and multiple render elements, machines with very high core counts could easily run into memory problems.
- In version 2.4.0, the logic was changed to use a percentage of the installed memory for image buffers, thus automatically reducing the number of threads. However, since the physical memory was used as a measure instead of the available memory, the performance could be lower than in previous versions because less threads would be spawned even when more could be run.
- In version 2.5.2, the logic takes into account a user-defined percentage of the actual free memory available to the renderer, making the behavior more controllable and allowing more or less threads to be spawned as needed.
- Also, a user-defined limit value can be used to reduce the cap the maximum number of threads on machines with too many cores (e.g. a cap of 16 on a 32 core machine). Adding more cores increases the pre-processing and image buffer management overhead and can lead to excessive use of resources without much speed benefit.
- A new Memory Usage / Image Buffers / Multi-Threading Report area has been added to the "Memory Channels" rollout of the Krakatoa GUI.
- It exposes a list view showing a report about the installed memory and cores, available memory before and after taking into account the particles specified in the Particle Count / Memory Calculation field, the image buffers sizes and counts, and the actual number of threads that would be used based on the specified percentage of available memory to use and the Thread Limit value.
- It also exposes the Available Memory Percentage For Frame Buffers and Render Threads Limit values which are also available through the Preferences > System Preferences dialog.
- When rendering, the Krakatoa Log will also display information about the memory used for frame buffers and the resulting thread count based on the inputs described above.
- Fixed Sub-Frame Interpolation which could produce inifinite positions under certain circumstances.
- Fixed the Density Interpolation of PRT files without an explicit Density channel which could produce incorrect values.
- Fixed saving of LiDAR files containing 64 bit Position data to PRT files which default to 32 bit. In the past, the saving operation produced an error, now the saving will be performed, but could potentially lose data precision if the point cloud is too far away from the origin.
Wednesday, May 4, 2016 at 5:29PM
Improvements To Existing Features
Birth Channel Generator Utility UI
- Added a new option to the Input file's [>>] menu to get the save path of the Krakatoa renderer (if available)
- Added a new option to the Input file's [>>] menu to get the first file from a selected PRT Loader's list (if available)
- Added a button to set the Base Frame to the current Slider Time.
- Improved UI updates and handling of the case where Input and Output were set to the same filename.
- Added code to reposition the dialog into the visible desktop area if the desktop size or order has changed.
- When creation an InputTexmap, it will now be auto-connected to the Output node automatically if the latter is selected. In the past, the InputTexmap operator was handled as an Operator, leaving both the Output node and the InputTexmap selected.
- Fixed a bug in the PRT Source object converting meshes and splines with animated deformations.
- Changed the log level of some messages related to the PRT Source from Error to Debug Level as they are of no interest to the end user.
Monday, May 2, 2016 at 12:53PM
New Features And Improvements
3ds Max 2017 Support
- Krakatoa MX 2.5.0 now supports all versions of 3ds Max from 2012 to 2017.
- Note that an updated v2.5 license will be required to use this version of Krakato MX.
Improved FumeFX 4.x Support
- Krakatoa MX 2.5.0 now ships with the FumeFXIO.dll API from Sitni Sati and should be independent from VoxelFlow.dll changes which caused incompatibilities in the past (like v4.0.1/4.0.2 breaking compatibility with Krakatoa MX 2.4.2). It should work with all versions of FumeFX from 3.0.2 to 4.0.2 and higher. This was also made available via the v2.4.4 update as a free bug fix.
- The PRT FumeFX object now exposes new Time Controls with
- Playback Graph incl. Presets menu
- Limit To Custom Range
- Start and End range values
- Before and After behavior (Blank or Hold First / Hold Last)
- Loading Frame readout
- These controls allow the user to offset the PRT FumeFX data relative to the source simulation, retime the animation without saving to PRT, load a subset of the simulation, hold a single frame over the whole course of the animation, or even flash a single frame for only one frame if desired.
- The Krakatoa PRT FumeFX object now exposes additional options in its [>] menu:
- "ASSIGN Krakatoa Material" - when selected, a new Krakatoa Material with white Scatter Color will be assigned to the PRT FumeFX. This will allow the Emission channel that can be generated via the "Generate Emission from FumeFX Fire" checkbox to survive the Material assignment (a Standard Material would overwrite the Emission with its Self-Illumination color), while providing valid options to tweak the Color, Density etc.
- "CLEAR Material" - removes the material from the PRT FumeFX object.
- Note that if the FumeFX source grid has a material assigned, it will NOT be assigned to the PRT FumeFX on creation via the Krakatoa menu anymore - in the past, a V-Ray material could end up assigned to the PRT FumeFX and prevent it from rendering in Krakatoa.
New Per-Particle ReflectionStrength Channel
- A new ReflectionStrength per-particle channel can be allocated in memory and will be cached in the PCache.
- If the Allocate ReflectionStrength checkbutton is checked, and if a particle provides a valid ReflectionStrength channel (either loaded from a PRT file or assigned by a Magma Modifier), the particle's environment / raytraced reflection strength will be modulated by its value.
- If the particle does not have a ReflectionStrength channel, a value of 1.0 will be assumed.
- The existing Reflection Strength UI value will still be applied as a global scale to the incoming part-particle ReflectionStrength channel if allocated, otherwise it will be used for all particles like in previous versions.
- The ReflectionStrength channel has been added to the Save Channels list of the Krakatoa UI, as well as to the Output and InputChannel lists in the Magma Editor for easy access.
PCache With Emission And Absorption Channels
- The Use Emission and Use Absorption options will now control the actual use of the channels by the Krakatoa Renderer even when PCache is enabled.
- In previous versions, these options controlled whether the Emission and Absorption channels would be allocated in memory. Once cached in memory, the renderer would always use them even if the respective Use... options were unchecked while the PCache was still engaged.
- This means that in Krakatoa MX 2.5.0 you can enable and pre-cache the Emission and/or Absorption channels in the PCache, and then toggle them on and off for test renders without the need to rebuild the PCache!
Birth Channel Generator
- A new BirthChannelGenerator stand-alone command line utility with a MAXScript-based User Interface has been added to the Krakatoa installation.
- It can be used to reprocess an existing particle file sequence that contains an "ID" channel and generate a new "Birth" channel based on the first occurrence of a channel value in the sequence, or based on a specific reference time.
- The utility can be run multiple times to generate multiple Birth channels from different existing channels.
- For example, a BirthPosition channel can be created from the Position channel. It will contain the Position the particle was born at, and this value will persist for each particle for the life span of the particle.
PRT Source Improvements
- The PRT Source object can now recreate the particles of any particle source supported by Krakatoa, including
- PRT Loaders.
- All procedural PRT objects incl. PRT Volume, PRT Surface, PRT Hair, PRT FumeFX, PRT Maker, Stoke PRT Field, and other PRT Sources.
- Stoke Particle Simulator particles.
- Particle Flow systems, including specific Events.
- Thinking Particles systems, including specific Groups.
- All legacy 3ds Max particle systems including Spray, Snow, SuperSpray, Blizzard, PArray, PCloud.
- All geometry objects with a valid mesh, generating one particle per vertex
- All splines, generating one particle per interpolated vertex, or one particle per mesh vertex when set to renderable.
- All relevant channels will be acquired.
- The PRT Source can then be modified live in place using deformation modifiers, Magma modifiers, Krakatoa Delete modifiers, Deformation WSMs, and the new SpaceMagma modifier without the need to save to PRT sequence first, and then load with PRT Loader for editing.
- Note that if the source object of the PRT Source is a Particle Flow, the PRT Source will not be supported as a valid Krakatoa PRT Birth or PRT Update pick of another Particle Flow to avoid internal problems within 3ds Max.
- The PRT Source can then be rendered directly, or passed for example to a Particle Flow using the updated Krakatoa PRT Birth and Update operators (see below).
- The PRT Source's [>] menu was extended with options similar to the ones available for PRT Volume, including the ability to align, parent, acquire and clear the material of the source object, set the object color from the source, hide/set to bounding box display/disable rendering of the source object, and set the current display options as defaults for PRT Sources newly created via the Krakatoa menu
- Note that when a PRT Source is created from the Krakatoa menu, if the selection includes a PF_Source object (a Particle Flow Emitter), the user-defined options to hide or display as bounding box the source object will be completely ignored. A hidden Particle Flow Emitter will not generate any particles and cannot be cloned. To make a Particle Flow not renderable by Krakatoa while still being cloned by a PRT Source, you can set the Render operator to "Phantom" mode, or disable its render type via the Krakatoa Main Controls particle sources checkbuttons.
Particle Flow Operators Improvements
- In addition to PRT Loaders, the Krakatoa PRT Birth and Krakatoa PRT Update operators now accept most particle sources supported by Krakatoa itself, including
- All types of PRT objects like PRT Volume, PRT Surface, PRT Hair, PRT Source, PRT FumeFX, PRT Source, PRT Maker, Stoke PRT Field etc.
- The Stoke Particle Simulator
- Legacy 3ds Max Particles
- Mesh Vertices
- Spline interpolated vertices
- Note that since most of these objects do not contain an ID channel, the Index channel will be used instead, and the results of a Krakatoa PRT Update with changing particle count can be unpredictable!
- The Krakatoa PRT Update operator now exposes an option "Adjust Position For Velocity"
- When checked, it will compensate the Position integration by moving the particle a step back along the Velocity vector.
- This option is enabled by default in newly created Krakatoa PRT Update operators.
- In previous versions, the Particle Flow particles would appear an integration step ahead of the source particles because Particle Flow would advance them internally after the Krakatoa PRT Update has been already evaluated.
PRT Cloner Modifier Improvements
- Changed the handling of missing ShapeID channel when controlling clone assignments via Magma.
- In previous versions an error was being generated, however this could also happen when the distribution object had zero particles on some frames.
- With the change, if a ShapeID cannot be found, the first object on the list will be used by default.
- New SpaceMagma World Space Modifier allows channel modifications to be performed after the particles have been transformed to world space, and after other WSMs like Path Deform etc.
- This allows channel sampling from the scene to use the World Space positions of the particles after they have been affected by deformation WSMs and node transform animation.
- This also allows Color and Normal Viewport display via the PRTViewportColor and PRTViewportVectror channels to represent the final state of the data on top of the stack.
- Note that the SpaceMagma WSM is applied before materials assignment, so channels set by materials will still not be accessible by it.
- The existing IntersectRay and NearestPoint Magma operators now provide an Ignore Backfaces option.
- It will be set to False by default to produce the same behavior as previous versions (both front and backface will be tested).
- It can be enabled for the whole operator by checking the >Ignore Backfaces checkbutton which exposes the default value of the new Ignore Backfaces input socket. Backfaces will be ignored.
- It can be controlled per-particle by connecting a Boolean or Integer value to the new Ignore Backfaces input socket. For example, you could perform a test against the X component of the Color channel so that only particles with high red component value would ignore backfaces while those with low red content would not.
- A new Filter field in Output and InputChannel nodes allows for very fast channel finding in the existing drop-down lists.
- The Magma Editor's Navigator will now display the Ouput nodes when they are toggled to floating mode via SHIFT+CTRL+O. When docked to the right, the Output nodes will not be drawn, like before.
- When the Magma Modifier is applied to an object that has 0 particles, the modifier will not be evaluated anymore.
- In the past, this would trigger an error message including a pop up at render time that some InputChannel nodes were trying to access non-existent channels.
- Now a Warning will be written to the Krakatoa Log instead, saying "WRN: No particles from PRTobjectXXX. The Magma modifier will not be evaluated."
- This allows for the correct processing of procedural PRT objects like the PRT Source which might have particles only on some frames but not on others (e.g. when duplicating a Particle Flow that emits later than frame 0, or whose particles all get deleted after a while).
- The license location will now be resolved using the correct environment variable instead of a hard-coded registry entry, allowing Usage Based Licensing support and other advanced licensing schemes in the future.
- Fixed a bug in the exposure of Noise and VecNoise operators which could affect the exposure of InputNodes with higher IDs behind them.
- Fixed a bug in the InputScript operator which was not handling quotation marks correctly. Now it is possible to evaluate expression containing strings, including accessing Krakatoa properties using FranticParticles.GetProperty().