Blender V4.3
GEO_uv_parametrizer.hh File Reference
#include "BLI_sys_types.h"

Go to the source code of this file.

Classes

class  blender::geometry::ParamHandle
 
struct  blender::geometry::ParamSlimOptions
 

Namespaces

namespace  slim
 
namespace  blender
 
namespace  blender::geometry
 

Macros

#define PARAM_KEY_MAX   UINTPTR_MAX
 

Typedefs

using blender::geometry::ParamKey = uintptr_t
 

Enumerations

enum  blender::geometry::PHandleState { blender::geometry::PHANDLE_STATE_ALLOCATED , blender::geometry::PHANDLE_STATE_CONSTRUCTED , blender::geometry::PHANDLE_STATE_LSCM , blender::geometry::PHANDLE_STATE_STRETCH }
 

Functions

Chart Construction:

Faces and seams may only be added between ParamHandle::ParamHandle() and geometry::uv_parametrizer_construct_end.

The pointers to co and uv are stored, rather than being copied. Vertices are implicitly created.

In geometry::uv_parametrizer_construct_end the mesh will be split up according to the seams. The resulting charts must be manifold, connected and open (at least one boundary loop). The output will be written to the uv pointers.

void blender::geometry::uv_parametrizer_aspect_ratio (ParamHandle *handle, float aspect_y)
 
void blender::geometry::uv_prepare_pin_index (ParamHandle *handle, const int bmvertindex, const float uv[2])
 
ParamKey blender::geometry::uv_find_pin_index (ParamHandle *handle, const int bmvertindex, const float uv[2])
 
void blender::geometry::uv_parametrizer_face_add (ParamHandle *handle, const ParamKey key, const int nverts, const ParamKey *vkeys, const float **co, float **uv, const float *weight, const bool *pin, const bool *select)
 
void blender::geometry::uv_parametrizer_edge_set_seam (ParamHandle *phandle, const ParamKey *vkeys)
 
void blender::geometry::uv_parametrizer_construct_end (ParamHandle *phandle, bool fill_holes, bool topology_from_uvs, int *r_count_failed=nullptr)
 
SLIM:
  • begin: data is gathered into matrices and transferred to SLIM.
  • solve: compute cheap initialization (if necessary) and refine iteratively.
  • end: clean up.
void blender::geometry::uv_parametrizer_slim_solve (ParamHandle *phandle, const ParamSlimOptions *slim_options, int *count_changed, int *count_failed)
 
void blender::geometry::uv_parametrizer_slim_live_begin (ParamHandle *phandle, const ParamSlimOptions *slim_options)
 
void blender::geometry::uv_parametrizer_slim_live_solve_iteration (ParamHandle *phandle)
 
void blender::geometry::uv_parametrizer_slim_live_end (ParamHandle *phandle)
 
void blender::geometry::uv_parametrizer_slim_stretch_iteration (ParamHandle *phandle, float blend)
 
bool blender::geometry::uv_parametrizer_is_slim (const ParamHandle *phandle)
 
Least Squares Conformal Maps:

Charts with less than two pinned vertices are assigned two pins. LSCM is divided to three steps:

  1. Begin: compute matrix and its factorization (expensive).
  2. Solve using pinned coordinates (cheap).
  3. End: clean up.

UV coordinates are allowed to change within begin/end, for quick re-solving.

void blender::geometry::uv_parametrizer_lscm_begin (ParamHandle *handle, bool live, bool abf)
 
void blender::geometry::uv_parametrizer_lscm_solve (ParamHandle *handle, int *count_changed, int *count_failed)
 
void blender::geometry::uv_parametrizer_lscm_end (ParamHandle *handle)
 
Stretch
void blender::geometry::uv_parametrizer_stretch_begin (ParamHandle *handle)
 
void blender::geometry::uv_parametrizer_stretch_blend (ParamHandle *handle, float blend)
 
void blender::geometry::uv_parametrizer_stretch_iter (ParamHandle *handle)
 
void blender::geometry::uv_parametrizer_stretch_end (ParamHandle *handle)
 
Packing
void blender::geometry::uv_parametrizer_pack (ParamHandle *handle, float margin, bool do_rotate, bool ignore_pinned)
 
Average area for all charts
void blender::geometry::uv_parametrizer_average (ParamHandle *handle, bool ignore_pinned, bool scale_uv, bool shear)
 
Flushing
void blender::geometry::uv_parametrizer_flush (ParamHandle *handle)
 
void blender::geometry::uv_parametrizer_flush_restore (ParamHandle *handle)
 

Macro Definition Documentation

◆ PARAM_KEY_MAX

#define PARAM_KEY_MAX   UINTPTR_MAX

Definition at line 28 of file GEO_uv_parametrizer.hh.

Referenced by blender::geometry::new_geo_uv_pinindex().