We are happy to announce the immediate availability of PlantFactory 2023. This is one of the biggest PlantFactory releases we have ever had, filled to the brim with new modeling features, workflow and QoL improvements and export and integration enhancements.
Head to the Software Center to get the update right now.
As announced in our recent blog post, this release has even more in store for Creator users: Creator now includes the same feature set as Professional. This means you can now export your PlantFactory plants as meshes for other applications than VUE and you get access to the PlantFactory integration plugins.
Please note that with this feature parity between the versions now being in place, anything created with the Creator version is limited to non-commercial use only.
Main features in Release 2023:
- Cutout mesh editor for atlas maps
- Vertex colors and Ambient Occlusion
- Nested repeats
- Meshing and subdivision surface improvements
- Instance support for lightweight plant creation
- Complete node and graph overhaul
- Unreal Engine 5 plugin
- Consolidation of presets and toolbars
This release adds additional plugin compatibility for the following host application versions and render engines (bold items are new):
- 3D Studio Max 2016 to 2023
- Maya 2015 to 2023
- Cinema4D R20 to 2023
- Redshift material conversion (starting from 3.0.46) in Maya 2020 and above, Cinema 4D R23 and above and 3D Studio Max 2022 and above
- Unreal Engine 5 to 5.1
- V-Ray 6 and below in Maya, 3D Studio Max and Cinema 4D
We also updated the trial version. Visit the trial page to get your evaluation copy.
Scene by Aron Kamolz
New cutout leaf node
Create custom meshes with the new cutout leaf node by placing points on an underlying texture. This is a must-have feature for working with atlas maps and for creating vegetation for games.
The algorithm takes care of generating the polygon subdivision within the shape you define. You can influence the generated topology flow by placing additional vertices within the shape boundary. The mesh can be fully triangulated or switched to a version that favors the creation of quads over triangles. You can change the size of the generated polygons non-destructively along X and Y and you can subdivide the mesh as needed to generate higher resolution geometry for closeups. A rib edge can be optionally included in the polygon flow to ensure that the resulting mesh can be folded and deformed well enough.
The cutout node also includes a lateral profile editor for adding three-dimensional depth to the cutout mesh, an axis editor for deformation as well as gravitropism, twisting and midrib settings and support for ambient motion breeze in wind animations. You can also create alternate cutouts and cutouts in crossed-plane mode. LODs are supported too.
To help you getting started quickly, the cutout node ships with 42 preset cutout shapes.
Post-processing options: Vertex colors with Ambient Occlusion
PlantFactory now supports vertex colors as a post-processing effect once the final mesh has been computed. With vertex colors, you can store different pieces of information directly in the mesh upon export. Each vertex gets a color value assigned which can be interpreted and used in the target application in different contexts. For example, you can store a weighing factor between 0 and 1 for Ambient Occlusion strength (which will be mapped to a greyscale value between 0 and 255 RGB) to bake AO information without requiring a baked texture.
This release supports the following features as vertex color values:
- Material blending weight for recreating material blends between primitives, e.g. between trunk and branches (non-SDS blending only for now)
- Leaf color shift (hue, saturation & lightness / value) from leaf nodes for recreating leaf color variations without additional textures
- Material color for recreating procedural materials (e.g. materials created with noises and fractals in the material graph) without having to bake them into textures
- Ambient Occlusion for pre-computing AO on the final plant mesh. By multiplying the baked AO greyscale values with your texture maps in the target application, the plant lighting can be enhanced tremendously, especially in game engines.
You can create up to 8 vertex color sets per project and mix and match as many of these pieces of information within one set as you have channels available. Select in which channel you want to store which information as a vertex color (R, G, B, A or simply RGB in total) and PlantFactory will do the rest. Vertex colors are previewable in the viewport on a per-set and per-channel basis and they are computed for each LOD in the plant.
Ambient Occlusion in particular is editable in brightness, falloff, min and max strengths and in ground influence for artificial darkening of the base of a plant.
The post-processing options are also available within the PlantFactory integration plugins.
Nested repeats with loop nodes
Building loops with iteration nodes has always been one of the most powerful methods for modelling trees. In this release, the capabilities have been extended tremendously through nested loops. You can now setup repeats within repeats. For example, create the branching structure of side offsprings first with a loop, then take this loop and place it as a bifurcation split on itself.
As part of this addition, new capabilites and nodes were added:
- The former "End" node was renamed to "Last"
- A new "Repeater End" node was added to move from an inner loop to an outer loop
- The "Ancestor parameters" node from the last release now allows retrieving properties from specific iterations within a loop, using a combination of absolute and relative referencing.
This is an advanced feature that requires mastering a learning curve. To help you getting started, we recorded a multi-part tutorial series, covering everything you need to know about loops, nested loops and iteration nodes in general.
Meshing and subdivision surface algorithm enhancements
Meshing has received multiple improvements, most of them related to subdivision surface blending. All meshing parameters in segment nodes have been moved to a separate meshing tab.
Subdivision surface blending is now available in all meshing modes (previously, it only worked with quad meshing). The blending subdivisions can be increased separately without affecting the resolution of the rest of the mesh. This can eliminate cases where the blending would fail previously because of not having enough polygons to generate the blending. Also, if blending on a node fails, subsequent nodes can still exhibit proper blending without inheriting the "failed" blending from their parents.
The axial subdivision filter is now available in all meshing modes (it was only available with triangle meshing before). Using this filter, you can redistribute the polygon density along the axis (length) of a node. Please be aware that subdivision surface blending requires a minimum amount of axial subdivisions in the blending area and can override the polygon distribution from the filter curve when necessary. Additionally, the filter was also added to the flower node, allowing for more precise control and polygon reduction.
Finally, the polygon distribution in manual meshing mode can now be made dependent on a curve threshold. This saves massive amounts of polygons by only subdividing the mesh in curved areas.
Instantiation node for instance export
The new instantiation node replaces individual geometry primitives with lightweight instances upon export. PlantFactory will generate a point cloud onto which copies of the geometry will be placed as instances.
As part of the point cloud, the scale, position and rotation of the instances will be randomized. This creates much smaller file sizes and lightweight files for better performance, especially in real-time engines.
Instance export is available for FBX and USD.
A completely redesigned graph workflow experience
Continuing the node and graph editing improvements from the last release, we finalized the graph and node editing overhaul. Now you can work faster and more efficiently in the graph than ever before, which will speed up your daily workflow tremendously.
- You can now search for nodes using the [TAB] key on the keyboard, by right clicking in the graph to open a context menu and typing to open the search or by clicking on any node input or output to open a list of compatible nodes for that specific port and typing to search.
- Highlight a connection, open the search with [TAB] and insert the node into the connection immediately.
- The node selector has been redesigned into a two-column layout and hosts the same search functionality as the [TAB] key.
- Each node has a search field for searching through all parameters in a node across all tabs. This is especially useful for large nodes such as the segment node.
- In the top right corner of the graph, there is a search field for searching through the nodes used in the graph. The graph will frame the selected search result immediately. The same functionality is also available in the newly added "Nodes used in graph" panel.
- Also in the top right corner, you can highlight nodes of a specific type to make them stand out from the rest of the graph. The highlighting is combined with the search field for used nodes in the graph.
Streamlined connection handling
- New nodes can be connected rapidly to existing nodes by directly clicking on the inputs and outputs of a node and selecting / searching for the node to be connected or by dragging out a connection line from a port, releasing it in an empty area and selecting / searching for the node from there. When you hold [CTRL] / [CMD] while dragging out a connection line, you will be asked to select the input of the new node that you want to connect the line to, including any secondary inputs.
- You no longer need to explicitly connect a connection to a specific input or output. Just release the connection line anywhere on a node to open a context menu, letting you select the desired port.
- Hold down [SHIFT] and click on a connection line to move it from one port or node to another. This also works with multiple connection lines. Release the lines in an empty area to create a new node to which to connect the lines.
- Double-click the beginning or end of a connection to quickly delete it.
- Non-matching data types are now automatically converted when dragging a connection from a node with a different data output to a node which expects a different type of data. This behavior can be disabled at will in the Graph menu.
- Drag and drop image files directly into the graph to create a Projected Texture Map node. Dragging image files on the inputs of a node or the output of a material channel (e.g. the normal output) will automatically connect the texture to that input / output and insert data conversion nodes if required. Dragging and dropping image files works in every image widget across the application, not just in the graph.
- New options in the Graph menu can fade all disconnected nodes or remove all disconnected nodes.
- Drag a node over a connection line to auto-snap it into the connection. Release the mouse to confirm or continue dragging to unsnap the node. This behavior can be disabled at will in the Graph menu. By holding down [CTRL] while dragging a node, you can temporarily invert the behavior and e.g. enable snapping once when it is otherwise disabled and vice-versa.
Improved node handling and graph readability
- Hamburger button to fold and unfold nodes quickly. Clicking cycles through the following states: Completely folded, show only connected inputs & outputs, show all available secondary input / output groups, unfold all secondary input / output groups. You can also set the unfolding state globally for all nodes in the graph in the Graph menu.
- Any node (not just geometry nodes) can now be disabled which will bypass the node as if it wasn't there.
- In Material graphs, nodes can now be soloed to preview their immediate effect on the material. You can select which material channel to use for the solo preview.
- The preview shape (sphere, cube etc.) and preview scale can now be set per node through a right click on the node.
- If a node is too small to display the node name inside of the node or if a node is completely minimized, the node name will appear above the node for better node identification.
- Math operations can now be performed in all numerical fields in the application, be it a node or an editor. This includes basic arithmetic operations such as add, subtract, multiply and divide (using the operators + - * /) and formulas such as sin, con, tan etc.
Unreal Engine 5 plugin
The PlantFactory integration plugin is now available for both Unreal Engine 4 and Unreal Engine 5. Load your procedural plants in *.tpf format into Unreal, customize them within the plugin and then convert them with native Unreal materials to static or animated actors in *.FBX format.
The new post processing options allow you to assign vertex colors easily within the plugin and preview them interactively in the viewport before converting. Nanite options such as "Preserve area" and "Enable Nanite" can be activated automatically by the plugin in Unreal Engine 5.1.
Heads up: Consolidation of presets and toolbars
As part of ongoing development and improvement of the UI, the following features have been deprecated:
- The simple workspace is no longer available and the advanced workspace is now the default one.
- As a consequence of the removal of the basic workspace, the "Getting started" panel and the "Info panel" were removed as well.
- The preset toolbar and preset nodes have been removed (e.g. branches, trunk, twig, stem, palm nodes). These presets were mere copies of the "Advanced Segment" node and did not contribute to the user experience properly because of their strange look and the unnecessary duplication of an existing node. We plan to bring back a preset system for selecting presets within a node itself in a future release, but without duplicating existing nodes in the node list. For now, we recommend using the component system for creating, saving and loading node presets.
Old scenes using preset nodes can still be loaded and edited without restrictions, but the deprecated nodes can no longer be used in new scenes.
We understand that removing features is a difficult decision, but we firmly believe these changes are for the better and will help both new and experienced users in the long run by eliminating potential sources of confusion. They will also allow us to come up with a new and improved preset system.
Further improvements & features
- Average performance gain for plant graph computation of 20%.
- Support for Redshift material conversion in 3DS Max 2022 and above with the PlantFactory integration plugin.
- New menu for viewport options above the 3D view, replacing the preview menu from previous versions and any contextual menus with viewport settings.
- New placement options "Pair offset" and "Pair offset mode" on the child tab for offsetting children growing in pairs on opposite sides.
- New "Margin before cut" option on the child tab for adding a "safety zone" on pruned branches. When pruning a parent branch with the "Cut probability" and "Remaining length" settings, any potential child branches that would grow within the defined safety zone will be removed. This avoids detached and floating branches.
- "Spread offset" for blades allows you to add randomness to the blade placement around a segment.
- "LOD inheritance" on the transform tab of nodes can now be enabled or disabled for children. If disabled, any child growing from the parent will use its own LOD rules as configured in the nodes, instead of simply following the same LOD rules as the parent. For example, unchecking this box enables you to deactivate a parent on a specific LOD, but still keep the children visible. If checked, the children would also disappear alongside the parent.
- Improved planar twist bias with new settings: "Length agnostic" makes the bias strength identical everywhere, no matter if a segment is long or short, and "Symmetry factor" is used to create as little geometry distortion when twisting the segment axis as possible. Additionally, "Target angle" defines the angle (with respect to the horizon line) that the twist tries to achieve at the end of the twisting deformation.
- Improved Filter Editor with correct extrapolation of the curve outside of the filter's boundaries. There's also a new option (not available in all filter curves, but context-sensitively where it makes sense) for clipping the output of the filter to a defined range.
- Proper sRGB color space handling for colored texture maps; in previous versions, the sRGB color space was only estimated by setting a gamma value of 2.2 for texture maps that represent colors. Now, color textures are truely converted to sRGB color space. Upon loading scenes created with previous versions, the application will ask you if you want to convert all color textures with a gamma of 2.2 into sRGB or not.
- "Apply additional bump" on the displacement tab in the Material Editor applies the displacement function or texture used as an additional bump layer to the material. This is independent from the actual bump and normal channels in the material and can be activated as a third option.
- Bump mapping can be inverted on the backside of a face (e.g. on leaves), just like normal mapping. A new checkbox on the bump tab of the Material Editor enables or disables this behavior.
- Uniform subdivisions for material displacement in the Material Editor are now supported.
- No more hidden elements in the UI that would only appear when you hover over them (e.g. the variance fields or the controls next to the material previews in nodes, such as hooking points). Now, all fields are displayed immediately, making the workflow more user friendly.
- Baked procedural textures are now computed with increased baking precision and with optional texture anti-aliasing for smoother color transitions.
- Two-sided materials can now be converted with the PlantFactory plugin for Cinema 4D standard / physical renderers. Previously, the backside conversion was not supported.
- Support for backlight / translucency conversion with Arnold in all applications.
- New randomness dependency "Once per Ancestor": this setting, available in the context menu through left clicking on the name of a node parameter, allows picking a new random value based on different criteria: Once per ancestor, once per output, once per connection line, once per child, once per child slot. The selected ancestor can be absolute or relative and it can also reference iterations in a loop.
For a complete list of changes, check out the full release notes.
Enjoy the update and happy modeling from all of us here at e-on!