Blender
V3.3
|
#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) |
#define QUADRIFLOW_MIRROR_BISECT_TOLERANCE 0.005f |
Definition at line 638 of file object_remesh.cc.
#define VOXEL_SIZE_EDIT_MAX_GRIDS_LINES 500 |
Definition at line 218 of file object_remesh.cc.
#define VOXEL_SIZE_EDIT_MAX_STR_LEN 20 |
Definition at line 219 of file object_remesh.cc.
anonymous enum |
Enumerator | |
---|---|
QUADRIFLOW_REMESH_RATIO | |
QUADRIFLOW_REMESH_EDGE_LENGTH | |
QUADRIFLOW_REMESH_FACES |
Definition at line 640 of file object_remesh.cc.
enum eSymmetryAxes |
Enumerator | |
---|---|
SYMMETRY_AXES_X | |
SYMMETRY_AXES_Y | |
SYMMETRY_AXES_Z |
Definition at line 646 of file object_remesh.cc.
Definition at line 675 of file object_remesh.cc.
References BMVert::co, compare_v3v3(), MLoop::e, Mesh::medge, MEM_callocN, MEM_freeN, MEM_malloc_arrayN, mesh, Mesh::mloop, Mesh::mvert, Mesh::totedge, Mesh::totloop, MLoop::v, v1, MEdge::v1, v2, and MEdge::v2.
Referenced by quadriflow_start_job().
void OBJECT_OT_quadriflow_remesh | ( | wmOperatorType * | ot | ) |
Definition at line 1103 of file object_remesh.cc.
References wmOperatorType::check, wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, mode_type_items, wmOperatorType::name, object_remesh_poll(), OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::poll_property, PROP_HIDDEN, PROP_SKIP_SAVE, quadriflow_check(), quadriflow_poll_property(), quadriflow_remesh_exec(), QUADRIFLOW_REMESH_FACES, RNA_def_boolean(), RNA_def_enum(), RNA_def_float(), RNA_def_int(), RNA_def_property_flag(), wmOperatorType::srna, and WM_operator_props_popup_confirm().
Referenced by ED_operatortypes_object().
void OBJECT_OT_voxel_remesh | ( | wmOperatorType * | ot | ) |
Definition at line 196 of file object_remesh.cc.
References wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::name, object_remesh_poll(), OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and voxel_remesh_exec().
Referenced by ED_operatortypes_object().
void OBJECT_OT_voxel_size_edit | ( | wmOperatorType * | ot | ) |
Definition at line 616 of file object_remesh.cc.
References wmOperatorType::cancel, wmOperatorType::description, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, voxel_size_edit_cancel(), voxel_size_edit_invoke(), voxel_size_edit_modal(), and voxel_size_edit_poll().
Referenced by ED_operatortypes_object().
Definition at line 83 of file object_remesh.cc.
References BKE_modifiers_uses_multires(), BKE_object_is_in_editmode(), SculptSession::bm, C, CTX_data_active_object(), CTX_wm_operator_poll_msg_set(), Object::data, ED_operator_object_active_editable_mesh(), ID_IS_LINKED, ID_IS_OVERRIDE_LIBRARY, Object::mode, OB_MODE_SCULPT, and Object::sculpt.
Referenced by OBJECT_OT_quadriflow_remesh(), OBJECT_OT_voxel_remesh(), and voxel_size_edit_poll().
|
static |
Definition at line 740 of file object_remesh.cc.
References G, and QuadriFlowJob::success.
Referenced by quadriflow_update_job().
|
static |
Definition at line 1019 of file object_remesh.cc.
References blender::compositor::area(), BKE_mesh_calc_area(), C, CTX_data_active_object(), Object::data, mesh, Object::mode, wmOperator::ptr, QUADRIFLOW_REMESH_EDGE_LENGTH, QUADRIFLOW_REMESH_RATIO, RNA_enum_get(), RNA_float_get(), RNA_float_set(), RNA_int_set(), and Mesh::totpoly.
Referenced by OBJECT_OT_quadriflow_remesh(), and quadriflow_poll_property().
Definition at line 920 of file object_remesh.cc.
References DEG_id_tag_update(), G_MAIN, Object::id, ID_RECALC_GEOMETRY, QuadriFlowJob::is_nonblocking_job, QuadriFlowJob::owner, RPT_ERROR, RPT_INFO, RPT_WARNING, QuadriFlowJob::success, WM_report(), WM_reportf(), and WM_set_locked_interface().
Referenced by quadriflow_remesh_exec().
Definition at line 733 of file object_remesh.cc.
References MEM_freeN.
Referenced by quadriflow_remesh_exec().
|
static |
Definition at line 1052 of file object_remesh.cc.
References blender::compositor::area(), C, Object::mode, PROP_EDITABLE, wmOperator::ptr, quadriflow_check(), QUADRIFLOW_REMESH_EDGE_LENGTH, QUADRIFLOW_REMESH_FACES, QUADRIFLOW_REMESH_RATIO, RNA_def_property_clear_flag(), RNA_def_property_flag(), RNA_enum_get(), RNA_float_get(), RNA_property_identifier(), STREQ, and STRPREFIX.
Referenced by OBJECT_OT_quadriflow_remesh().
|
static |
Definition at line 949 of file object_remesh.cc.
References BKE_mesh_from_object(), C, CTX_data_active_object(), CTX_data_scene(), CTX_wm_manager(), CTX_wm_window(), wmOperator::flag, QuadriFlowJob::is_nonblocking_job, MEM_mallocN, mesh, NC_GEOM, ND_DATA, OPERATOR_FINISHED, QuadriFlowJob::owner, QuadriFlowJob::preserve_paint_mask, wmOperator::ptr, quadriflow_end_job(), quadriflow_free_job(), quadriflow_start_job(), RNA_boolean_get(), RNA_int_get(), QuadriFlowJob::scene, QuadriFlowJob::seed, QuadriFlowJob::smooth_normals, Mesh::symmetry, QuadriFlowJob::symmetry_axes, QuadriFlowJob::target_faces, QuadriFlowJob::use_mesh_curvature, QuadriFlowJob::use_mesh_symmetry, QuadriFlowJob::use_preserve_boundary, QuadriFlowJob::use_preserve_sharp, WM_JOB_PROGRESS, WM_JOB_TYPE_QUADRIFLOW_REMESH, WM_jobs_callbacks(), WM_jobs_customdata_set(), WM_jobs_get(), WM_jobs_start(), WM_jobs_timer(), and WM_set_locked_interface().
Referenced by OBJECT_OT_quadriflow_remesh().
|
static |
Definition at line 835 of file object_remesh.cc.
References BKE_id_free(), BKE_mesh_batch_cache_dirty_tag(), BKE_MESH_BATCH_DIRTY_ALL, BKE_mesh_copy_for_eval(), BKE_mesh_nomain_to_mesh(), BKE_mesh_remesh_quadriflow(), BKE_mesh_remesh_reproject_paint_mask(), BKE_mesh_runtime_clear_geometry(), BKE_mesh_smooth_flag_set(), BKE_sculpt_ensure_orig_mesh_data(), CD_MASK_MESH, Object::data, QuadriFlowJob::do_update, ED_sculpt_undo_geometry_begin(), ED_sculpt_undo_geometry_end(), G, QuadriFlowJob::is_nonblocking_job, mesh, mesh_is_manifold_consistent(), Object::mode, OB_MODE_SCULPT, QuadriFlowJob::owner, QuadriFlowJob::preserve_paint_mask, QuadriFlowJob::progress, quadriflow_update_job(), remesh_symmetry_bisect(), remesh_symmetry_mirror(), QuadriFlowJob::scene, QuadriFlowJob::seed, QuadriFlowJob::smooth_normals, QuadriFlowJob::stop, QuadriFlowJob::success, QuadriFlowJob::symmetry_axes, QuadriFlowJob::target_faces, QuadriFlowJob::use_mesh_curvature, QuadriFlowJob::use_mesh_symmetry, QuadriFlowJob::use_preserve_boundary, and QuadriFlowJob::use_preserve_sharp.
Referenced by quadriflow_remesh_exec().
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().
|
static |
Definition at line 773 of file object_remesh.cc.
References BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_mesh_mirror_bisect_on_mirror_plane_for_modifier(), MirrorModifierData::flag, mesh, MOD_MIR_BISECT_AXIS_X, QUADRIFLOW_MIRROR_BISECT_TOLERANCE, MirrorModifierData::tolerance, and zero_v3().
Referenced by quadriflow_start_job().
|
static |
Definition at line 807 of file object_remesh.cc.
References BKE_id_free(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), MirrorModifierData::flag, mesh, MOD_MIR_AXIS_X, QUADRIFLOW_MIRROR_BISECT_TOLERANCE, and MirrorModifierData::tolerance.
Referenced by quadriflow_start_job().
|
static |
Definition at line 115 of file object_remesh.cc.
References BKE_id_free(), BKE_mesh_batch_cache_dirty_tag(), BKE_MESH_BATCH_DIRTY_ALL, BKE_mesh_nomain_to_mesh(), BKE_mesh_remesh_reproject_paint_mask(), BKE_mesh_remesh_voxel(), BKE_mesh_remesh_voxel_fix_poles(), BKE_mesh_runtime_clear_geometry(), BKE_mesh_smooth_flag_set(), BKE_remesh_reproject_sculpt_face_sets(), BKE_remesh_reproject_vertex_paint(), BKE_report(), BKE_sculpt_ensure_orig_mesh_data(), BKE_shrinkwrap_remesh_target_project(), C, CD_MASK_MESH, CTX_data_active_object(), CTX_data_scene(), Object::data, DEG_id_tag_update(), ED_sculpt_undo_geometry_begin(), ED_sculpt_undo_geometry_end(), Mesh::flag, MPoly::flag, Object::id, ID_RECALC_GEOMETRY, ME_REMESH_FIX_POLES, ME_REMESH_REPROJECT_PAINT_MASK, ME_REMESH_REPROJECT_SCULPT_FACE_SETS, ME_REMESH_REPROJECT_VERTEX_COLORS, ME_REMESH_REPROJECT_VOLUME, ME_SMOOTH, mesh, Object::mode, Mesh::mpoly, wmOperatorType::name, NC_GEOM, ND_DATA, OB_MODE_SCULPT, OPERATOR_CANCELLED, OPERATOR_FINISHED, Mesh::remesh_voxel_adaptivity, Mesh::remesh_voxel_size, wmOperator::reports, RPT_ERROR, Mesh::totpoly, wmOperator::type, and WM_event_add_notifier().
Referenced by OBJECT_OT_voxel_remesh().
|
static |
Definition at line 370 of file object_remesh.cc.
References C, CTX_wm_region(), wmOperator::customdata, VoxelSizeEditCustomData::draw_handle, ED_region_draw_cb_exit(), ED_workspace_status_text(), MEM_freeN, and ARegion::type.
Referenced by OBJECT_OT_voxel_size_edit(), and voxel_size_edit_modal().
Definition at line 286 of file object_remesh.cc.
References Freestyle::a, VoxelSizeEditCustomData::active_object, usdtokens::b(), B_UNIT_LENGTH, BKE_unit_value_as_string(), BLF_color3f(), BLF_draw(), BLF_position(), BLF_size(), BLF_width_and_height(), BLI_strlen_utf8(), C, clamp_f(), CTX_data_scene(), GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_line_smooth(), GPU_line_width(), GPU_matrix_mul, GPU_matrix_pop(), GPU_matrix_push(), GPU_PRIM_LINES, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniformColor4f(), immVertex3fv(), immVertexFormat(), len_v3v3(), Object::obmat, uiFontStyle::points, VoxelSizeEditCustomData::preview_plane, UnitSettings::scale_length, scene, str, VoxelSizeEditCustomData::text_mat, UI_style_get(), uiFontStyle::uifont_id, Scene::unit, VoxelSizeEditCustomData::voxel_size, VOXEL_SIZE_EDIT_MAX_GRIDS_LINES, VOXEL_SIZE_EDIT_MAX_STR_LEN, voxel_size_parallel_lines_draw(), uiStyle::widget, and x.
Referenced by voxel_size_edit_invoke().
|
static |
Definition at line 451 of file object_remesh.cc.
References BKE_mesh_boundbox_get(), C, copy_m3_m4(), copy_v3_v3(), CTX_data_active_object(), CTX_wm_region(), CTX_wm_region_view3d(), wmOperator::customdata, Object::data, dot_v2v2(), dot_v3v3(), VoxelSizeEditCustomData::draw_handle, ED_region_draw_cb_activate(), ED_region_tag_redraw(), ED_view3d_pixel_size(), ED_view3d_project_v2(), ED_workspace_status_text(), fabsf, Object::imat, invert_m4_m4(), invert_v3(), mat4_to_size(), mesh, mid_v3_v3v3(), mul_m3_v3(), mul_m4_m4_post(), mul_m4_m4_pre(), mul_v3_fl(), mul_v3_m4v3(), normal_tri_v3(), normalize_v2(), normalize_v3(), Object::obmat, OPERATOR_RUNNING_MODAL, REGION_DRAW_POST_VIEW, Mesh::remesh_voxel_size, scale_m4_fl(), size_to_mat4(), sub_v2_v2v2(), sub_v3_v3v3(), TIP_, ARegion::type, unit_m4(), BoundBox::vec, RegionView3D::viewinv, voxel_size_edit_draw(), and WM_event_add_modal_handler().
Referenced by OBJECT_OT_voxel_size_edit().
|
static |
Definition at line 382 of file object_remesh.cc.
References VoxelSizeEditCustomData::active_object, C, clamp_f(), copy_v2_v2(), CTX_wm_region(), wmOperator::customdata, Object::data, VoxelSizeEditCustomData::draw_handle, ED_region_draw_cb_exit(), ED_region_tag_redraw(), ED_workspace_status_text(), EVT_ESCKEY, EVT_LEFTSHIFTKEY, EVT_PADENTER, EVT_RETKEY, float(), if(), VoxelSizeEditCustomData::init_mval, VoxelSizeEditCustomData::init_voxel_size, KM_CTRL, KM_PRESS, KM_RELEASE, LEFTMOUSE, MEM_freeN, mesh, min_ff(), wmEvent::modifier, wmEvent::mval, NC_GEOM, ND_DATA, OPERATOR_FINISHED, OPERATOR_RUNNING_MODAL, pow2f(), Mesh::remesh_voxel_size, RIGHTMOUSE, VoxelSizeEditCustomData::slow_mode, VoxelSizeEditCustomData::slow_mval, VoxelSizeEditCustomData::slow_voxel_size, ARegion::type, wmEvent::type, wmEvent::val, VoxelSizeEditCustomData::voxel_size, voxel_size_edit_cancel(), and WM_event_add_notifier().
Referenced by OBJECT_OT_voxel_size_edit().
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().
|
static |
Definition at line 239 of file object_remesh.cc.
References add_v3_v3v3(), GPU_PRIM_LINES, immBegin(), immEnd(), immVertex3fv(), len_v3v3(), madd_v3_v3v3fl(), mid_v3_v3v3(), mul_v3_fl(), normalize_v3(), sub_v3_v3v3(), and VOXEL_SIZE_EDIT_MAX_GRIDS_LINES.
Referenced by voxel_size_edit_draw().
|
static |
Definition at line 1088 of file object_remesh.cc.
Referenced by OBJECT_OT_quadriflow_remesh().