Lagrange
Loading...
Searching...
No Matches
Group-raycasting

Classes

struct  LocalFeatureSizeOptions
 Options for compute_local_feature_size(). More...
 
struct  ProjectCommonOptions
 Common options for projection functions. More...
 
struct  ProjectDirectionalOptions
 Options for project_directional(). More...
 
struct  ProjectOptions
 Options for project(). More...
 

Enumerations

enum class  RayDirectionMode { Interior , Exterior , Both }
 Ray direction mode for local feature size computation. More...
 

Functions

template<typename Scalar, typename Index>
LA_RAYCASTING_API AttributeId compute_local_feature_size (SurfaceMesh< Scalar, Index > &mesh, const LocalFeatureSizeOptions &options={}, const RayCaster *ray_caster=nullptr)
 Compute local feature size for each vertex of a mesh using medial axis approximation.
 
template<typename Scalar, typename Index>
LA_RAYCASTING_API void project (const SurfaceMesh< Scalar, Index > &source, SurfaceMesh< Scalar, Index > &target, const ProjectOptions &options={}, const RayCaster *ray_caster=nullptr)
 Project vertex attributes from one mesh to another.
 
template<typename Scalar, typename Index>
LA_RAYCASTING_API void project_closest_point (const SurfaceMesh< Scalar, Index > &source, SurfaceMesh< Scalar, Index > &target, const ProjectCommonOptions &options={}, const RayCaster *ray_caster=nullptr)
 Project vertex attributes from one mesh to another, by copying attributes from the closest point on the input mesh.
 
template<typename Scalar, typename Index>
LA_RAYCASTING_API void project_closest_vertex (const SurfaceMesh< Scalar, Index > &source, SurfaceMesh< Scalar, Index > &target, const ProjectCommonOptions &options={}, const RayCaster *ray_caster=nullptr)
 Project vertex attributes from one mesh to another, by copying attributes from the closest vertex on the source mesh surface.
 
template<typename Scalar, typename Index>
LA_RAYCASTING_API void project_directional (const SurfaceMesh< Scalar, Index > &source, SurfaceMesh< Scalar, Index > &target, const ProjectDirectionalOptions &options={}, const RayCaster *ray_caster=nullptr)
 Project vertex attributes from one mesh to another, by projecting target vertices along a prescribed direction, and interpolating surface values from facet corners of the source mesh.
 

Detailed Description

Enumeration Type Documentation

◆ RayDirectionMode

enum class RayDirectionMode
strong

#include <lagrange/raycasting/compute_local_feature_size.h>

Ray direction mode for local feature size computation.

Enumerator
Interior 

Cast rays into the interior of the shape (hemisphere bounded by 1-ring normals, pointing inward).

Exterior 

Cast rays to the exterior of the shape (hemisphere bounded by 1-ring normals, pointing outward).

Both 

Cast rays in all directions (full sphere).

Function Documentation

◆ compute_local_feature_size()

template<typename Scalar, typename Index>
LA_RAYCASTING_API AttributeId compute_local_feature_size ( SurfaceMesh< Scalar, Index > & mesh,
const LocalFeatureSizeOptions & options = {},
const RayCaster * ray_caster = nullptr )

#include <lagrange/raycasting/compute_local_feature_size.h>

Compute local feature size for each vertex of a mesh using medial axis approximation.

For each vertex, this function:

  1. Casts a single ray along the normal direction (inward for Interior, outward for Exterior, both directions for Both mode) to find the opposite surface.
  2. Performs binary search along the ray to find the medial axis point - approximated as the largest depth from where the closest point on surface is within 1-ring of the vertex.
  3. Returns this distance as the local feature size.
Note
This method works best for meshes with uniformly sized triangles.
For Interior mode, rays are cast inward (negative normal direction). For Exterior mode, rays are cast outward (positive normal direction). For Both mode, rays are cast in both directions and the minimum LFS is taken.
If raycasting fails to find a hit, or if the binary search fails to converge, the default_lfs value is used as a fallback.
Parameters
[in,out]meshMesh to process (must be a triangle mesh). The mesh is modified to add the local feature size attribute.
[in]optionsOptions for local feature size computation.
[in]ray_casterIf provided, use this ray caster to perform the queries. The mesh must have been added to the ray caster in advance, and the scene must have been committed. If nullptr, a temporary ray caster will be created internally.
Template Parameters
ScalarMesh scalar type.
IndexMesh index type.
Returns
The attribute id of the local feature size attribute.

