23 .
description(
N_(
"Faces to participate in the unwrap operation"));
27 .
description(
N_(
"Edges to mark where the mesh is \"cut\" for the purposes of unwrapping"));
29 .default_value(0.001f)
35 .
description(
N_(
"Virtually fill holes in mesh before unwrapping, to better avoid overlaps "
36 "and preserve symmetry"));
38 N_(
"UV coordinates between 0 and 1 for each face corner in the selected faces"));
45 uiItemR(layout,
ptr,
"method", 0,
"", ICON_NONE);
58 const bool fill_holes,
64 if (
mesh ==
nullptr) {
71 face_evaluator.
add(selection_field);
72 face_evaluator.evaluate();
73 const IndexMask selection = face_evaluator.get_evaluated_as_mask(0);
81 edge_evaluator.
add(seam_field);
82 edge_evaluator.evaluate();
83 const IndexMask seam = edge_evaluator.get_evaluated_as_mask(0);
88 for (
const int mp_index : selection) {
101 mp_select[i] =
false;
112 for (
const int i : seam) {
114 ParamKey vkeys[2]{edge.v1, edge.v2};
137 const bool fill_holes;
144 const bool fill_holes,
148 selection(selection),
150 fill_holes(fill_holes),
164 mesh_component, selection, seam, fill_holes, margin, method, domain);
176 const bool fill_holes =
params.extract_input<
bool>(
"Fill Holes");
177 const float margin =
params.extract_input<
float>(
"Margin");
180 selection_field, seam_field, fill_holes, margin, method)));
@ GEO_COMPONENT_TYPE_MESH
#define NODE_CLASS_CONVERTER
#define NODE_STORAGE_FUNCS(StorageT)
#define GEO_NODE_UV_UNWRAP
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
void node_type_storage(struct bNodeType *ntype, const char *storagename, void(*freefunc)(struct bNode *node), void(*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node))
void nodeRegisterType(struct bNodeType *ntype)
static uint8 component(Color32 c, uint i)
GeometryNodeUVUnwrapMethod
@ GEO_NODE_UV_UNWRAP_METHOD_ANGLE_BASED
void GEO_uv_parametrizer_flush(ParamHandle *handle)
ParamHandle * GEO_uv_parametrizer_construct_begin(void)
void GEO_uv_parametrizer_lscm_end(ParamHandle *handle)
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_average(ParamHandle *handle, bool ignore_pinned, bool scale_uv, bool shear)
void GEO_uv_parametrizer_pack(ParamHandle *handle, float margin, bool do_rotate, bool ignore_pinned)
void GEO_uv_parametrizer_construct_end(ParamHandle *handle, bool fill, bool topology_from_uvs, int *count_fail)
void GEO_uv_parametrizer_lscm_solve(ParamHandle *handle, int *count_changed, int *count_failed)
void GEO_uv_parametrizer_delete(ParamHandle *handle)
void GEO_uv_parametrizer_edge_set_seam(ParamHandle *handle, ParamKey *vkeys)
void GEO_uv_parametrizer_lscm_begin(ParamHandle *handle, bool live, bool abf)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
static VArray ForContainer(ContainerT container)
int add(GField field, GVArray *varray_ptr)
StringRefNull description() const
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static VArray< float3 > construct_uv_gvarray(const MeshComponent &component, const Field< bool > selection_field, const Field< bool > seam_field, const bool fill_holes, const float margin, const GeometryNodeUVUnwrapMethod method, const eAttrDomain domain)
static void node_init(bNodeTree *UNUSED(tree), bNode *node)
static void node_declare(NodeDeclarationBuilder &b)
static void node_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_geo_exec(GeoNodeExecParams params)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static void node_init(const struct bContext *C, bNodeTree *ntree, bNode *node)
void register_node_type_geo_uv_unwrap()
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
void node_copy_standard_storage(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
void node_free_standard_storage(bNode *node)
NodeGeometryExecFunction geometry_node_execute
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
NodeDeclareFunction declare