Lagrange
Loading...
Searching...
No Matches
FacetInstanceData< Scalar, Index > Struct Template Reference

Per-instance data for OccludedFacetSampler; gates each facet individually. More...

#include <occluded_sampler_common.h>

Inheritance diagram for FacetInstanceData< Scalar, Index >:
InstanceData< Scalar, Index >

Public Attributes

std::vector< Scalarfacet_weights
 Per-facet ray-distribution weight = cbrt(area).
 
std::vector< Index > active_local_facets
 
std::optional< AdjacencyList< Index > > facet_neighbors
 1-ring edge-neighbors (mesh dual graph).
 
std::vector< std::optional< Eigen::Vector3< Scalar > > > facet_escape_directions
 World-space unit-length escape direction recorded the first time each facet becomes visible; std::nullopt means "not yet visible".
 
std::vector< std::optional< Eigen::Vector3< Scalar > > > facet_escape_snapshot
 Pre-batch snapshot of facet_escape_directions.
 
- Public Attributes inherited from InstanceData< Scalar, Index >
Index mesh_index
 
Eigen::Transform< Scalar, 3, Eigen::Affine > transform
 
std::vector< Scalarfacet_areas
 
std::vector< RaySampler< Scalar > > ray_samplers
 

Detailed Description

template<typename Scalar, typename Index>
struct lagrange::raycasting::detail::FacetInstanceData< Scalar, Index >

Per-instance data for OccludedFacetSampler; gates each facet individually.

Member Data Documentation

◆ facet_weights

template<typename Scalar, typename Index>
std::vector<Scalar> facet_weights

Per-facet ray-distribution weight = cbrt(area).

cbrt softens per-facet because each facet is its own Bernoulli trial.

◆ facet_neighbors

template<typename Scalar, typename Index>
std::optional<AdjacencyList<Index> > facet_neighbors

1-ring edge-neighbors (mesh dual graph).

std::optional because AdjacencyList isn't default-constructible.

◆ facet_escape_directions

template<typename Scalar, typename Index>
std::vector<std::optional<Eigen::Vector3<Scalar> > > facet_escape_directions

World-space unit-length escape direction recorded the first time each facet becomes visible; std::nullopt means "not yet visible".

Adaptive reads from facet_escape_snapshot instead so live writes here don't race.

◆ facet_escape_snapshot

template<typename Scalar, typename Index>
std::vector<std::optional<Eigen::Vector3<Scalar> > > facet_escape_snapshot

Pre-batch snapshot of facet_escape_directions.

Read by Adaptive; refreshed at the start of each process_instance. Kept as a member to reuse the allocation.


The documentation for this struct was generated from the following file: