Snow Generator v1.0
User Guide
By Maxime Argon
Create realistic to stylized snow meshes from scratch
Quick set-up
From the engine menu, open the 'Plugins' window.
Search for the 'Snow Generator' plugin.
The plugin will be installed only after the editor restarted.
🚨 Notes and disclaimers 🚨
This tool is in a Beta stage. Some bugs and errors can occur, feel free to report them.
The tool needs Unreal's Geometry Script and Editor Scripting Utilities plugins to work properly. Enabling the Snow Generator plugin should automatically install the necessary dependencies.
If it is not the case, manually install the plugin from the 'Plugins' window.
Feel free to edit the tool's blueprints and c++ classes to suit your needs. Keep in mind that advanced programming and Unreal knowledge are recommended.
Generation loading times can easily reach long minutes if parameters are not set with care. It is highly advised to read the whole documentation before diving into using the tool.
Unreal Marketplace product page's question tab is also a good place to ask questions.
Have fun with it :)
How to use ?
Once the plugin installed, you will be able to click on a new toolbar button.
Clicking that button will open the Snow Generator panel.
Don't hesitate to dock it on the side of the editor for easy access!
NOTE: Opening the Snow generator panel will create a temporary 'SnowGenerator' blueprint in your Outliner. You shouldn't have to play with it, simply leave it be.
If you choose to close the Snow Generator panel, the temporary blueprint will be destroyed, and re-instantiated when re-opening the panel.
Step-by-step tutorial
1. Generating the area cache
First step will be to define the area where we want snow to be added.
Add each mesh to the array 'Meshes To Add Snow To' ; or tick the 'Select By Tag' boolean and choose a tag to target.
Once done, you can proceed and click the Generate Cache button in the panel.
2. Generating the snow mesh
Click the Generate Mesh button to initiate the main process.
This step can take some time depending on the area cache size, your computer config, and Unreal Engine settings.
Once the process is over, you will see snow generated onto the selected target mesh(es).
3. Baking the generated mesh
The snow you are seeing so far is not saved anywhere in your project files. Reloading the scene or changing generation parameters will reset the process.
Clicking the Bake Mesh button will create a copy of the generated mesh in your files.
Keep in mind that it uses your currently opened content browser path to save the baked mesh.
Features
The plugin offers a variety of tools for you to use.
Let's quickly go through all of them...
Generate Cache
Creates the selected actors' generation area cache. Will be used to define where snow can be generated.
Generate Mesh
Starts the snow generation process. This step can take some time depending on your computer config.
Bake Mesh
Bakes the snow generation with the selected parameters into a mesh directly added to your project files.
Clear Generation
Removes and clear the currently generated snow in the scene.
Live Update
Toggles a real-time update of the snow generation. Refreshes the generation every time a parameter is changed. Use with caution as generation loading time can take a while.
Dialog On Actions
Toggles the activations of context menus updating you on the generation process, and/or possible warnings and errors. (Automatically disabled when 'Live Update' is set to true)
Save Preset
Opens a file explorer window for choosing the preset saving location in the project files.
Load Preset
Opens a file explorer window for choosing the preset to open from the project files.
List of variables
Targeting
Meshes To Add Snow To (Array of Actor)
Takes a list of actor(s) as the desired target(s) to generate snow onto.
Select By Tag (Boolean)
Toggles between two methods for selecting which mesh(es) in the scene to generate snow onto.
Tag Name (String)
Takes a tag name to select the desired mesh(es) in the scene as target(s) to generate snow onto.
Parameters
./Base Generation
🚨 Grid Spacing (Float)
Determines the distance between snow spheres in the generation to create an uniform point cloud on a grid.
The lower the value, the more time it will take to generate snow
Sphere Radius (Float)
Defines the radius of each snow spheres used in the generation, affecting their size and coverage.
Snow Sphere Scale (Float)
Adjusts the scale of each snow spheres, influencing the overall snow coverage area.
./Remeshing
Remesh (Boolean)
Enables or disables the remeshing process to refine the geometry as a mass instead of a point cloud.
Snow Thickness (Float)
Sets the thickness of the snow generation to determine how deep the snow appears.
🚨 Smooth Iterations (Integer)
Specifies the number of smoothing iterations to be applied to the generation for reducing rough edges.
The higher the value, the more detailed the generation will be
🚨 Grid Cell Size (Float)
Controls the size of each cell in the generated cloud point, impacting the overall resolution and detail of the grid.
The lower the value, the more detailed the generation will be
🚨 Subdivision Amount (Integer)
Determines the level of subdivision applied to the generation for creating finer details.
The higher the value, the more detailed the generation will be
./Coverage
Use Alternative Coverage Method (Boolean)
Toggles between two methods for calculating snow coverage on the surface.
Snow Coverage (Float)
Adjusts the amount of snow on an angled surface, the value corresponding to the maximum normal taken in account to generate snow.
./Displacement & Noise
Displacement and Noise (Enum)
Selects the mode for combining displacement and noise effects.
../Displacement
Displacement Texture (Texture)
Specifies the texture used for displacement mapping to create surface variations.
Displacement Amount (Float)
Controls the intensity of the displacement effect, altering the depth and height of surface features.
Displacement Center (Float)
Sets the central point for the displacement effect, determining the origin of the surface variations.
Displacement Image Channel (Integer)
Selects the image channel (RGB) to use for displacement mapping, affecting how texture data is interpreted.
../Noise
.../Base
Noise Base Intensity (Float)
Adjusts the intensity of the base noise layer for adding subtle surface variations.
Noise Base Frequency (Float)
Controls the frequency of the base noise layer, affecting the scale of noise patterns.
.../Mid
Noise Mid Intensity (Float)
Modifies the intensity of the middle noise layer for adding medium-scale surface details.
Noise Mid Frequency (Float)
Sets the frequency of the middle noise layer, influencing the distribution of noise patterns.
.../Top
Noise Top Intensity (Float)
Changes the intensity of the top noise layer for adding fine surface details.
Noise Top Frequency (Float)
Adjusts the frequency of the top noise layer, affecting the granularity of noise patterns.
./UVs
UV Tilling (Vector2D)
Controls the tiling of UV coordinates for repeating textures across the surface.
UV Offset (Vector2D)
Sets the offset for UV coordinates to shift the texture position on the surface.
./Mesh Baking
Asset Mesh Name (String)
Sets the baked asset mesh name in the project folder.
../Mesh Settings
Enable Nanite (Boolean)
Enables or disables the use of Nanite for optimizing high-poly meshes when baking the generation.
Replace Generation With Mesh (Boolean)
Toggles the replacement of procedural generation with the baked mesh.
./Material
Material (Material Interface)
Specifies the material to be applied to the generation and mesh.
Contact & Info
Tool made by Maxime Argon.
This tool is based on CB3DART 's work and research. My creation uses the fundamentals he explained in a short series of videos.