Craters generation
-------------------------------------------------------------------------------------
- added "successive-impacts" flag;
- perturbation applied following the vertex normal and not the crater centre normal,
in order to "follow" the mesh surface;
- added "smoothing steps" parameter to pre-smooth vertex normals a given number of times
before generating craters;
- added "elevation" parameter to decide the fraction of depth that will rise from mesh surface;
- added blending algorithm to blend the above elevation towards the original mesh surface;
the blending is supported by two new parameters:
- blending algorithm: defines the blending functions (there are four blending functions
available so far: exponential blending, linear blending, gaussian blending and f3 blending);
- blending threshold: defines the fraction of radius above which the radial function is
replaced by the blending function.
- removed "profile factor" parameter;
- filter description modified.
Code modifications: now the noise, radial and blending functions are defined as functors,
and the crater functor is basically a combination of a radial functor, a blending functor
and a noise functor (for postprocessing noise). All these functors work with normalized
inputs and returns normalized output; they are all implemented in the new filter_functors.h
file.
More to come: code cleanings, reorganizations and comments.
=============================================================================================
Files and classes modifications
---------------------------------------------------------------------------------------------
- FractalArgs class moved to fractal_perturbation.h
- CratersArgs class moved to craters_utils.h
- removed filter_args.h and radial_perturbation.h
Fractal displacement filters modifications
---------------------------------------------------------------------------------------------
- CR_FRACTAL_TERRAIN and FP_FRACTAL_MESH filters moved to deformation submenu;
- fractal displacement algorithm unified for terrain generation and mesh fractal displacement;
(lot of code cleaning!)
- heightFactor parameter name changed to "maxHeight". This parameter now controls
the maximum perturbation height, which is a fraction of bounding box diagonal or,
in the case of terrain generation, a fraction of grid side;
- vertex coordinates are now correctly normalized and scaled before computing the perturbation;
- preview enabled for CR_FRACTAL_TERRAIN filter;
- save-as-vertex-quality feature enabled for CR_FRACTAL_TERRAIN filter.
Craters generation modifications
---------------------------------------------------------------------------------------------
- removed inverse multiquadric and cauchy perturbations;
- nearest faces to samples now are detected using a uniform grid (GetClosest method).
Craters Generation filter:
- added progress bar handling;
- inserted some correctness tests (min radius < max radius, min depth < max depth, sample layer MUST BE a sample layer);
- added (optionally) a slightly noise perturbation as post-processing effect;
- filter description updated.
Fractal Displacement filters:
- HeightFactor parameter now is a simple float instead of a dynamic float
- improved fractal displacement on general meshes (now we project the vertexes of the mesh onto a sphere
which has a very small radius, we compute the perturbation on the projected points and then store back
the resulting perturbation on the original vertexes).
- FP_FRACTAL_MESH filter description updated.
- removed refinement step while generating craters; we assume that the target mesh is sufficiently refined;
- preview support enabled;
- added an option to invert the sign of radial perturbation, in order to create bumps instead of craters;
- classes FractalPerturbation, FractalArgs and CratersArgs templated over the scalar type of perturbation;
- added an option to save the perturbation as vertex quality;
- default parameters redefined;
- added an integer seed parameter that controls how craters depth and radius are generated;
- radial perturbation limited to negative or zero values to avoid raised crater borders.
- added algorithm parameter to choose the type of radial perturbation among:
- Gaussian
- Multiquadric
- InverseMultiquadric
- Cauchy
- added radial_perturbation.h: this header contains the above RBF algorithms
- added profile_factor parameter to control the ratio between crater border and crater effective area