◆ project()

template<typename Scalar, typename Index>
LA_RAYCASTING_API void project ( const SurfaceMesh< Scalar, Index > & source,
SurfaceMesh< Scalar, Index > & target,
const ProjectOptions & options = {},
const RayCaster * ray_caster = nullptr )

#include <lagrange/raycasting/project.h>

Project vertex attributes from one mesh to another.

Different projection modes can be prescribed.

By default, vertex positions are projected. Additional attributes to project can be specified via options.attribute_ids. Set options.project_vertices to false to skip vertex positions.

Parameters
[in]sourceSource mesh (must be a triangle mesh).
[in,out]targetTarget mesh to be modified.
[in]optionsProjection options.
[in]ray_casterIf provided, use this ray caster to perform the queries. The source mesh must have been added to the ray caster in advance, and the scene must have been committed. If nullptr, a temporary ray caster will be created internally.
Template Parameters
ScalarMesh scalar type.
IndexMesh index type.

◆ project_closest_point()

template<typename Scalar, typename Index>
LA_RAYCASTING_API void project_closest_point ( const SurfaceMesh< Scalar, Index > & source,
SurfaceMesh< Scalar, Index > & target,
const ProjectCommonOptions & options = {},
const RayCaster * ray_caster = nullptr )

#include <lagrange/raycasting/project_closest_point.h>

Project vertex attributes from one mesh to another, by copying attributes from the closest point on the input mesh.

Values are linearly interpolated from the face corners.

By default, vertex positions are projected. Additional attributes to project can be specified via options.attribute_ids. Set options.project_vertices to false to skip vertex positions.

Parameters
[in]sourceSource mesh (must be a triangle mesh).
[in,out]targetTarget mesh to be modified.
[in]optionsProjection options.
[in]ray_casterIf provided, use this ray caster to perform the queries. The source mesh must have been added to the ray caster in advance, and the scene must have been committed. If nullptr, a temporary ray caster will be created internally.
Template Parameters
ScalarMesh scalar type.
IndexMesh index type.

◆ project_closest_vertex()

template<typename Scalar, typename Index>
LA_RAYCASTING_API void project_closest_vertex ( const SurfaceMesh< Scalar, Index > & source,
SurfaceMesh< Scalar, Index > & target,
const ProjectCommonOptions & options = {},
const RayCaster * ray_caster = nullptr )

#include <lagrange/raycasting/project_closest_vertex.h>

Project vertex attributes from one mesh to another, by copying attributes from the closest vertex on the source mesh surface.

The closest surface point is found via a closest-point query, then snapped to the nearest vertex of the hit triangle (the vertex with the largest barycentric weight).

By default, vertex positions are projected. Additional attributes to project can be specified via options.attribute_ids. Set options.project_vertices to false to skip vertex positions.

Parameters
[in]sourceSource mesh (must be a triangle mesh).
[in,out]targetTarget mesh to be modified.
[in]optionsProjection options.
[in]ray_casterIf provided, use this ray caster to perform the queries. The source mesh must have been added to the ray caster in advance, and the scene must have been committed. If nullptr, a temporary ray caster will be created internally.
Template Parameters
ScalarMesh scalar type.
IndexMesh index type.

◆ project_directional()

template<typename Scalar, typename Index>
LA_RAYCASTING_API void project_directional ( const SurfaceMesh< Scalar, Index > & source,
SurfaceMesh< Scalar, Index > & target,
const ProjectDirectionalOptions & options = {},
const RayCaster * ray_caster = nullptr )

#include <lagrange/raycasting/project_directional.h>

Project vertex attributes from one mesh to another, by projecting target vertices along a prescribed direction, and interpolating surface values from facet corners of the source mesh.

By default, vertex positions are projected. Additional attributes to project can be specified via options.attribute_ids. Set options.project_vertices to false to skip vertex positions.

Parameters
[in]sourceSource mesh (must be a triangle mesh).
[in,out]targetTarget mesh to be modified.
[in]optionsProjection options.
[in]ray_casterIf provided, use this ray caster to perform the queries. The source mesh must have been added to the ray caster in advance, and the scene must have been committed. If nullptr, a temporary ray caster will be created internally.
Template Parameters
ScalarMesh scalar type.
IndexMesh index type.