Online Updater: Changed a tiny piece of code to maybe get rid of the "update message on startup" issue reported.
Effex Preferences: added. Currently there is only one setting to decide if online updates are checked for on c4d start up.
Changelog 2.70.72 - 2.70.77
Implicit Mesher: Fixed another crash when mesh advection was used.
Dynamics: variable density crashed
Dynamics: Fixed a boundary crash
Dynamics: Fixed a crash that could happen with zero grid bounds
Dynamics: Fixed code that may have lead to an arbitrary crash
PIOP::Spawn: Some slight threading changes avoiding a potential crash scenario on some machines
GOP::Advection: Fixed a crash with zero grid bounds
Framework: Some tiny fixes here and there
Help Designer: Now writes menu index for both platforms instead of just the one in use
Developer SDK: New global space conversion functions added specifically for channels
Developer SDK: Cell iterators updated. Now contain member functions to get the cell's coordinates
Developer SDK: Added two new examples: Voxel Generator, Sample Channel MoGraph effector
Changelog 2.70.70 - 2.70.72
Implicit Mesher: Fixed a crash when mesh advection was used.
MOP::Cacher: Fixed a crash when a mesher cache was loaded.
Dynamics: Fixed a viscosity bug.
Changelog 2.70.68 - 2.70.69
Framework: On OSX a global issue lead to some crashes. Fixed.
Changelog 2.70.64 - 2.70.68
Dynamics: Gauss-Seidel solver code optimized. Evaluates way faster now.
Dynamics: Gauss-Seidel: made some thread safety changes fixing the crash on some systems
GOP::Cacher: Could crash on OSX when the set file path was not existing.
Framework: Some minor internal safety changes.
Changelog 2.70.63 - 2.70.64
Fluid Dynamics: Fixed an initialisation error and a possible multiprocessor issue with the Gauss-Seidel solver.
Changelog 2.70.60 - 2.70.63
Foam/Spray & Bubbles: Fixed a crash.
Foam/Spray & Bubbles: Mesher without a surface reconstructor input didn't work. fixed.
POP::Cacher: particle formats that used upper case particle attributes couldn't be read by Effex. Fixed.
MOP::Cacher: Didn't work correctly and could crash. fixed.
Implicit Mesher: Improved the update chain.
Particle Geometry: Crash fixed.
Particle Geometry: Random seed changed during simulation. Fixed.
Online Services: Online updates will now be provided again from this version on.
Changelog 2.60.60 - 2.70.60
REQUIRES CINEMA 4D R16 (OR HIGHER)
Framework: Effex CORE decoupled from Cinema 4D (removing as much dependencies to C4D as possible). "Effex for C4D" is the C4D plugin extending the core specifically for C4D. Any future C4D API changes therefore only affect the plugin allowing way faster compatibility support and minimizes the requirements of adapting to such changes. Furthermore, it allows me to optimize things that I had no access to before (as still a lot of data structures came from the C4D API in previous versions)
Framework: several tiny memory leaks fixed.
Framework: A tiny bit of memory reduction and threading optimizations for all nodes
Framework: Now fully supports the "Show Help" command (RMB menu) for settings in the Attribute manager. Instead of the C4D Help it will open the Effex Help.
Framework: I have added a lot of new NodeGroup Presets that are very useful. They will especially help beginners/noobs to start working with Effex without low-level knowledge per-se.
Framework: I updated the Dynamics preset scenes, Content Browser library and High-Level Node library.
Effex Scene: Now includes temperature channels in Cache Wizard node finding.
Cachers: Team Render Support added for rendering cached simulations. You need to call "Save Project with all assets" and render from that scene then.
Dynamics: The one-frame freeze bug is fixed.
Dynamics: Viscosity triggering unintented movement fixed
Dynamics: Refined liquid body (levelset surface) handling. Allows now correctly still standing water in curved boundaries. Also results in better surface splashing.
Dynamics: Fixed a multiprocessor issue that could trigger a crash (FLIP).
Dynamics: Free slip setting does now also work on the domain boundary (before it only worked on inner obstacle surfaces)
Particles: Fixed an attribute initialisation issue.
Properties: Added PP::Old Position [FRAME]. From now on this one is required for particle cache retiming. So it needs to be included when caching particles if you need retiming support.
Particle Sampler: Does now by default return the right-most color in the gradient (or black in blackbody mode)
Particle Sampler: Now supports deformed particle positions
POP::Property: Fixed how constraints affect the final algorithm. Constraint result is now multiplied with the source value BEFORE the math operation takes place with the target value (before the constraints affected the result of the math operation).
Node Groups: Nodes with a hierarchy stop tag will now also exclude children from being processed. If you switch on "Stop Deformers" they WILL be processed but not hidden!
Constraints: Negative intensity is now possible.
Constraints: Added blend mode support for constraint lists. Each constraint in the list will be mixed with the intermediate result of all previous constraints. It happens automatically for all nodes using constraints. The default mode is "Multiply" which is how it worked before. So old scenes will be fully compatible.
CS::Grid Value: Fixed a bug with its result. It only returned 0 or 1 but not interpolated values.
CS::Distance To Particle: Fixed an initialisation error.
CS::Distance To Object: Fixed a crash.
Pipeline Viewer: Fixed a crash that arised due to threading.
Pipeline Viewer: Now correctly places dragged nodes in front/behind multi-stage nodes.
Gas Renderer: Added Quadratic interpolation.
Gas Renderer: Fixed Fire rendering bug. Both Temperature & Fire channel remapping was corrupt.
Gas Renderer: Max step size for rendering and occlusion can now be smaller than the minimum step.
Setttings::Particle Emission: Jitter value is now used for normal speed variation (instead of position jittering which is now a setting in the emitter).
Emitter::Particles on Mesh: Fixed crash when sampling distance was set to 0.0
Emitter::Particles on Mesh: Fixed multiprocessor issue.
Emitter::Particles In Volume: Added jitter setting. This one is now used for jittering particle positions instead of the one in the emission settings. This also allows the emitter to work without emission settings assigned. Old scenes may need to adapt the jitter value.
Emitter::Particles In Volume: Added settings for initial normal speed (only used if emission settings and alignment node are not linked)
Settings::Channel/Value: Added "Value as multiplier". Only if a particle property is linked, the value field can act as a multiplier for the property value (if activated).
POP::Cacher: I changed the particle cache format. It does not cache temporary thin sheet particle data anymore (the thin sheet particles themselves are still cached of course).
POP::Thin Sheet: Didn't work with only 1 thread. Fixed.
POP::Weak Spring: Fixed possible random crash.
All Grid Channels: Display "On" checkbox didn't work. The channel was always drawn. Old scenes may require you to activate it if it was turned off before.
API: API now reflects all the changes that were made to the core. Old Effex plugins must be recompiled and adapted.
API: Added FXAPI::HandleInexcludeBits(InExcludeData*,std::vector&<>). Private.
Changelog 2.60.55 - 2.60.60
POP::Converter: Added support to output XParticles (2.5) and TP. Also binding (fill checkbox) is possible which allows for example C4DtoA to render effex particles. Liquid meshes work natively with C4DtoA.
node Interfaces: Some minor layout adjustments.
Changelog 2.60.50 - 2.60.55
Gaseous Dynamics: Freezed C4D in R16 upon creation. Fixd
POP::Converter: Added some candidate buttons and rearranged the interface slightly.
Node Group/High-Level Nodes: nodes added via Candidate button were still not shown in the om. fixed
Position Based Particles HLnode: On some machines the particle geometry node crashed. fixed
Dynamics: Added duration node. Will not run the pressure calculations if inactive. All other steps are performed (so particle advections are then actually driven by the force vectors only).
Gaseous Dynamics: Can now calculate the compatibility condition. This is actually only required if you induce pressure yourself. This is an advanced setting and should be left untouched if not otherwise suggested.
Particle Tracer: Crashed when all particles died.
Framework: A few minor stability fixes.
Changelog 2.60.42 - 2.60.50
Obstacle Tag: Candidate button for initial alignment added.
POP::Converter: Now correctly supports the rate value of particle emission settings.
POP::Converter: Fixed the properties list behavior. If no property is linked, all properties of the source particles are copied. Otherwise only the specified.
POP::Converter: Velocity multiplier did not work. Fixed
POP::Geometry: When all particles died the particles existing at that point were still generating geometry data. Fixed
POP::Geometry: With "only during rendering" activated caches were not correctly rebuilt when doing editor renderings. Fixed
Framework: Fixed a few bugs.
Link Fields: Almost all link fields do now support node group dropping. Will only work of course if the node group contains at least one compatible node. If there are multiple compatible nodes inside the node group you get another popup that lets you select an appropriate subnode. If the node group only contains one compatible node that one will be chosen directly.
Changelog 2.60.40 - 2.60.42
Emitter::Particle On Mesh: The emited particles can now be converted to brush samples. You need to attach a 'normal' particle property for it to work correctly.
Constraints: Constraints did not get a stop tag upon creation from a node group candidate button.
Changelog 2.60.35 - 2.60.40
Gas Renderer: Artistic coloring option for self-shadows added.
Grid & Particle Sampler shaders: Candidate buttons added.
Changelog 2.60.30 - 2.60.35
Node Group: Fixed a crash during rendering
Node Group: nodes that are generated via candidate buttons now automatically get a stop tag attached. So they are not processed by the node group by default. This prevents messing up the existing node style.
Fluid Dynamics: Grid forces were not evaluated when loading a velocity cache. Fixed
Fluid Dynamics: deactivating 'Allocate Advection memory' triggered a crash when an advection node was still operating on the dynamics. Fixed
POP::PointData to Grid: duration didn't work. Fixed
Changelog 2.57.10 - 2.60.30
- Particle Brush: added. Allows to draw brush data samples onto a mesh node and edit them. It does NOT draw particles directly but rather samples. The advantage is that these samples will adapt along with any deformations applied to the original mesh. This even allows particle based texturing!
- POP::Deform: added. This allows to apply deformers to particles in a virtual and non-destructive way. The deformed position will not affect the actual particle position, so the simulation is not changed.
- POP::Follow Spline: added. This allows to procedurally let particles follow a spline. The positions of the particles will directly be modified and will exactly follow a given spline path.
- POP::Boids: added. This generates flocking forces and offers a simple Predator/Prey system. Predators will try to chase preys and preys will try to flee from predators. Predators can eat prey (so kill them) as well.
- Spline Growth: added. This is a pure C4D deformer that lets you alter the length of any spline and therefore grow it. A useful addition for motion graphics.
- Particle Geometry: added. This lets you place geometry on particles. You can use the GeoVariance object for multiple inputs.
- GeoVariance: added. This lets you place child objects underneath it and define a variation behavior. Other nodes (currently it's the Particle Geometry node only) will be able to have multiple input that way.
- CS::Falloff: added. This one offers usual falloff shapes like sphere, cylinder, torus etc.
- DF::Follow Spline: added. This is basically the same as the POP::Follow Spline, however this force calculates all the data on the fly (and therefore is slower) and is dynamic in nature. Particles will loosely follow a given spline path.
- PF::Cohesion: added. This is the individual force from the boids flocking operator for individual use.
- PF::Separation: added. This is the individual force from the boids flocking operator for individual use.
- PF::Alignment: added. This is the individual force from the boids flocking operator for individual use.
- Live Inspector: added. This lets you inspect the result of constraints and forces anywhere in space. It's like an interactive 3d live preview of the result. Very useful.
- Emitter::Particle On Mesh: Now supports emission from mesh points and brush samples. You can exactly define which properties from the samples shall be taken over.
- Emitter::Cell Iterator: Constraints were not correctly evaluated. Fix
- POP::Converter: Crashed when it deleted thin sheet particles and you got back to beginning of the timeline. Fixed
- Mesh: Crashed when it was deleted and was used by a volume. Fixed
- CS::Gradient: One-sided option didn't work. fixed.
- CS::Gradient: added "Use Square Distance". This was the usual behavior. It is faster than unchecked but the gradient will not be linearly distributed.
- POP::Property: Source Property port does now take an alignment node (which is only used if the target porperty port is a vector property).
- Particle Group: particle radius can now be shown additionally to a property (only works if particle has a radius property attached)
- Particle Group: particle display size option added.
- Fluid Dynamics: added Handles for the container.
- Particle Sampler shader: does now also support Effex meshes (and mesh properties), brush data, TP, XParticles 2.5, C4D particles, c4d meshes and splines
- Menu: Changed the menu slightly. Cinema 4D specific objects are now placed in an according submenu.
- [Effex]MultiMesh Effector: Renamed to [MoGraph Effector] Sync Clones to Rigid-Bodies
- [Effex]Fluid Dynamics: Renamed to [Particle Force] Fluid Velocity
- Node Styler: Hidden Elements are now greyed out, this gives a better view on the "visible" elements
- Node Styler: Double-Click while holding down CTRL will now convert a group into a tab
- Node Group: Added "Hide Quicktab" option. This is very useful when finishing up a node style and storing it. The quicktab is of lower interest once that's done so this gains some valuable interface space. A preset is saved by default with this setting activated
- Node Group: If there is a stop tag with the setting "Stop Generators" unchecked, the node WILL be included in the node styling but it will not be hidden in the OM.
- Online Services: Added license page to the dialog. Here you can view and handle your license. No need to go into the user area web interface if you want to change your data, request a new serial or change your password.
- User Area: Optimized the layout to be more straight-forward and fixed a few display issues. Also better viewable in the Online Services dialog.
- Content-Browser Library: Updated. It now also contains all scenes in Indie compatible file format. Will be installed automatically via Online Updater.
- High-Level Node library: Updated the high-level node library. There is now an Indie version of it (for Indie users). Will be installed automatically via Online Updater.
- Low-Level Presets: Updated the low-level presets for Indie user compatibility. Will be installed automatically via Online Updater.
Changelog 2.57.10 - 2.57.12
- Particle Tracer: added. This one creates splines for the path of particles.
- Navié Menu: Unique Properties subgroups are now exploded into the parent Properties subgroup for faster access.
- Interfaces: A few minor fixes
- Node Styler: stopped working. Fixed
- Online Updater: A few minor fixes
Changelog 2.57.05 - 2.57.10
- Navié Menu: Due to user input we have rearranged the menu. The low-level menu is now exploded into the main menu. The high-level menu is now called "Presets: High-Level" and the former "Low-Level::Dynamics::Presets: Fluid" is now called "Presets: Fluids" and is in the main menu as well.
- Particle Groups/Channels/Gas Dynamics: Candidate buttons do now also generate advection nodes for each of these on creation.
- Particle Group: Quicktab buttons did generate nodes even when none of the subgroups has been chosen. Fixed
- Effex Scene: When the timing slider was set to 0.0, the cachers did not generate correct cache files anymore which could result in a crash during loading. Fixed
- Fluid Dynamics: Unchecking Allocate Advection memory triggered a crash during cache loading. Fixed
- Channels: Fixed the drawing issue when smoke and fire were drawn at the same time
Changelog 2.57.02 - 2.57.05
- POP::Volume Properties: Fixed a calculation problemResources have been updated as well.
- POP::Particle Property: This one allows to directly edit a particle property (procedurally via constraints as well). You can also copy a property value to another one for example.
- PCS::Attribute: 'Born' attribute added. Tells you if the particle has been born in this frame. Requires the particles to have an age property.
Changelog 2.56.60 - 2.57.02
- Installer Update: does now support installation of Content Browser and High-Level Node libraries. Required from this version on. Please download from your user area account.Resources have been updated as well.
- Pipeline Viewer: Does not open stage folders on each change anymore but keeps the set folder states if the setup does not change
- Node Group: Attributes of several nodes are combined into one single interface and can be used to store setups of any complexity creating High-Level nodes on demand.
- Node Styler: This dialog shows you all tabs, groups and settings in a node group and allows you to remove, disable or rename any of these in the node group for custom styling.
- Dynamics: Gauss-Seidel solver changes for more stability.
- Interfaces: Dynamics and Particle Group changes for more node interface consistency and faster workflow.
- I have rearranged the Navié menu. There is now a Low-Level (for individual nodes) and a High-Level (for Node Group presets) submenu.
- Effex Scene: Globals Tab. The settings in there are used to precalculate global data for particle density calculations (as done by POP::Volume Properties). In previous versions this data has been calculated by each POP::Volume Properties node (that's why it was evaluated twice in the scene as could be seen in the Pipeline Viewer. Now the POP is only evaluated once, so less overhead = faster performance. You may need to adapt the pipeline stage.).
The radius should be set to the max. radius you use in all of your POP::Volume Properties.
Changelog 2.56.00 - 2.56.60
- Tag::Obstacle: Animating Mass to 0.0 and back > 0.0 didn't work when a volume was used (only directly on the mesh). Fixed
- Tag::Obstacle: Activate on Collision does now also work when particles collide with the rigid body. The POP::Advection used on the particles must have the collision detection mode set to "Obstacle Volumes" for this!
GF::Swirling/Particle Turbulence: For both nodes the "spatial" option does now generate correct values. Results in different behavior if spatial was used.
- CS::Flow Rotation: This samples flow rotation features. Currently vorticity and helicity.
- CS::Fractions: This returns the volume obstacle coverage of a voxel.
Samples 0.0 if a voxel is fully covered by an obstacle volume and 1.0 if not covered at all (consequently 0.5 would mean the obstacle covers half the volume)
- CS::Volume: Invert option didn't work. Fixed
Resources have been updated as well.
Changelog 2.55.60 - 2.56.00
- All Constraints: The intensity was not correctly applied when several constraints were used in a constraints list. It also affected previous constraint results. Fixed. This may result in different behavior!
- All Constraints: Range Mapping options added to control remapping of the constraint value.
- POP::PointData To Grid: The particle weighting was wrong when constraints were used resulting in incorrect results. fixed
- POP::PointData To Grid: Does now correctly take constraints and mass/size influences into account for weighting.
Changelog 2.50.40 - 2.55.60
- Pipeline Viewer: Liquid Dynamics node does not show its name anymore but rather what internal stuff it evaluates.
- Online Updater: The automatic update check on start-up of C4D is now async. Means it should not interrupt the launch of C4D anymore but run in the background instead.
- Fix Volumes Command: Does now take into account MultiMesh Effector (previously MultiVolume Effector) and fixes the multivolume link in there
- Mesh/MultiMesh: Has a Quicktab now
- Mesh/MultiMesh: Has a max value for mesh property display
- Mesh: Added "Calculate point velocities". This will calculate point velocities and store them as a vertex velocity property. This may come in as handy information for MotionBlur later on.
- MultiMesh: Crash when MultiMesh object was deleted. Fixed
- POP::ParticleData To Grid: Renamed again (sorry) to PointData To Grid
- POP::PointData To Grid: Does now support Mesh and MultiMesh (its vertices to be exact). Together with the new "Calculate point velocities" of meshes you can also support deformation velocities in the liquid solver and PLA driven meshes. The P2G operator with direct velocity emission should be executed in the 'Forces Emission' stage!
- CS::Strain Crash when it had no liquid dynamics linked and was used in another node. Fixed
- Emitter::Cell Iterator: Crash happened if a scalar channel was used. Fixed
- Liquid Dynamics: When using dynamic rigid bodies (mass > 0) and there were other static rigid bodies the dynamics could crash when Gauss-Seidel solver was set (internal switch to MPCG did not work...triggering the crash). Fixed.
- GOP::Sand: The parts that can be executed multithreaded (which are 60% of the code) are now doing so. Also I reduced the memory usage tremendously (50% less memory used)
- Blackbody elements: Added 2 new options for all blackbody radiation color gradients (i.e. Gas Renderer, Particle Sampler & Grid Sampler).
- Grid Channels: The "Create Advection" Quicktab button does now automatically set the pipeline stage of the generated advection node to "Channel Advection"
- Grid Channels: Generates a GOP::Advection node along with it by default now.
- Particle Group: Generates an POP::Advection node for liquid particles along with it by default now. Hold down SHIFT key to get a popup for choosing the particle type to create the advection for.
- Mesh: Calculate Point Velocities.
- POP::PointData To Grid: There was a resource bug in there. The duration slot had the same resource ID as the falloff drop down. Fixed. The falloff drop down may default to 'None' if you reopen the scene and needs to be adapted if that's not the previously set mode.
Changelog 2.50.12 - 2.55.40
- Introducing the Effex Indie version. This is a new limited commercial license model for individuals in line with Indie license types of other apps allowing a lower introduction price.
If you want to see the license conditions/restrictions and more details please check out: http://www.dpit2.de/navie/index.php?con ... category=2
- Online Services: added.
In this dialog you find the new online updater and a browser window that offers direct access to the user area.
Please enter your user area login data into the 'Customer Login' menu -> 'Enter user area login data'.
This lets the online services identify you as a customer and opens up additional functionality such as the mentioned user area access.
- New icons for docs and help designer menu entries
- Added Mesh and MultiMesh nodes! This exposes the mesh that has previously been encoded in a Volume/MultiVolume to the user.
- Code: Select all
If you open scenes created with 2.50.15 or earlier you can use the "Fix Volumes" command in the Effex->Bodies menu.
This will correctly fix old Volumes/MultiVolumes setups with a single click and create the mesh objects and relink everything, so you are up to speed again.
Having the new mesh accessible poses several advantages:
1. The input C4D Mesh only needs to be converted once and no extra memory is used if the same mesh is linked in different volumes (before the mesh was copied internally). In that case it's faster.
2. Rigid Bodies now also work without volumes involved (so you can assign the obstacle tag directly to the mesh too).
3. Generally, Volumes are not necessary anymore if mesh-only operations are to be done. This can of course save time and memory because volumes are usually slower to generate.
4. Future algorithms can also directly work on the mesh in the framework
So, volumes & multivolumes do now need an Effex mesh/multimesh as input instead of the c4d meshes/mographcloners.
All Presets & Content Browser Libraries have been updated as well to reflect this change. However, most of the nodes that took Volumes still can take volumes AND meshes now.
- GOP::Sand: added. This is a grid-based algorithm to simulate dry sand. It can be added to any liquid simulation simply by linking the liquid dynamics node used. Currently it is evaluated single-threaded.
- POP::ParticleData To Grid: Does now support writing directly into the velocity channel. The important thing here is the pipeline stage. The operator with direct velocity emission should be executed in the 'Forces Emission' stage
- COPs: Added internal velocity field support.
- Container::Channel/Value: Now has a dropdown menu to choose what to read of a linked dynamics node. Velocity or Expansion field for now (before it always used the expansion field)
- Emitter::Cell Iterator: Added support for dynamics nodes so emitter can directly call COPs working on the velocity or divergence field encoded in the dynamics.
- CS::Strain: added. This will sample the strain rate of a liquid simulation velocity field and return according stresses of the flow. The strain is like a measuring of the deformation/shearing of the flow field.
- CS::Voxel Distance: renamed to CS::Distance To Object
- CS::Particle Distance: renamed to CS::Distance To Particle
- CS::Distance To Object: Does now support Effex Meshes and C4D Splines and samples distances to vertices/spline as well. Therefore other nodes can make mesh/spline dependancies.
- CS::Distance To Particle: Radius was erroneously displayed in c4d units although it was given in voxels. Changed the display (that way old scenes won't behave differently)
- DF::Field Curl: was broken. fixed.
- Shader::Particle Sampler: Fixed a crash when several instances were used in a material (e.g. in Color and Alpha channel)
Changelog 2.50.10 - 2.50.12
Rigid Body Dynamics
- Obstacle Tag: Mass can be keyframed to 0.0 and back to > 0.0 now.
- Fixed a simulation time issue in the first frame which made some objects not correctly update.
Changelog 2.50.08 - 2.50.10
- MultiVolume: Obstacle tag on a multivolume crashed. Fixed
- Particle Group: fixed an update issue in the initial frame
- Emitter::Particle In Volume: Changed default "Min. distance to existing samples" to 1.0
Changelog 2.50.05 - 2.50.08
Rigid Body Dynamics
- Did not work if an animated object was used
- Some fixes when executing constraints in delegate nodes
- Some minor stability fixes
Changelog 2.50.03 - 2.50.05
Emitter::Cell iterator: constraints did not work
Emitter::Particle In Volume: Little bug in the "minimum distance" to particle calculations
- Constraint::Noise: Slicing effect fixed
Particle Group: Fixed a missing reset at the beginning sometimes.
Changelog 2.50.02 - 2.50.03
- Channels: Turning off advection and having an advection node crashed. fixed
- Emitter::Cell Iterator: Candidate button for COPs didn't work properly. It was created but not added to the list.
Gas Renderer: Vector Color channel in the smoke::color tab did not work. fixed
Changelog 2.50.01 - 2.50.02
- Liquid Solver: Crash when using Gauss-Seidel for Two-Way Coupling fixed. It will now automatically switch to CG solver if a dynamic object is found in the scene
- Emitter::Cell Iterator: Added Candidate button for COPs.
- Emitter::Grid: Added Candidate button for Channel/Settings
- Emitter::Cell Iterator: fixed the channel candidate button.
- Container::Channel/Settings: Fixed candidate button. It did not show available channels
- COP::Math: 'Vector Value' added. If no channel is assigned this shows the vector value (assuming the node calling COP::Math operates on a vector channel) so you can emit into vector channels now.
- POP::Cacher: Fixed the candidate button for Particle Groups
- MOP::Cacher: Crashed. fixed
- COP::Math: Candidate button for the constraints didn't work. Fixed
Changelog 2.0 - 2.50.01
- 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!
- 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- Found a small but severe bug in the space calculations which could lead to random bugs & crashes (especially near boundaries). fixed
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
- 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.
- 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.
- 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. fixed
Rigid Body Dynamics
- 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.
- 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 forces
- 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.
- 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" fixed
- 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)
- 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 channels
- 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.
- Particle group: interface changes
- Particle Group: Fixed ballistic particle advection bug.
- Particle Group: Fixed non-working particle forces for ballistic particles.
- 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)
- GF::Swirling: Faster precomputations using less memory consumption
- 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 bodies
- 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.
- 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.
- 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.
- 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..)
- Scalar Channels: Now work also without fluid dynamics available.
- Channels: Improved the rendering of volumetric display to be closer to how the gas renderer renders
- Alignment: Added candidate button