Utilities
-
class MaterialDefs
- #include <material_defs.h>
Class representing material definitions that translates between material names, colors, and ids.
Public Functions
-
glm::vec4 color(const std::string &name) const
Returns the color of the material given the name.
- Parameters:
name – The name of the material
-
glm::vec4 color(uint8_t material) const
Returns the color of the material given the id.
- Parameters:
material – The id of the material
-
bool contains(const std::string &name) const
Returns true if the material exists.
- Parameters:
name – The name of the material
-
nlohmann::json get_raw_settings(const std::string &name) const
-
uint8_t id(const std::string &name) const
Returns the id of the material given the name.
- Parameters:
name – The name of the material
-
uint8_t id(glm::vec4 color) const
Returns the id of the material given the color.
- Parameters:
color – The color of the material
-
MaterialDefs()
Default constructor. Initializes empty definition with only void space.
-
MaterialDefs(const std::string &path)
Constructor that takes a string.
- Parameters:
path – The path to the material configuration file
-
std::string name(uint8_t material) const
Returns the name of the material given the id.
- Parameters:
material – The id of the material
-
size_t num_materials() const
Returns the number of materials.
- Returns:
The number of materials
-
std::vector<glm::vec4> palette() const
Returns a list of colors that are in the floating point range [0, 1].
- Returns:
A list of 4-component colors (RGBA) that are in the floating point range [0, 1]
-
std::vector<glm::vec4> prescaled_color_list() const
Returns a list of colors that are prescaled to the range [0, 255].
- Returns:
A list of 4-component colors (RGBA) that are prescaled to the range [0, 255]
-
void update_color(uint8_t id, glm::vec4 color)
Updates the color of the material given the id.
- Parameters:
id – The id of the material
color – The new color of the material (RGBA)
-
glm::vec4 color(const std::string &name) const
-
namespace MaterialExceptions
-
class ColorMap
- #include <color_map.h>
Public Functions
-
void add_color(double value, const glm::vec3 &color)
-
ColorMap() = default
-
glm::vec3 get_color(double value) const
Public Static Functions
Private Members
-
std::map<double, glm::vec3> m_color_points
-
void add_color(double value, const glm::vec3 &color)
-
class TreeSampler
- #include <tree_sampler.h>
Public Types
-
typedef std::function<void(int)> ProgressCallback
Public Functions
-
std::vector<float> as_float_array(const std::string &attribute, ProgressCallback progress = nullptr)
-
std::vector<std::pair<std::optional<double>, std::optional<AttributeSamples>>> as_sample_array(const ProgressCallback &progress = nullptr)
-
std::vector<float> as_signed_distance_array(const ProgressCallback &progress = nullptr)
-
std::vector<glm::vec3> as_vec3_array(const std::string &attribute, ProgressCallback progress = nullptr)
-
std::vector<glm::vec4> as_vec4_array(const std::string &attribute, ProgressCallback progress = nullptr)
-
std::pair<double, double> get_double_attribute_min_max() const
-
std::tuple<size_t, size_t, size_t> sample_dimensions()
-
std::vector<float> sample_points_to_float_array(std::vector<glm::vec3> &points, const std::string &attribute, ProgressCallback progress = nullptr)
-
std::vector<glm::vec3> sample_points_to_vec3_array(std::vector<glm::vec3> &points, const std::string &attribute, ProgressCallback progress = nullptr)
-
std::vector<glm::vec4> sample_points_to_vec4_array(std::vector<glm::vec3> &points, const std::string &attribute, ProgressCallback progress = nullptr)
-
void set_undefined_attribute_pattern_enabled(bool enabled)
Enable or disable the undefined-attribute stripe pattern.
When enabled (the default), voxels/points inside geometry that are missing the selected attribute are rendered with a subtle world-space stripe pattern instead of plain gray.
Private Functions
-
void compute_sample_dimensions()
-
void compute_voxel_min_max(const std::string &attribute)
-
void sample_signed_distance_field(const ProgressCallback &progress = nullptr)
-
void sample_voxel_grid(const ProgressCallback &progress = nullptr)
Private Members
-
std::vector<SampleResult> m_attribute_samples
-
glm::vec3 m_bbox_max
-
glm::vec3 m_bbox_min
-
tbb::task_group_context m_context
-
double m_dbl_attribute_max = std::numeric_limits<double>::min()
-
double m_dbl_attribute_min = std::numeric_limits<double>::max()
-
std::shared_ptr<MaterialDefs> m_material_defs
-
std::shared_ptr<SampleResult> m_points_samples
-
std::vector<std::pair<std::optional<double>, std::optional<AttributeSamples>>> m_sample_array
-
bool m_show_undefined_attribute_pattern = true
-
std::vector<float> m_signed_distance_field
-
size_t m_size_x
-
size_t m_size_y
-
size_t m_size_z
-
bool m_use_blending = true
-
glm::vec3 m_voxel_size
Private Static Functions
-
static glm::vec4 UndefinedStripeColor(const glm::vec3 &world_pos, float stripe_period, float alpha)
-
static void UpdateProgress(size_t &local_count, std::atomic<size_t> &global_count, const size_t &total_voxels, const ProgressCallback &progress, std::mutex &progress_mutex)
-
struct SampleResult
Public Members
-
bool inside = false
-
std::optional<AttributeSamples> samples
-
std::optional<double> sdf
-
bool inside = false
-
typedef std::function<void(int)> ProgressCallback
-
class ExpressionEvaluator
- #include <expression_evaluator.h>
A class to evaluate mathematical expressions.
This class uses the exprtk library to evaluate mathematical expressions. The class can compile a function and evaluate it with a set of variables. The variables are passed in as a map of variable names to pointers to double values.
Note
This class is thread NOT safe.
Public Functions
-
bool compile(const std::string &function, const std::unordered_map<std::string, double*> &variables)
compiles a function with a set of variables
- Parameters:
function – The function to compile
variables – A map of variable names to pointers to double values
- Returns:
True if the function compiled successfully, false otherwise
-
std::string error()
-
double evaluate()
Evaluates the compiled function.
- Returns:
The result of the function
-
ExpressionEvaluator()
Default constructor.
-
double *getVariable(const std::string &name)
-
void setVariable(const std::string &name, double value)
-
bool compile(const std::string &function, const std::unordered_map<std::string, double*> &variables)
-
namespace MathUtils
A namespace for mathematical utility functions.
Functions
-
std::pair<glm::vec3, glm::vec3> CombinedBBox(std::vector<std::pair<glm::vec3, glm::vec3>> bboxes)
Computes the bounding box of a list of bounding boxes.
Note
If any of the bounding boxes are infinite, they are ignored
Note
If no bounding boxes are finite, the function returns an infinite bounding box
Note
If the vector is empty, the function returns [0,0,0] to [0,0,0]
- Parameters:
bboxes – The list of bounding boxes
- Returns:
The combined bounding box TODO: this function is used in the composition nodes. However it might be smarter to use a tighter bounding box depending on the operation (e.g. intersection, union, etc.)
-
int compute_new_material(const std::unordered_map<uint8_t, float> &probabilities, bool prob_mode)
Computes the new material based on the probabilities.
- Parameters:
probabilities – A map of material IDs to probabilities
prob_mode – Whether to use probability mode or threshold mode
- Returns:
The new material ID
-
std::pair<glm::vec3, glm::vec3> IntersectedBBox(std::vector<std::pair<glm::vec3, glm::vec3>> bboxes)
Computes the intersected bounding box of a list of bounding boxes.
- Parameters:
bboxes – The list of bounding boxes
- Returns:
The intersected bounding box
-
bool IsNearlyCollinear(const glm::vec2 &point1, const glm::vec2 &point2, const glm::vec2 &point3, double epsilon)
Checks if three 2D points are nearly collinear.
Uses the area of the triangle formed by the points to determine collinearity
- Parameters:
point1 – The first point
point2 – The second point
point3 – The third point
epsilon – The epsilon value
- Returns:
True if the points are nearly collinear, false otherwise
-
bool IsNearlyCollinear(const Point_2 &point1, const Point_2 &point2, const Point_2 &point3, double epsilon)
-
template<typename T>
T tet_interpolate(const glm::vec4 &bary_coords, const T &a, const T &b, const T &c, const T &d) Interpolates a value using barycentric coordinates.
- Parameters:
bary_coords – The barycentric coordinates
a – The value at the first vertex
b – The value at the second vertex
c – The value at the third vertex
d – The value at the fourth vertex
- Returns:
The interpolated value
-
float tet_volume(const glm::vec3 &a, const glm::vec3 &b, const glm::vec3 &c, const glm::vec3 &d)
Computes the volume of a tetrahedron.
- Parameters:
a – The first vertex of the tetrahedron
b – The second vertex of the tetrahedron
c – The third vertex of the tetrahedron
d – The fourth vertex of the tetrahedron
- Returns:
The volume of the tetrahedron
-
std::pair<glm::vec3, glm::vec3> CombinedBBox(std::vector<std::pair<glm::vec3, glm::vec3>> bboxes)
-
class Random
- #include <random.h>
Public Functions
-
double random_double(double min, double max)
-
int random_int(int min, int max)
-
void reseed(int seed)
Public Static Functions
-
static uint8_t Weighted3ComponentSample(double a, double b, double c)
-
static uint8_t Weighted5ComponentSample(double a, double b, double c, double d, double e)
-
static size_t WeightedMaterialSample(const std::unordered_map<uint8_t, double> &materials_with_weights)
-
static size_t WeightedMaterialSample(const std::unordered_map<uint8_t, float> &materials_with_weights)
-
static size_t WeightedSample(const std::vector<double> &weights)
Private Functions
-
Random()
-
double random_double(double min, double max)
Functions
-
inline std::string report_version()
Defines
-
GLM_ENABLE_EXPERIMENTAL
-
template<typename Key, typename Value>
class LRUCache - #include <lru_cache.h>
A simple, thread-local Least Recently Used (LRU) cache for storing generic values keyed by 3D integer coordinates.
This is used by nodes like Convolve that need to sample a neighborhood of points. By caching the results, we avoid making redundant, expensive sample() calls to child nodes. Because TreeSampler clones roots per thread, this cache does not need internal mutexes.
Public Functions
-
inline void clear()
Clears all entries from the cache.
-
inline std::optional<Value> get(const Key &key)
Retrieves a value from the cache.
- Parameters:
key – The key to look up.
- Returns:
An optional containing the value if found, or std::nullopt if not.
-
inline explicit LRUCache(size_t capacity)
Constructs the cache with a specified maximum capacity.
- Parameters:
capacity – The maximum number of items the cache can hold before evicting the oldest.
-
inline void put(const Key &key, const Value &value)
Inserts a value into the cache.
- Parameters:
key – The key to associate with the value.
value – The value to cache.
-
inline size_t size() const
Returns the current number of items in the cache.
-
inline void clear()
Defines
-
STBIWDEF
Typedefs
-
typedef void stbi_write_func(void *context, void *data, int size)
Functions
-
void stbi_flip_vertically_on_write(int flip_boolean)
-
int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data)
-
int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data)
-
int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data)
-
int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data)
-
int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality)
-
int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality)
-
int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes)
-
int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes)
-
int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data)
-
int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data)
Variables
-
int stbi_write_force_png_filter
-
int stbi_write_png_compression_level
-
int stbi_write_tga_with_rle
-
namespace VolumetricDithering