Blender  V3.3
Classes
object_remesh.cc File Reference
#include <cctype>
#include <cfloat>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_userdef_types.h"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_customdata.h"
#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_mesh.h"
#include "BKE_mesh_mirror.h"
#include "BKE_mesh_remesh_voxel.h"
#include "BKE_mesh_runtime.h"
#include "BKE_modifier.h"
#include "BKE_object.h"
#include "BKE_paint.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_shrinkwrap.h"
#include "BKE_unit.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_build.h"
#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_screen.h"
#include "ED_sculpt.h"
#include "ED_space_api.h"
#include "ED_undo.h"
#include "ED_view3d.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_enum_types.h"
#include "GPU_immediate.h"
#include "GPU_immediate_util.h"
#include "GPU_matrix.h"
#include "GPU_state.h"
#include "WM_api.h"
#include "WM_message.h"
#include "WM_toolsystem.h"
#include "WM_types.h"
#include "UI_interface.h"
#include "BLF_api.h"
#include "object_intern.h"

Go to the source code of this file.

Classes

struct  VoxelSizeEditCustomData
 
struct  QuadriFlowJob
 

Functions

Voxel Remesh Operator
static bool object_remesh_poll (bContext *C)
 
static int voxel_remesh_exec (bContext *C, wmOperator *op)
 
void OBJECT_OT_voxel_remesh (wmOperatorType *ot)
 

Voxel Size Operator

#define VOXEL_SIZE_EDIT_MAX_GRIDS_LINES   500
 
#define VOXEL_SIZE_EDIT_MAX_STR_LEN   20
 
static void voxel_size_parallel_lines_draw (uint pos3d, const float initial_co[3], const float end_co[3], const float length_co[3], const float spacing)
 
static void voxel_size_edit_draw (const bContext *C, ARegion *UNUSED(ar), void *arg)
 
static void voxel_size_edit_cancel (bContext *C, wmOperator *op)
 
static int voxel_size_edit_modal (bContext *C, wmOperator *op, const wmEvent *event)
 
static int voxel_size_edit_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
static bool voxel_size_edit_poll (bContext *C)
 
void OBJECT_OT_voxel_size_edit (wmOperatorType *ot)
 

Quadriflow Remesh Operator

#define QUADRIFLOW_MIRROR_BISECT_TOLERANCE   0.005f
 
enum  { QUADRIFLOW_REMESH_RATIO = 1 , QUADRIFLOW_REMESH_EDGE_LENGTH , QUADRIFLOW_REMESH_FACES }
 
enum  eSymmetryAxes { SYMMETRY_AXES_X = (1 << 0) , SYMMETRY_AXES_Y = (1 << 1) , SYMMETRY_AXES_Z = (1 << 2) }
 
static const EnumPropertyItem mode_type_items []
 
static bool mesh_is_manifold_consistent (Mesh *mesh)
 
static void quadriflow_free_job (void *customdata)
 
static int quadriflow_break_job (void *customdata)
 
static void quadriflow_update_job (void *customdata, float progress, int *cancel)
 
static Meshremesh_symmetry_bisect (Mesh *mesh, eSymmetryAxes symmetry_axes)
 
static Meshremesh_symmetry_mirror (Object *ob, Mesh *mesh, eSymmetryAxes symmetry_axes)
 
static void quadriflow_start_job (void *customdata, short *stop, short *do_update, float *progress)
 
static void quadriflow_end_job (void *customdata)
 
static int quadriflow_remesh_exec (bContext *C, wmOperator *op)
 
static bool quadriflow_check (bContext *C, wmOperator *op)
 
static bool quadriflow_poll_property (const bContext *C, wmOperator *op, const PropertyRNA *prop)
 
void OBJECT_OT_quadriflow_remesh (wmOperatorType *ot)
 

Macro Definition Documentation

◆ QUADRIFLOW_MIRROR_BISECT_TOLERANCE

#define QUADRIFLOW_MIRROR_BISECT_TOLERANCE   0.005f

Definition at line 638 of file object_remesh.cc.

◆ VOXEL_SIZE_EDIT_MAX_GRIDS_LINES

#define VOXEL_SIZE_EDIT_MAX_GRIDS_LINES   500

Definition at line 218 of file object_remesh.cc.

◆ VOXEL_SIZE_EDIT_MAX_STR_LEN

#define VOXEL_SIZE_EDIT_MAX_STR_LEN   20

Definition at line 219 of file object_remesh.cc.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
QUADRIFLOW_REMESH_RATIO 
QUADRIFLOW_REMESH_EDGE_LENGTH 
QUADRIFLOW_REMESH_FACES 

