- Pipeline Viewer: added. This shows you when and where nodes are executed in the pipeline.
- Any Node: a node can now have a quicktab with buttons creating some useful mini-setups that involve the specific node.
- Constraints Global: Added a candidate button for the standard constraints tab in nodes.
- Plants: is now separated from Effex. Plants is currently not included in Effex distributions any longer. It will come back later this year.
- Help Designer: Added C++ Syntax Highlighting support in Headers. That way also documentations for code (API) can be created as well. You simply put a [code] in front.
- Complete rehaul of internal effex scene node management and threading pipeline. Multiprocessor issues should not occur anymore and you will notice some speed ups.
- Added Effex API. This is a vast API for third party developers. It gives read & write access to the most important structures in Effex like Particles, Channels, Volumes etc., so external renderers or other plugins can now easily support Effex simulation data if they want! Furthermore it allows third parties to create their own constraints, forces and operators to extent the Effex Framework!Changes/Fixes
- Renamed several nodes and also reordered the menu for better readibility. This should make it easier for the user to determine which objects logically fit together in the most obvious way.
A lot of nodes now use a short prefix (for visually less cluttered names):
1. GOP = Grid Operator
2. COP = Cell Operator
3. POP = Particle Operator
4. PP = Particle Property
5. GF = Grid Force
6. PF = Particle Force
7. DF = Dual Force
8. CS = Constraint
9. PCS = Particle Constraint
10. PIOP = Particle Instant Operator
11. ROP = Rigid Body Operator
12. VOP = Volume Operator
13. MOP = Mesh Operator
- Found a small but severe bug in the space calculations which could lead to random bugs & crashes (especially near boundaries). fixed
- All nodes (almost): Node tab added. Here you can now change the execution priority and pipeline stage of a node.
- More candidate button additions and interface rearrangements for better UI consistency, work-flow, user experience
- Resources: A few core additions & changes in several node interfaces
- Interface: Fixed all interface glitches like settings that should be invisible or greyed out. Also brought consistency into all node types and redesigned several nodes.
- Candidate Buttons: Removed all viscosity dynamics links
- External Particles: radius of such particles were not correctly transformed into physical effex space in the nodes that support them. fixed
- Objects that allow direct interaction with Cinema 4D can now be found in "Cinema 4D" submenus.
- CFL Condition was not calculated for liquid dynamics, so adaptive stepping was broken there too. fixed
- Help: fixed a tree navigation selection bug
- Improved update messages of nodes (internode dirty states & editor feedback)
- Fixed the offset bug which fixes the pressure and capsule scale bugs (and probably other random crashes as well)
- Time Stepping bug fixed.
- More floating point digits now possible in Properties, Value and Channel/Value
- Changed some default values (Weak Spring, Fluid sph radius..)
- Effex Scene::Cache Wizard: in load mode it does now correctly relink targets and also sets some other useful stuff automatically (substeps etc.). This not only makes caching process easier but also avoids some user errors.BodiesNew
- MultiVolume: Added. This takes several input meshes and create volumes for each internally. An attached obstacle tag will be applied to all the internal volumes. Same rules apply as for a normal volume.
- MultiVolume: Added MoGraph Cloner & Matrix support. This is where the fun begins.
- Volume: does now allow to contribute to the adaptive bounds (for example if there is no emitter that triggers the adaptive bounds)
- Volume: New display options added including adaptive settings for faster editor previews when the timeline is running.
- Volume: Added Obstacle convenience button. This allows to quickly make an obstacle out of the volume (or remove it).
- Volume: Added Candidate button to quickly link existing objects or create primitives
- Volume/MultiVolume: Added quicktab
- Volume/MultiVolume: Added "No framework obstacle". This will exclude the volume from being seen as an obstacle in the fluid dynamics and other framework nodes but stays active for the rigid body dynamics
- Volume/MultiVolume: Added "Output Dynamic Meshes". This lets you decide which meshes to output. The cloner mode is there because "transfer dynamics to original" (see Rigid Bodies obstacle tag changes below) does not work for them.
- MultiVolume Effector: Added. This is a mograph effector that allows transition of effex rigid body dynamics back to used cloners/matrix objects
- Surface Reconstructor: Added Volume Display options.
- Surface Reconstructor: Added "Use weighted Pos" in isotropic mode (in anisotropic mode weighted pos is mandatory) which slightly improves particle distribution during reconstruction and can (but not necessarily) result in smoother surface areas.
- Implicit Mesher: Massive speed up for all algorithms. For example in a very splashy scene that used to take ~20 seconds to mesh with Marching Tiles, it now only takes 5 seconds!
- Implicit Mesher: Added interpolation modes for Marching Tiles. Quadratic is the one used before
- CSG: Extent value added to catch all data correctly
- CSG: Added Volume Display options.Changes/Fixes
- Volume: Fixed a moving solid bug when using viscosity. Particles were accelerating for no reason.
- Volume: deactivation resulted in the adaptive bounds not being updated and crashed. fixed
- Surface Reconstructor: Assigning Particle group crashes. fixed
- Surface Reconstructor: Turning display off didn't work. fixed
- Implicit Mesher: Had no bounding information generated so wasn't working as input for some C4D objects. fixedRigid Body DynamicsNew
- Introducing Bullet Rigid Bodies into the framework.
This implementation supports static, kinematic and dynamic rigid bodies.
You add it by simply adding the obstacle tag as usual which now contains rigid body settings as well.
Its initial purpose is not to replace the C4D bullet dynamics but to provide the fx artist with a fast and simple way
to create and couple rigid bodies with fluid dynamics (c4d dynamics cannot be called in Effex substeps and there is as good as
no access to the c4d dynamics...and it is nice to have them separate anyway, so any bugs can be fixed without c4d being updated).
Also it has some features the c4d dynamics do not have like use of Effex constraints
- Effex Scene: Added Bullet Dynamics tab.
- Obstacle Tag: Does now contain the translational and rotational strength parameters for the volume and all Bullet rigid body settings.
- Obstacle Tag: Added RAM Cache options for rigid body dynamics.Changes/Fixes
- Obstacle tag: Removed Static/Kinematic mode drop down. This is determined automatically now.
- Obstacle tag: Kinematic did not update changes in the AM during simulation. fixed
- Obstacle tag: Added option to transfer dynamics to original object. Does not work for cloners though. You need to use the MultiVolume Effector to transfer the positions back to the clones
- Obstacle Tag: Improved performance of moving obstacles forcesFluid DynamicsNew
- All Dynamics: Viscous Liquid Dynamics is now available as a function for all fluids (gaseous & liquid) and not a liquid dynamics node any longer.
So you can use the high-quality viscosity also for smoke & fire simulations! For example with higher temperatures viscosity of air changes in reality, so this can improve realism.
- Liquid Dynamics: Added Kernel option when using SPH-Style FLIP sampling for more control on how the particle velocity is sampled onto the velocity grid. If not linked it will default to a spiky kernel.
- All Dynamics: added Quicktab
- All Dynamics: Added new drawing display options
- All Dynamics: Two-Way Coupling of rigid bodies with fluids added.
- Liquid Dynamics PBF: Added. This introduces Position-Based-Fluids into the framework. However, for now, this is experimental. But in some scenarios it may be enough for unbound fluid dynamics.Changes/Fixes
- Liquid Dynamics: Viscosity with open boundaries makes particle go crazy. fixed
- Liquid Dynamics: Gauss-Seidel solver was buggy. Fixed
- Liquid Dynamics: Memory Leak. fixed
- All Dynamics: Global Viscosity is now 10 times less viscous with the same value. The space was not correct before!
- All Dynamics: Several interface fixes and improvements
- All Dynamics: The custom offset value for the domain is now unbound (not clamped to 100% anymore)
- "when a Inviscid Liquid node is linked in an emitter and the according particle group is not linked in the Inviscid Liquid node, I get an instant crash" fixedEmittersNew
- Some emitters do now provide adaptive space contribution setting so the volumetric sources they use can define the adaptive space size.
- Emitter::Particle In Volume: Added Start/End distance settings for user convenience (you could create the same with a volume constraint)
- Emitter::Particle In Volume: Added Distance based emission subdivisions.
- Emitter::Particle On Mesh: texture based emission added
- Emitter::Particle On Mesh: you can now also use a channel shader for filling the particle color.
- Emitter::Particle In Volume: Added color shader slot. Here you can use 3D channel shaders (no uv data available inside a volume) to assign colors to the particles directly.
- Emitter::Grid: Added Quicktab
- Settings::Grid Emission: Added a value field that is used when no Value node is linked.
- Emitter::Particle On Mesh: added curvature based emission. You need to generate curvature for the used mesh volume using MOP::Curvature.
- Emitter::Particle In Volume: added a minimum distance setting allowing to always keep a certain distance to existing samples (as this is used for fluid simulation mostly this is bound by half a grid cell)
- Emitter::Particle On Mesh: added Iterations setting. Together with minimum distance setting and emission settings count you can create evenly distributed particles on a surface
- Emitter::Particle On Mesh: added a minimum distance setting allowing to keep a certain distance to existing particles.
- Settings::Particle Emission: Added a value field that is used when no Value node is linked.
- Emitter::Cell Iterator: added. This replaces the Cell Operators list in the channels and is now an emitter instead (allowing to be called at any stage)Changes/Fixes
- Emitter::Particle In Volume: A slight speed up
This allows to create more particles depending on volume distance so you can have more particles emitted near the surface
- Emitter::Particle In Volume: property candidate button crash fixed
- Emitter::Particle In Volume: Improved on the emission constraint when particles are already near the location of emission, so it doesn't emit then. This in return improves particle density correctness. Solver is now only used for clamping to its container walls.
- Emitter::ParticleData To Grid: External Particles (TP,C4D Particles) support was broken. fixed
- Emitter::Particle On Mesh: Did not update correctly in the first frame. Particles simply disappeared. fixed
- Emitter::Particle In Volume: some changes to the interface and namings
- Settings::Particle Emission: Fixed crash when turning it off/on
- Container::Channel/Value: does now support vector channelsParticlesNew
- Particle Group: Added Quicktab with very useful setups
- Particle Group: You can now display any particle property (changes particle display color)
- Particle Group: Added Candidate buttons for the properties field
- Properties: PP::Normal vector property added (e.g. filled by SurfaceProperties)
- Properties: PP::Anisotropy scalar property added. This contains, if filled, the anisotropic factor (used by ThinSheet and SurfaceReconstructor (anisotropic mode) )
- Properties: PP::Curvature scalar property added. This contains the particle curvature (e.g. filled by SurfaceProperties)
- Properties: PP::UV property added. This can be filled by the ParticleMeshEmitter and be used by the Particle Sampler.
- Properties: PP::Mass property added.
- Properties: PP::Position property added in order to also read out the particle position.Changes/Fixes
- Particle group: interface changes
- Particle Group: Fixed ballistic particle advection bug.
- Particle Group: Fixed non-working particle forces for ballistic particles.ForceNew
- DF::Field Curl: added. This adds curl noise as a force. However, instead of just creating a velocity force out of a noise it can use any constraint.
- GF::Particle Turbulence: Blinn radius setting added (for the Blinn falloff kernel). Radius is given in voxels
- GF::Particle Turbulence: Support for particle radius added. Allows to control the "Influence Radius" per particle. Radius is always given in physical space.
- GF::Particle Turbulence: Spatial Adaptivity feature added. Here the strength of the vorticity particles is spatially adapted based on helicity. you can use much higer stretching factors and intensities.
- GF::Swirling: Conserve Momentum checkbox added. This is not a new feature. It was used before already but now is exposed in the interface, so you could turn it off to save a bit of performance (however most of the time you want this turned on).
- GF::Swirling: Spatial Adaptivity feature added. The strength of the swirling is automatically adapted based on the helicity of the fluid flow.
This allows to use much higher swirling intensities without destroying the flow (which can happen without it pretty quickly)Changes/Fixes
- GF::Swirling: Faster precomputations using less memory consumptionOperatorsNew
- All Cachers: The world position of the cacher node is now used as an offset when loading the cache!
- All Cachers: Frame padding added. This allows to set how many digits are used in your cache file names to express the frame number. A value of 5 is the default, so the previous standard padding.
- GOP::Variable Density: added. This calculates variable density of air in a smoke/temperature simulation and increases quality of your smoke/fire simulations at almost no extra cost as it is calculated very quickly.
- GOP::Diffusor: is not a delegate anymore but an operator. Instead of linking the diffusor in the channel, you now link the channel in the diffusor.
- GOP::Diffusor: added diffusion mode.
- GOP::Advection: added. This replaces the advection settings in all the according grid nodes (Channels, Fluid Dynamics). Note: Only linking the fluid dynamics results in self-advection of the velocity field (used in gas simulations). See presets.
- GOP::Cacher: Can now cache surface reconstructors as well
- POP::Advection: added. This replaces the advection settings in the particle group.
- POP::Weak Spring: Added "Mimic Boundary Particles". This mimics boundary particles and has several effects on the flow. First of all the distribution and conservation is improved at obstacle boundaries. Secondly the fluid easier separates from obstacle boundaries. HOWEVER, it is not very good for perfectly aligned still standing scenes as it modifies the distribution arbitrarily and can result in initial boundary motion. But it's great for dynamic scenes.
- POP::Weak Spring: Added "Force velocity resampling". This gives a little more stability in sparse areas (so it does not happen that often and only adds little overhead) if turned on.
- POP::Forces: added. This used to be in the particle group and is now an own node where you link the particle group. However it has the following extensions:
1. It also allows to add the forces to multiple particle groups
2. It can write values of the forces into ANY particle vector property (not just velocity).
3. Also it has duration and constraints support.
4. It can add or set the forces (set is useful for ballistic particles and to overwrite vector values in custom properties)
- POP::Surface Properties: Falloff option added.
- POP::Surface Properties: Added individual radius settings for the three properties and a global radius setting (to drive all of them). Set the global radius to 0.0 to get individual access.
- POP::Surface Properties: Added constraints tab
- POP::Surface Properties: Added "Normalising factor" which is used in the Gradient Length and Normals weighting mode to manually normalise curvature.
- POP::VolumeProperties: Now has a Kernel port (is used instead of the kernel setting then)
- POP::Surface Tension: Implemented the latest state-of-the-art particle surface tension model (replaces the surface properties mode! Old scenes need to be adapted)
As the algorithm is originally for SPH simulations, it works best with an SPH-style setup (out of experiments):
1. VolumeProperties: radius of 2.5+
2. Liquid Dynamics: Use SPH style sampling with a radius of 2.5+ (and if required low "flip<->pic" setting)
3. Surface Tension: radius of 2.5+
Ideally you set the same radius for all three. Btw. this technique is similar to the Effex technique which is using the cohesion mode plus a weak spring operator
- POP::Weak Spring: Added duration node support.
- POP::Weak Spring: Added Particle Spacing control. The default of 0.5 voxels is the actual particle spacing. So changing it is an artistic option!
- POP::Weak Spring: Added iterations, so it can be executed several times.
- POP::Grid To ParticleData: Added. This nodes takes as input a channel based node (grid channels, fluid/liquid dynamics, Volumes) and a particle property.
It will read the channel value at the particle position and write it into the specified particle's property. It's the counterpart of POP::ParticleData To Grid as the name suggests.
- POP::ParticleData To Grid: Added Candidate Button for channel/values
- MOP::Curvature: Added. This calculates vertex curvatures for Effex meshes (Volume or Implicit Mesher). This is currently only be used by the ParticleMeshEmitter for curvature-based emission.
- MOP::Smoother: Added. This one can smooth the implicit mesher mesh and create a much better mesh out of it.
- ROP::Forces: added. Allows to apply forces to rigid bodiesChanges/Fixes
- All Cachers: Path field jumping back to C4D scene path if set to user-defined. fixed
- GOP::Advection: Replaced Interpolation::Cosine with Quadratic. This is a 2nd order interpolation which is better than the cosine (1st order) = better quality. But it's only of use for media channels, not the dynamics velocity.
- POP::Cacher: Constraints where not evaluated. fixed
- POP::Advection: Changed "kill particles outside domain" default value
- POP::Advection: Fixed surface clamping (collision margin value)
- POP::Converter: Did not correctly notify involved particle groups if they changed, so their internal structures were not updated correctly (which could result in wrong information for other nodes using these particle groups). fixed
- POP::Surface Properties: constraints were not evaluated
- POP::Surface Properties: Curvature and normal are now completely calculated from particles alone which is based on more recent research than the previously used algorithm.
- POP::Surface Properties: Now correctly is triggered an update call
- POP::Surface Properties: The dynamics field is completely gone now as its not required anymore.
- POP::Surface Properties: Fixed an anisotropy sampling bug.
- POP::Surface Properties: fluid dynamics node is now optional and not required anymore
- POP::Volume Properties: Fixed missing trigger when particles changed.
- POP::VolumeProperties: Kernel changes had no effect. It used cubic kernel all the time.fixed
- POP::Converter: Fixed bug when the same particle group was used as source and target
- POP::Surface Tension: fluid dynamics node is now optional and not required anymore
- POP::Surface Tension: Works now with all Effex native particle types
- POP::Weak Spring: Fixed an algorithmic issue. This results in different behavior! Particles are better distributed and vortices are better preserved.
- POP::Weak Spring: Works now with any Effex particle type
- POP::ParticleData To Grid: is now an operator
- POP::ParticleData To Grid: does now support vector channels
- POP::Particle Advection: displaced particles when using Dynamics boundary collision detection. fixed.
- VOP::Smoother: activation did not work. Also added node tab.ConstraintsNew
- CS::Particle Count: "Interpolate between min/max" option added. If unchecked it will only return either 1.0 (if particle count is between min/max) or 0.0. Checked it will return an interpolated value between 0.0 and 1.0.
- CS::Particle Count: "Bounded Max" option added. If unchecked it will return 0.0 if found particle count is higher than Max. Particles. Checked it will always return 1.0.
- CS::Gradient: Alignment node slot added (only cylindric mode makes sense here).
- CS::Grid Value: can now also process vector channels and velocity channels (dynamics). It takes the length of the vector values in that case.Changes/Fixes
- CS & PIOP nodes: ran into an infinite loop if one of them was deactivated (green checkmark) in the OM. fixed
- CS::Gradient: Axis (x/y/z) was only globally evaluated no matter if a reference object was used or the constraint itself. Fixed
- PCS::Property: vector properties are now processed by their length.ChannelsNew
- Vector Channels: Drawing options are now working. Added an option to draw the data as color (for color channels).
- Channels: Added Quicktab
- Channels: Added new drawing display options
- Channels: Added some options for volumetric display
- Channels: Added "Contribute to bounds" checkbox. This is useful for grids that shall be resized according to the simulation but that do themselves not contribute to adaptive bounds (like filling a variable density grid..)Changes/Fixes
- Scalar Channels: Now work also without fluid dynamics available.
- Channels: Improved the rendering of volumetric display to be closer to how the gas renderer rendersOthersNew
- Alignment: Added candidate button