Blender
V3.3
|
#include "BLI_sys_types.h"
Go to the source code of this file.
Macros | |
#define | PARAM_KEY_MAX INTPTR_MAX |
Typedefs | |
typedef struct ParamHandle | ParamHandle |
typedef intptr_t | ParamKey |
Functions | |
Chart Construction: | |
Faces and seams may only be added between GEO_uv_parametrizer_construct_begin and GEO_uv_parametrizer_construct_end. The pointers to In GEO_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 | |
ParamHandle * | GEO_uv_parametrizer_construct_begin (void) |
void | GEO_uv_parametrizer_aspect_ratio (ParamHandle *handle, float aspx, float aspy) |
void | GEO_uv_prepare_pin_index (ParamHandle *handle, const int bmvertindex, const float uv[2]) |
ParamKey | GEO_uv_find_pin_index (ParamHandle *handle, const int bmvertindex, const float uv[2]) |
void | GEO_uv_parametrizer_face_add (ParamHandle *handle, const ParamKey key, const int nverts, const ParamKey *vkeys, const float **co, float **uv, const bool *pin, const bool *select) |
void | GEO_uv_parametrizer_edge_set_seam (ParamHandle *handle, ParamKey *vkeys) |
void | GEO_uv_parametrizer_construct_end (ParamHandle *handle, bool fill, bool topology_from_uvs, int *count_fail) |
void | GEO_uv_parametrizer_delete (ParamHandle *handle) |
Least Squares Conformal Maps: | |
Charts with less than two pinned vertices are assigned two pins. LSCM is divided to three steps:
UV coordinates are allowed to change within begin/end, for quick re-solving. | |
void | GEO_uv_parametrizer_lscm_begin (ParamHandle *handle, bool live, bool abf) |
void | GEO_uv_parametrizer_lscm_solve (ParamHandle *handle, int *count_changed, int *count_failed) |
void | GEO_uv_parametrizer_lscm_end (ParamHandle *handle) |
Stretch | |
void | GEO_uv_parametrizer_stretch_begin (ParamHandle *handle) |
void | GEO_uv_parametrizer_stretch_blend (ParamHandle *handle, float blend) |
void | GEO_uv_parametrizer_stretch_iter (ParamHandle *handle) |
void | GEO_uv_parametrizer_stretch_end (ParamHandle *handle) |
Packing | |
void | GEO_uv_parametrizer_pack (ParamHandle *handle, float margin, bool do_rotate, bool ignore_pinned) |
Average area for all charts | |
void | GEO_uv_parametrizer_average (ParamHandle *handle, bool ignore_pinned, bool scale_uv, bool shear) |
Simple x,y scale | |
void | GEO_uv_parametrizer_scale (ParamHandle *handle, float x, float y) |
Flushing | |
void | GEO_uv_parametrizer_flush (ParamHandle *handle) |
void | GEO_uv_parametrizer_flush_restore (ParamHandle *handle) |
#define PARAM_KEY_MAX INTPTR_MAX |
Definition at line 17 of file GEO_uv_parametrizer.h.
typedef struct ParamHandle ParamHandle |
Definition at line 1 of file GEO_uv_parametrizer.h.
Definition at line 16 of file GEO_uv_parametrizer.h.
ParamKey GEO_uv_find_pin_index | ( | ParamHandle * | handle, |
const int | bmvertindex, | ||
const float | uv[2] | ||
) |
Definition at line 3779 of file uv_parametrizer.c.
References BLI_ghash_lookup(), len_squared_v2v2(), GeoUVPinIndex::next, ParamHandle::pin_hash, POINTER_FROM_INT, GeoUVPinIndex::reindex, and GeoUVPinIndex::uv.
Referenced by construct_param_edge_set_seams(), and construct_param_handle_face_add().
void GEO_uv_parametrizer_aspect_ratio | ( | ParamHandle * | handle, |
float | aspx, | ||
float | aspy | ||
) |
Definition at line 3728 of file uv_parametrizer.c.
References ParamHandle::aspx, and ParamHandle::aspy.
Referenced by construct_param_handle(), construct_param_handle_multi(), and construct_param_handle_subsurfed().
void GEO_uv_parametrizer_average | ( | ParamHandle * | handle, |
bool | ignore_pinned, | ||
bool | scale_uv, | ||
bool | shear | ||
) |
Definition at line 4249 of file uv_parametrizer.c.
References add_v2_v2(), PChart::PChartUnion::PChartPack::area, ParamHandle::charts, clamp_f(), PVert::co, dot_v3v3(), PFace::edge, err, fabsf, PChart::faces, PChart::flag, invert_m2_m2(), len_v3(), mid_v2_v2v2(), ParamHandle::ncharts, negate_v2(), PEdge::next, PFace::nextlink, normalize_v3(), PChart::PChartUnion::PChartPack::origin, p_chart_uv_bbox(), p_chart_uv_scale(), p_chart_uv_transform(), p_chart_uv_translate(), p_face_area(), p_face_uv_area_signed(), PChart::PChartUnion::pack, PCHART_HAS_PINS, PChart::PChartUnion::PChartPack::rescale, sqrtf, t, PChart::u, PVert::uv, and PEdge::vert.
Referenced by average_islands_scale_exec(), blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), and uvedit_unwrap().
ParamHandle* GEO_uv_parametrizer_construct_begin | ( | void | ) |
Definition at line 3710 of file uv_parametrizer.c.
References ParamHandle::arena, ParamHandle::aspx, ParamHandle::aspy, BLI_heap_new_ex(), BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, BLI_POLYFILL_ALLOC_NGON_RESERVE, ParamHandle::construction_chart, PChart::edges, PChart::faces, ParamHandle::hash_edges, ParamHandle::hash_faces, ParamHandle::hash_verts, MEM_callocN, MEM_SIZE_OPTIMAL, p_chart_new(), PHANDLE_STATE_ALLOCATED, phash_new(), ParamHandle::polyfill_arena, ParamHandle::polyfill_heap, ParamHandle::state, and PChart::verts.
Referenced by construct_param_handle(), construct_param_handle_multi(), construct_param_handle_subsurfed(), blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), and blender::nodes::node_geo_uv_pack_islands_cc::construct_uv_gvarray().
void GEO_uv_parametrizer_construct_end | ( | ParamHandle * | handle, |
bool | fill, | ||
bool | topology_from_uvs, | ||
int * | count_fail | ||
) |
Definition at line 3946 of file uv_parametrizer.c.
References ParamHandle::charts, ParamHandle::construction_chart, ParamHandle::hash_edges, ParamHandle::hash_faces, ParamHandle::hash_verts, PChart::nboundaries, ParamHandle::ncharts, NULL, p_chart_boundaries(), p_chart_delete(), p_chart_fill_boundaries(), p_connect_pairs(), p_split_charts(), p_vert_load_pin_select_uvs(), param_assert, PHANDLE_STATE_ALLOCATED, PHANDLE_STATE_CONSTRUCTED, phash_delete(), ParamHandle::state, v, and PChart::verts.
Referenced by construct_param_handle(), construct_param_handle_multi(), construct_param_handle_subsurfed(), blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), and blender::nodes::node_geo_uv_pack_islands_cc::construct_uv_gvarray().
void GEO_uv_parametrizer_delete | ( | ParamHandle * | handle | ) |
Definition at line 3734 of file uv_parametrizer.c.
References ParamHandle::arena, BLI_ghash_free(), BLI_heap_free(), BLI_memarena_free(), ParamHandle::charts, ParamHandle::construction_chart, ELEM, ParamHandle::hash_edges, ParamHandle::hash_faces, ParamHandle::hash_verts, MEM_freeN, MEM_SAFE_FREE, ParamHandle::ncharts, NULL, p_chart_delete(), param_assert, PHANDLE_STATE_ALLOCATED, PHANDLE_STATE_CONSTRUCTED, phash_delete(), ParamHandle::pin_hash, ParamHandle::polyfill_arena, ParamHandle::polyfill_heap, and ParamHandle::state.
Referenced by average_islands_scale_exec(), blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), blender::nodes::node_geo_uv_pack_islands_cc::construct_uv_gvarray(), ED_uvedit_live_unwrap_end(), minimize_stretch_exit(), uvedit_pack_islands(), uvedit_pack_islands_multi(), and uvedit_unwrap().
void GEO_uv_parametrizer_edge_set_seam | ( | ParamHandle * | handle, |
ParamKey * | vkeys | ||
) |
Definition at line 3934 of file uv_parametrizer.c.
References e, p_edge_lookup(), param_assert, PEDGE_SEAM, PHANDLE_STATE_ALLOCATED, and ParamHandle::state.
Referenced by construct_param_edge_set_seams(), construct_param_handle_subsurfed(), and blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray().
void GEO_uv_parametrizer_face_add | ( | ParamHandle * | handle, |
const ParamKey | key, | ||
const int | nverts, | ||
const ParamKey * | vkeys, | ||
const float ** | co, | ||
float ** | uv, | ||
const bool * | pin, | ||
const bool * | select | ||
) |
Definition at line 3900 of file uv_parametrizer.c.
References ELEM, ParamHandle::hash_faces, NULL, p_add_ngon(), p_face_add_construct(), p_face_exists(), p_quad_split_direction(), param_assert, PHANDLE_STATE_ALLOCATED, phash_lookup(), select(), ParamHandle::state, and GeoUVPinIndex::uv.
Referenced by construct_param_handle_face_add(), construct_param_handle_subsurfed(), blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), blender::nodes::node_geo_uv_pack_islands_cc::construct_uv_gvarray(), and p_add_ngon().
void GEO_uv_parametrizer_flush | ( | ParamHandle * | handle | ) |
Definition at line 4403 of file uv_parametrizer.c.
References ParamHandle::blend, ParamHandle::charts, PChart::PChartUnion::PChartLscm::context, PChart::PChartUnion::lscm, ParamHandle::ncharts, p_flush_uvs(), p_flush_uvs_blend(), PHANDLE_STATE_LSCM, ParamHandle::state, and PChart::u.
Referenced by average_islands_scale_exec(), blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), blender::nodes::node_geo_uv_pack_islands_cc::construct_uv_gvarray(), ED_uvedit_live_unwrap_re_solve(), minimize_stretch_exit(), minimize_stretch_iteration(), uvedit_pack_islands(), uvedit_pack_islands_multi(), and uvedit_unwrap().
void GEO_uv_parametrizer_flush_restore | ( | ParamHandle * | handle | ) |
Definition at line 4424 of file uv_parametrizer.c.
References ParamHandle::charts, PChart::faces, ParamHandle::ncharts, PFace::nextlink, and p_face_restore_uvs().
Referenced by ED_uvedit_live_unwrap_end(), and minimize_stretch_exit().
void GEO_uv_parametrizer_lscm_begin | ( | ParamHandle * | handle, |
bool | live, | ||
bool | abf | ||
) |
Definition at line 3999 of file uv_parametrizer.c.
References ParamHandle::charts, PChart::faces, ParamHandle::ncharts, PFace::nextlink, p_chart_lscm_begin(), p_face_backup_uvs(), param_assert, PHANDLE_STATE_CONSTRUCTED, PHANDLE_STATE_LSCM, and ParamHandle::state.
Referenced by blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), ED_uvedit_live_unwrap_begin(), and uvedit_unwrap().
void GEO_uv_parametrizer_lscm_end | ( | ParamHandle * | handle | ) |
Definition at line 4054 of file uv_parametrizer.c.
References ParamHandle::charts, ParamHandle::ncharts, p_chart_lscm_end(), param_assert, PHANDLE_STATE_CONSTRUCTED, PHANDLE_STATE_LSCM, and ParamHandle::state.
Referenced by blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), ED_uvedit_live_unwrap_end(), and uvedit_unwrap().
void GEO_uv_parametrizer_lscm_solve | ( | ParamHandle * | handle, |
int * | count_changed, | ||
int * | count_failed | ||
) |
Definition at line 4015 of file uv_parametrizer.c.
References ParamHandle::charts, PChart::PChartUnion::PChartLscm::context, PChart::flag, PChart::PChartUnion::lscm, ParamHandle::ncharts, NULL, p_chart_lscm_end(), p_chart_lscm_solve(), p_chart_lscm_transform_single_pin(), p_chart_rotate_fit_aabb(), p_chart_rotate_minimum_area(), param_assert, PCHART_HAS_PINS, PHANDLE_STATE_LSCM, result, PChart::PChartUnion::PChartLscm::single_pin, ParamHandle::state, and PChart::u.
Referenced by blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), ED_uvedit_live_unwrap_re_solve(), and uvedit_unwrap().
void GEO_uv_parametrizer_pack | ( | ParamHandle * | handle, |
float | margin, | ||
bool | do_rotate, | ||
bool | ignore_pinned | ||
) |
Definition at line 4144 of file uv_parametrizer.c.
References blender::compositor::area(), ParamHandle::aspx, ParamHandle::aspy, BLI_box_pack_2d(), ParamHandle::charts, double(), PChart::flag, float(), GEO_uv_parametrizer_pack_rotate(), GEO_uv_parametrizer_scale(), BoxPack::h, BoxPack::index, MEM_freeN, MEM_mallocN, ParamHandle::ncharts, p_chart_uv_bbox(), p_chart_uv_scale(), p_chart_uv_translate(), PChart::PChartUnion::pack, PCHART_HAS_PINS, PChart::PChartUnion::PChartPack::size, sqrtf, PChart::u, BoxPack::w, BoxPack::x, and BoxPack::y.
Referenced by blender::nodes::node_geo_uv_unwrap_cc::construct_uv_gvarray(), blender::nodes::node_geo_uv_pack_islands_cc::construct_uv_gvarray(), uvedit_pack_islands(), and uvedit_pack_islands_multi().
void GEO_uv_parametrizer_scale | ( | ParamHandle * | handle, |
float | x, | ||
float | y | ||
) |
Definition at line 4392 of file uv_parametrizer.c.
References ParamHandle::charts, ParamHandle::ncharts, p_chart_uv_scale_xy(), x, and y.
Referenced by GEO_uv_parametrizer_pack().
void GEO_uv_parametrizer_stretch_begin | ( | ParamHandle * | handle | ) |
Definition at line 4070 of file uv_parametrizer.c.
References PFace::PFaceUnion::area3d, ParamHandle::blend, BLI_rng_new(), ParamHandle::charts, PChart::faces, ParamHandle::ncharts, PFace::nextlink, p_face_area(), p_face_backup_uvs(), p_stretch_pin_boundary(), param_assert, PHANDLE_STATE_CONSTRUCTED, PHANDLE_STATE_STRETCH, PVERT_PIN, ParamHandle::rng, ParamHandle::state, PFace::u, v, and PChart::verts.
Referenced by minimize_stretch_init().
void GEO_uv_parametrizer_stretch_blend | ( | ParamHandle * | handle, |
float | blend | ||
) |
Definition at line 4099 of file uv_parametrizer.c.
References ParamHandle::blend, blend(), param_assert, PHANDLE_STATE_STRETCH, and ParamHandle::state.
Referenced by minimize_stretch_init(), and minimize_stretch_iteration().
void GEO_uv_parametrizer_stretch_end | ( | ParamHandle * | handle | ) |
Definition at line 4118 of file uv_parametrizer.c.
References BLI_rng_free(), NULL, param_assert, PHANDLE_STATE_CONSTRUCTED, PHANDLE_STATE_STRETCH, ParamHandle::rng, and ParamHandle::state.
Referenced by minimize_stretch_exit().
void GEO_uv_parametrizer_stretch_iter | ( | ParamHandle * | handle | ) |
Definition at line 4105 of file uv_parametrizer.c.
References ParamHandle::charts, ParamHandle::ncharts, p_chart_stretch_minimize(), param_assert, PHANDLE_STATE_STRETCH, ParamHandle::rng, and ParamHandle::state.
Referenced by minimize_stretch_iteration().
void GEO_uv_prepare_pin_index | ( | ParamHandle * | handle, |
const int | bmvertindex, | ||
const float | uv[2] | ||
) |
Definition at line 3814 of file uv_parametrizer.c.
References BLI_ghash_insert(), BLI_ghash_int_new(), BLI_ghash_lookup(), equals_v2v2(), new_geo_uv_pinindex(), GeoUVPinIndex::next, ParamHandle::pin_hash, POINTER_FROM_INT, and GeoUVPinIndex::uv.
Referenced by uvedit_prepare_pinned_indices().