Definition at line 640 of file object_remesh.cc.

◆ eSymmetryAxes

Enumerator
SYMMETRY_AXES_X 
SYMMETRY_AXES_Y 
SYMMETRY_AXES_Z 

Definition at line 646 of file object_remesh.cc.

Function Documentation

◆ mesh_is_manifold_consistent()

static bool mesh_is_manifold_consistent ( Mesh mesh)
static

◆ OBJECT_OT_quadriflow_remesh()

void OBJECT_OT_quadriflow_remesh ( wmOperatorType ot)

◆ OBJECT_OT_voxel_remesh()

void OBJECT_OT_voxel_remesh ( wmOperatorType ot)

◆ OBJECT_OT_voxel_size_edit()

void OBJECT_OT_voxel_size_edit ( wmOperatorType ot)

◆ object_remesh_poll()

static bool object_remesh_poll ( bContext C)
static

◆ quadriflow_break_job()

static int quadriflow_break_job ( void customdata)
static

Definition at line 740 of file object_remesh.cc.

References G, and QuadriFlowJob::success.

Referenced by quadriflow_update_job().

◆ quadriflow_check()

static bool quadriflow_check ( bContext C,
wmOperator op 
)
static

◆ quadriflow_end_job()

static void quadriflow_end_job ( void customdata)
static

◆ quadriflow_free_job()

static void quadriflow_free_job ( void customdata)
static

Definition at line 733 of file object_remesh.cc.

References MEM_freeN.

Referenced by quadriflow_remesh_exec().

◆ quadriflow_poll_property()

static bool quadriflow_poll_property ( const bContext C,
wmOperator op,
const PropertyRNA prop 
)
static

◆ quadriflow_remesh_exec()

static int quadriflow_remesh_exec ( bContext C,
wmOperator op 
)
static

◆ quadriflow_start_job()

static void quadriflow_start_job ( void customdata,
short *  stop,
short *  do_update,
float progress 
)
static

◆ quadriflow_update_job()

static void quadriflow_update_job ( void customdata,
float  progress,
int *  cancel 
)
static

Called by ocean-bake, wmJob sends notifier.

Definition at line 758 of file object_remesh.cc.

References QuadriFlowJob::do_update, QuadriFlowJob::progress, and quadriflow_break_job().

Referenced by quadriflow_start_job().

◆ remesh_symmetry_bisect()

static Mesh* remesh_symmetry_bisect ( Mesh mesh,
eSymmetryAxes  symmetry_axes 
)
static

◆ remesh_symmetry_mirror()

static Mesh* remesh_symmetry_mirror ( Object ob,
Mesh mesh,
eSymmetryAxes  symmetry_axes 
)
static

◆ voxel_remesh_exec()

static int voxel_remesh_exec ( bContext C,
wmOperator op 
)
static

◆ voxel_size_edit_cancel()

static void voxel_size_edit_cancel ( bContext C,
wmOperator op 
)
static

◆ voxel_size_edit_draw()

static void voxel_size_edit_draw ( const bContext C,
ARegion UNUSEDar,
void arg 
)
static

◆ voxel_size_edit_invoke()

static int voxel_size_edit_invoke ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ voxel_size_edit_modal()

static int voxel_size_edit_modal ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ voxel_size_edit_poll()

static bool voxel_size_edit_poll ( bContext C)
static

Definition at line 611 of file object_remesh.cc.

References C, CTX_wm_region_view3d(), and object_remesh_poll().

Referenced by OBJECT_OT_voxel_size_edit().

◆ voxel_size_parallel_lines_draw()

static void voxel_size_parallel_lines_draw ( uint  pos3d,
const float  initial_co[3],
const float  end_co[3],
const float  length_co[3],
const float  spacing 
)
static

Variable Documentation

◆ mode_type_items

const EnumPropertyItem mode_type_items[]
static
Initial value:
= {
"RATIO",
0,
"Ratio",
"Specify target number of faces relative to the current mesh"},
"EDGE",
0,
"Edge Length",
"Input target edge length in the new mesh"},
{QUADRIFLOW_REMESH_FACES, "FACES", 0, "Faces", "Input target number of faces in the new mesh"},
{0, nullptr, 0, nullptr, nullptr},
}
@ QUADRIFLOW_REMESH_RATIO
@ QUADRIFLOW_REMESH_FACES
@ QUADRIFLOW_REMESH_EDGE_LENGTH

Definition at line 1088 of file object_remesh.cc.

Referenced by OBJECT_OT_quadriflow_remesh().