|
Blender V5.0
|
#include "MEM_guardedalloc.h"#include "DNA_mesh_types.h"#include "DNA_object_types.h"#include "BLI_map.hh"#include "BLI_math_geom.h"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "BLI_memarena.h"#include "BLI_ordered_edge.hh"#include "BLI_string_utf8.h"#include "BLT_translation.hh"#include "BKE_attribute.hh"#include "BKE_bvhutils.hh"#include "BKE_mesh.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_modifier.hh"#include "ED_armature.hh"#include "ED_mesh.hh"#include "ED_object_vgroup.hh"#include "eigen_capi.h"#include "meshlaplacian.h"#include <algorithm>Go to the source code of this file.
Classes | |
| struct | LaplacianSystem |
| struct | LaplacianSystem::HeatWeighting |
| struct | BVHCallbackUserData |
| struct | MDefBoundIsect |
| struct | MDefBindInfluence |
| struct | MeshDeformBind |
| struct | MeshDeformIsect |
| struct | MeshRayCallbackData |
Macros | |
| #define | C_WEIGHT 1.0f |
| #define | WEIGHT_LIMIT_START 0.05f |
| #define | WEIGHT_LIMIT_END 0.025f |
| #define | DISTANCE_EPSILON 1e-4f |
| #define | EPSILON 0.0001f |
| #define | MESHDEFORM_TAG_UNTYPED 0 |
| #define | MESHDEFORM_TAG_BOUNDARY 1 |
| #define | MESHDEFORM_TAG_INTERIOR 2 |
| #define | MESHDEFORM_TAG_EXTERIOR 3 |
| #define | MESHDEFORM_LEN_THRESHOLD 1e-6f |
| #define | MESHDEFORM_MIN_INFLUENCE 0.0005f |
Variables | |
| static const int | MESHDEFORM_OFFSET [7][3] |
Algorithms using the mesh laplacian.
Definition in file meshlaplacian.cc.
| #define C_WEIGHT 1.0f |
Definition at line 357 of file meshlaplacian.cc.
Referenced by heat_set_H().
| #define DISTANCE_EPSILON 1e-4f |
Definition at line 360 of file meshlaplacian.cc.
Referenced by heat_source_closest().
| #define EPSILON 0.0001f |
Definition at line 844 of file meshlaplacian.cc.
| #define MESHDEFORM_LEN_THRESHOLD 1e-6f |
minimum length for MDefBoundIsect.len
Definition at line 852 of file meshlaplacian.cc.
Referenced by meshdeform_ray_tree_intersect().
| #define MESHDEFORM_MIN_INFLUENCE 0.0005f |
Definition at line 854 of file meshlaplacian.cc.
Referenced by BKE_modifier_mdef_compact_influences(), and meshdeform_matrix_solve().
| #define MESHDEFORM_TAG_BOUNDARY 1 |
Definition at line 847 of file meshlaplacian.cc.
Referenced by meshdeform_add_intersections(), and meshdeform_bind_floodfill().
| #define MESHDEFORM_TAG_EXTERIOR 3 |
Definition at line 849 of file meshlaplacian.cc.
Referenced by meshdeform_bind_floodfill(), meshdeform_check_semibound(), meshdeform_matrix_add_cell(), meshdeform_matrix_add_exterior_phi(), meshdeform_matrix_add_rhs(), and meshdeform_matrix_solve().
| #define MESHDEFORM_TAG_INTERIOR 2 |
Definition at line 848 of file meshlaplacian.cc.
Referenced by meshdeform_bind_floodfill(), and meshdeform_matrix_solve().
| #define MESHDEFORM_TAG_UNTYPED 0 |
Definition at line 846 of file meshlaplacian.cc.
Referenced by harmonic_coordinates_bind(), and meshdeform_bind_floodfill().
| #define WEIGHT_LIMIT_END 0.025f |
Definition at line 359 of file meshlaplacian.cc.
Referenced by heat_limit_weight().
| #define WEIGHT_LIMIT_START 0.05f |
Definition at line 358 of file meshlaplacian.cc.
Referenced by heat_limit_weight().
|
static |
Definition at line 368 of file meshlaplacian.cc.
References data, BVHTreeRayHit::dist, dot_v3v3(), float, BVHTreeRayHit::index, BVHTreeRay::isect_precalc, isect_ray_tri_v3(), isect_ray_tri_watertight_v3(), normal_tri_v3(), UNPACK3, UNUSED_VARS, and verts.
Referenced by heat_ray_source_visible().
| void ED_mesh_deform_bind_callback | ( | Object * | object, |
| MeshDeformModifierData * | mmd, | ||
| Mesh * | cagemesh, | ||
| float * | vertexcos, | ||
| int | verts_num, | ||
| float | cagemat[4][4] ) |
Definition at line 1748 of file meshlaplacian.cc.
References MeshDeformModifierData::bindcagecos, MeshDeformModifierData::bindcagecos_sharing_info, MeshDeformModifierData::bindmat, BKE_mesh_wrapper_ensure_mdata(), BKE_modifier_get_original(), BKE_modifier_mdef_compact_influences(), MeshDeformBind::cage_verts_num, MeshDeformModifierData::cage_verts_num, MeshDeformBind::cagecos, MeshDeformBind::cagemat, MeshDeformBind::cagemesh, copy_m4_m4(), copy_v3_v3(), end_progress_bar(), harmonic_coordinates_bind(), blender::implicit_sharing::info_for_mem_free(), MEM_callocN(), MEM_freeN(), MeshDeformModifierData::modifier, mul_m4_v3(), mul_v3_m4v3(), MeshDeformModifierData::object, start_progress_bar(), MeshDeformBind::vertexcos, Mesh::verts_num, MeshDeformBind::verts_num, MeshDeformModifierData::verts_num, and waitcursor().
Referenced by blender::ed::object::meshdeform_bind_exec().
|
static |
Definition at line 46 of file meshlaplacian.cc.
Referenced by ED_mesh_deform_bind_callback().
|
static |
Definition at line 47 of file meshlaplacian.cc.
Referenced by __attribute__(), add_verts_to_dgroups(), blender::animrig::apply_keyingset(), blender::ed::sculpt_paint::trim::apply_trim(), blender::gpu::MTLShader::bake_compute_pipeline_state(), blender::gpu::MTLShader::bake_pipeline_state(), Freestyle::BezierCurve::BezierCurve(), Freestyle::StrokeShaders::BezierCurveShader::BezierCurveShader(), Freestyle::Operators::bidirectionalChain(), Freestyle::Operators::bidirectionalChain(), BKE_path_template_error_to_string(), BKE_ptcache_write(), BKE_report_path_template_errors(), BKE_tracking_reconstruction_solve(), BLI_bitmap_draw_2d_line_v2v2i(), BLI_delete_soft(), BLI_file_alias_target(), BLI_file_attributes(), blo_do_versions_280(), bm_edges_sort_winding(), BMO_op_vinitf(), bpy_file_path_map(), bpy_user_map(), Freestyle::Operators::chain(), Freestyle::Operators::chain(), BlenderSession::check_and_report_session_error(), blender::gpu::shader::ShaderCreateInfo::check_error(), blender::gpu::debug::check_gl_error(), clean_tracks_exec(), blender::gpu::ShaderCompiler::compile(), compute_alignment(), copypose_error(), correctivesmooth_modifier_do(), Freestyle::Operators::create(), CubeTriangleIsect::CubeTriangleIsect(), blender::draw::curves_sub_pass_setup_implementation(), blender::draw::overlay::Sculpts::curves_sync(), blender::gpu::MTLContext::debug_capture_begin(), GHOST_XrContext::dispatchErrorMessage(), blender::ed::space_node::draw_link_errors(), dynamicPaint_createUVSurface(), ED_scene_fps_average_calc(), egl_chk(), egl_print_error(), blender::bke::tests::error_to_string(), blender::bke::tests::errors_to_string(), libmv::euclidean_resection::EuclideanResectionPPnP(), eval_template(), expr_pylike_error_test(), film_adaptive_sampling_convergence_check(), filtcolum(), blender::gpu::MTLShader::finalize(), blender::gpu::shader::ShaderCreateInfo::finalize(), blender::geometry::fit_poly_to_bezier_curves(), Freestyle::FitCurveWrapper::FitCubic(), Freestyle::FitCurveWrapper::FitCurve(), Freestyle::FitCurveWrapper::FitCurve(), generate_nsimage_for_file(), blender::animrig::CombinedKeyingResult::generate_reports(), blender::gpu::MTLContextComputeUtils::get_buffer_clear_pso(), get_egl_error_enum_string(), get_egl_error_message_string(), get_limit_motor_info2(), GHOST_NDOFManagerCocoa::GHOST_NDOFManagerCocoa(), GPU_material_from_nodetree(), GPU_offscreen_create(), GPU_shader_create_info_check_error(), blender::gpu::tests::GPU_TEST(), blender::gpu::tests::GPU_TEST(), blender::gpu::tests::GPU_TEST(), blender::gpu::tests::GPU_TEST(), blender::gpu::tests::GPU_TEST(), handleNumInput(), blender::io::ply::import_ply_data(), blender::gpu::GPUSource::init_dependencies(), GHOST_ContextEGL::initializeDrawingContext(), GHOST_ContextWGL::initializeDrawingContext(), DenoiseImage::load(), blender::io::ply::load_edge_element(), DenoiseImage::load_previous(), blender::io::ply::load_vertex_element(), main(), make_renderinfo_string(), MemorY_ErroR(), merge_pixels(), meshdeform_matrix_solve(), libmv::Dogleg< Function, Jacobian, Solver >::minimize(), libmv::LevenbergMarquardt< Function, Jacobian, Solver >::minimize(), modify_mesh(), blender::ed::space_node::node_add_error_message_button(), blender::nodes::node_geo_boolean_cc::node_geo_exec(), blender::nodes::node_geo_realize_instances_cc::node_geo_exec(), blender::draw::external::Prepass::object_sync(), blender::draw::overlay::Outline::object_sync(), blender::draw::overlay::Prepass::object_sync(), open_images(), blender::nodes::node_composite_file_output_cc::output_path_layout(), DenoiseImage::parse_channels(), parse_channels(), blender::ed::greasepencil::polyline_detect_corners(), blender::ed::greasepencil::polyline_fit_curve(), blender::gpu::present(), blender::gpu::Shader::print_log(), ptcache_basic_header_read(), ptcache_disk_frame_to_mem(), ptcache_file_header_begin_read(), ptcache_mem_frame_to_disk(), ptcache_read_stream(), ptcache_write(), ptcache_write_stream(), pygpu_batch_draw(), pygpu_shader_create_from_info(), pyop_poll_message_get_fn(), pyrna_func_error_prefix(), quad_calc_error(), reconstruct_retrieve_libmv_tracks(), rna_def_function(), RNA_def_property(), RNA_def_property_srna(), RNA_def_struct_ptr(), DenoiseImage::save_output(), save_output(), blender::ed::vse::sequencer_add_effect_strip_exec(), Freestyle::Operators::sequentialSplit(), Freestyle::Operators::sequentialSplit(), Denoiser::set_error(), Device::set_error(), blender::eevee::store_node_tree_errors(), blender::gpu::MTLCommandBufferManager::submit(), surfaceGenerateGrid(), blender::eevee::SyncModule::sync_curves(), mv::TEST(), mv::TEST(), mv::TEST(), mv::TEST(), mv::TEST(), mv::TEST(), blender::gpu::tests::test_preprocess_default_arguments(), blender::gpu::tests::test_preprocess_parser(), blender::gpu::tests::test_preprocess_reference(), blender::gpu::tests::test_preprocess_resource_guard(), blender::gpu::tests::test_preprocess_stage_attribute(), blender::gpu::tests::test_preprocess_struct_methods(), blender::gpu::tests::test_preprocess_swizzle(), blender::gpu::tests::test_preprocess_template(), blender::gpu::tests::test_preprocess_template_struct(), blender::gpu::tests::test_preprocess_unroll(), btDeformableLagrangianForce::testDerivative(), btDeformableLagrangianForce::testHessian(), ui_number_from_string_units(), UI_ThemeGetColorPtr(), ui_tooltip_data_from_button_or_extra_icon(), libmv::Dogleg< Function, Jacobian, Solver >::Update(), libmv::LevenbergMarquardt< Function, Jacobian, Solver >::Update(), iTaSC::Distance::updateControlOutput(), and wm_xr_error_handler().
|
static |
Definition at line 1577 of file meshlaplacian.cc.
References b, MeshDeformModifierData::bindweights, BLI_memarena_free(), BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, BLI_memarena_use_calloc(), MeshDeformBind::boundisect, MeshDeformBind::bvhdata, MeshDeformBind::bvhtree, MeshDeformBind::cage_verts_num, MeshDeformBind::cagecos, MeshDeformBind::cagemesh, MeshDeformBind::cagemesh_cache, copy_v3_v3(), MeshDeformBind::corner_tris, MeshDeformBind::corner_verts, MeshDeformModifierData::dyncellmin, MeshDeformModifierData::dyncellwidth, MeshDeformBind::dyngrid, MeshDeformModifierData::dyngrid, MeshDeformModifierData::dyngrid_sharing_info, MeshDeformModifierData::dyngridsize, MeshDeformModifierData::dyninfluences, MeshDeformModifierData::dyninfluences_sharing_info, MeshDeformModifierData::dynverts, MeshDeformModifierData::dynverts_sharing_info, MeshDeformBind::face_normals, MeshDeformBind::faces, MeshDeformModifierData::flag, MeshDeformModifierData::gridsize, MeshDeformBind::halfwidth, MDefCell::influences_num, MeshDeformModifierData::influences_num, blender::implicit_sharing::info_for_mem_free(), INIT_MINMAX, MeshDeformBind::inside, MeshDeformBind::max, MEM_calloc_arrayN(), MEM_callocN(), MEM_freeN(), MeshDeformBind::memarena, meshdeform_add_intersections(), meshdeform_bind_floodfill(), meshdeform_check_semibound(), meshdeform_inside_cage(), meshdeform_matrix_solve(), MESHDEFORM_TAG_UNTYPED, MeshDeformBind::min, minmax_v3v3_v3(), MOD_MDEF_DYNAMIC_BIND, MDefBindInfluence::next, MDefCell::offset, MeshDeformBind::phi, progress_bar(), MeshDeformBind::semibound, MeshDeformBind::size, MeshDeformBind::size3, MeshDeformBind::tag, MeshDeformBind::totalphi, blender::bke::BVHTreeFromMesh::tree, MeshDeformBind::tri_faces, MDefBindInfluence::vertex, MDefInfluence::vertex, MeshDeformBind::vertexcos, MeshDeformBind::verts_num, MDefBindInfluence::weight, MDefInfluence::weight, MeshDeformBind::weights, MeshDeformBind::width, x, y, and z().
Referenced by ED_mesh_deform_bind_callback().
|
static |
Definition at line 943 of file meshlaplacian.cc.
References MeshDeformBind::cagecos, MeshDeformBind::cagemesh_cache, BVHTreeRayHit::co, copy_v3_v3(), MeshDeformBind::corner_tris, MeshDeformBind::corner_verts, data, BVHTreeRay::direction, BVHTreeRayHit::dist, dot_v3v3(), MeshDeformBind::face_normals, BVHTreeRayHit::index, blender::Span< T >::is_empty(), MeshDeformIsect::isect, BVHTreeRay::isect_precalc, isect_ray_tri_watertight_v3(), MeshDeformIsect::lambda, madd_v3_v3v3fl(), normal_tri_v3(), BVHTreeRay::origin, MeshDeformBind::tri_faces, UNPACK3, and MeshDeformIsect::vec_length.
Referenced by meshdeform_ray_tree_intersect().
| void heat_bone_weighting | ( | Object * | ob, |
| Mesh * | mesh, | ||
| float(*) | verts[3], | ||
| int | numbones, | ||
| bDeformGroup ** | dgrouplist, | ||
| bDeformGroup ** | dgroupflip, | ||
| float(*) | root[3], | ||
| float(*) | tip[3], | ||
| const bool * | selected, | ||
| const char ** | r_error_str ) |
Definition at line 626 of file meshlaplacian.cc.
References Geometry::attributes, LaplacianSystem::HeatWeighting::corner_tris, blender::bke::mesh::corner_tris_calc(), LaplacianSystem::HeatWeighting::corner_verts, Mesh::corners_num, Mesh::editflag, blender::bke::Face, faces, Mesh::faces_num, LaplacianSystem::HeatWeighting::H, LaplacianSystem::heat, heat_laplacian_create(), heat_limit_weight(), heat_ray_tree_create(), heat_source_closest(), heat_system_free(), i, laplacian_add_right_hand_side(), laplacian_begin_solve(), laplacian_system_construct_begin(), laplacian_system_construct_end(), laplacian_system_delete(), laplacian_system_get_solution(), laplacian_system_solve(), blender::bke::AttributeAccessor::lookup_or_default(), mask(), ME_EDIT_MIRROR_TOPO, ME_EDIT_PAINT_FACE_SEL, ME_EDIT_PAINT_VERT_SEL, MEM_calloc_arrayN(), MEM_freeN(), MEM_mallocN(), mesh_get_x_mirror_vert(), Object::mode, N_, LaplacianSystem::HeatWeighting::numsource, OB_MODE_WEIGHT_PAINT, LaplacianSystem::HeatWeighting::p, blender::bke::Point, poly_to_tri_count(), LaplacianSystem::HeatWeighting::root, blender::Span< T >::slice(), LaplacianSystem::HeatWeighting::tip, LaplacianSystem::HeatWeighting::tris_num, LaplacianSystem::HeatWeighting::verts, verts, LaplacianSystem::HeatWeighting::verts_num, Mesh::verts_num, blender::ed::object::vgroup_vert_add(), blender::ed::object::vgroup_vert_remove(), blender::ed::object::vgroup_vert_weight(), WEIGHT_ADD, and WEIGHT_REPLACE.
Referenced by add_verts_to_dgroups().
|
static |
Definition at line 541 of file meshlaplacian.cc.
References LaplacianSystem::faces, LaplacianSystem::heat, MEM_callocN(), normalize_v3(), v2, LaplacianSystem::HeatWeighting::vert_normals, and LaplacianSystem::verts_num.
Referenced by heat_laplacian_create().
|
static |
Definition at line 566 of file meshlaplacian.cc.
References LaplacianSystem::HeatWeighting::corner_tris, LaplacianSystem::HeatWeighting::corner_verts, LaplacianSystem::HeatWeighting::H, LaplacianSystem::heat, heat_calc_vnormals(), heat_set_H(), laplacian_add_triangle(), laplacian_add_vertex(), MEM_calloc_arrayN(), LaplacianSystem::HeatWeighting::mindist, LaplacianSystem::HeatWeighting::p, LaplacianSystem::HeatWeighting::tris_num, UNPACK3, LaplacianSystem::HeatWeighting::verts, and LaplacianSystem::HeatWeighting::verts_num.
Referenced by heat_bone_weighting().
Definition at line 612 of file meshlaplacian.cc.
References WEIGHT_LIMIT_END, and WEIGHT_LIMIT_START.
Referenced by heat_bone_weighting().
|
static |
Definition at line 439 of file meshlaplacian.cc.
References BLI_bvhtree_ray_cast(), bvh_callback(), LaplacianSystem::HeatWeighting::bvhtree, closest_to_line_segment_v3(), copy_v3_v3(), data, BVHTreeRayHit::dist, e, LaplacianSystem::heat, BVHTreeRayHit::index, madd_v3_v3v3fl(), mul_v3_fl(), normalize_v3(), LaplacianSystem::HeatWeighting::root, sub_v3_v3v3(), LaplacianSystem::HeatWeighting::tip, LaplacianSystem::HeatWeighting::verts, and LaplacianSystem::HeatWeighting::vltree.
Referenced by heat_source_closest().
|
static |
Definition at line 401 of file meshlaplacian.cc.
References BLI_bvhtree_balance(), BLI_bvhtree_insert(), BLI_bvhtree_new(), LaplacianSystem::HeatWeighting::bvhtree, LaplacianSystem::HeatWeighting::corner_tris, LaplacianSystem::HeatWeighting::corner_verts, float, LaplacianSystem::heat, INIT_MINMAX, MEM_callocN(), minmax_v3v3_v3(), LaplacianSystem::HeatWeighting::tris_num, LaplacianSystem::HeatWeighting::verts, verts, LaplacianSystem::HeatWeighting::verts_num, and LaplacianSystem::HeatWeighting::vltree.
Referenced by heat_bone_weighting().
|
static |
Definition at line 504 of file meshlaplacian.cc.
References C_WEIGHT, LaplacianSystem::HeatWeighting::H, LaplacianSystem::heat, heat_source_closest(), heat_source_distance(), max_ff(), LaplacianSystem::HeatWeighting::mindist, LaplacianSystem::HeatWeighting::numsource, and LaplacianSystem::HeatWeighting::p.
Referenced by heat_laplacian_create().
|
static |
Definition at line 489 of file meshlaplacian.cc.
References DISTANCE_EPSILON, heat_ray_source_visible(), and heat_source_distance().
Referenced by heat_bone_weighting(), and heat_set_H().
|
static |
Definition at line 472 of file meshlaplacian.cc.
References closest(), closest_to_line_segment_v3(), dot_v3v3(), LaplacianSystem::heat, normalize_v3(), LaplacianSystem::HeatWeighting::root, sub_v3_v3v3(), LaplacianSystem::HeatWeighting::tip, LaplacianSystem::HeatWeighting::vert_normals, and LaplacianSystem::HeatWeighting::verts.
Referenced by heat_set_H(), and heat_source_closest().
|
static |
Definition at line 600 of file meshlaplacian.cc.
References BLI_bvhtree_free(), LaplacianSystem::HeatWeighting::bvhtree, LaplacianSystem::HeatWeighting::corner_tris, LaplacianSystem::HeatWeighting::H, LaplacianSystem::heat, MEM_freeN(), LaplacianSystem::HeatWeighting::mindist, LaplacianSystem::HeatWeighting::p, LaplacianSystem::HeatWeighting::vert_normals, and LaplacianSystem::HeatWeighting::vltree.
Referenced by heat_bone_weighting().
| void laplacian_add_right_hand_side | ( | LaplacianSystem * | sys, |
| int | v, | ||
| float | value ) |
Definition at line 334 of file meshlaplacian.cc.
References LaplacianSystem::context, EIG_linear_solver_right_hand_side_add(), and v.
Referenced by heat_bone_weighting().
| void laplacian_add_triangle | ( | LaplacianSystem * | sys, |
| int | v1, | ||
| int | v2, | ||
| int | v3 ) |
Definition at line 233 of file meshlaplacian.cc.
References LaplacianSystem::faces, LaplacianSystem::faces_num, and v2.
Referenced by heat_laplacian_create().
| void laplacian_add_vertex | ( | LaplacianSystem * | sys, |
| float * | co, | ||
| int | pinned ) |
Definition at line 226 of file meshlaplacian.cc.
References LaplacianSystem::verts, LaplacianSystem::verts_num, and LaplacianSystem::vpinned.
Referenced by heat_laplacian_create().
| void laplacian_begin_solve | ( | LaplacianSystem * | sys, |
| int | index ) |
Definition at line 316 of file meshlaplacian.cc.
References LaplacianSystem::context, EIG_linear_solver_variable_lock(), EIG_linear_solver_variable_set(), LaplacianSystem::variablesdone, LaplacianSystem::verts, LaplacianSystem::verts_num, and LaplacianSystem::vpinned.
Referenced by heat_bone_weighting(), and laplacian_system_construct_end().
|
static |
Definition at line 110 of file meshlaplacian.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), and v2.
Referenced by laplacian_triangle_weights().
|
static |
Definition at line 103 of file meshlaplacian.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_or_modify(), and v2.
Referenced by laplacian_system_construct_end().
|
static |
Definition at line 198 of file meshlaplacian.cc.
References LaplacianSystem::areaweights, LaplacianSystem::context, EIG_linear_least_squares_solver_new(), EIG_linear_solver_new(), LaplacianSystem::faces, LaplacianSystem::faces_num, MEM_calloc_arrayN(), MEM_callocN(), LaplacianSystem::storeweights, LaplacianSystem::verts, LaplacianSystem::verts_num, and LaplacianSystem::vpinned.
Referenced by heat_bone_weighting().
|
static |
Definition at line 241 of file meshlaplacian.cc.
References LaplacianSystem::areaweights, LaplacianSystem::context, LaplacianSystem::edgehash, EIG_linear_solver_matrix_add(), LaplacianSystem::faces, LaplacianSystem::faces_num, LaplacianSystem::fweights, LaplacianSystem::HeatWeighting::H, LaplacianSystem::heat, laplacian_begin_solve(), laplacian_increase_edge_count(), laplacian_triangle_area(), laplacian_triangle_weights(), MEM_calloc_arrayN(), MEM_callocN(), MEM_freeN(), MEM_SAFE_FREE, Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve(), LaplacianSystem::storeweights, LaplacianSystem::varea, and LaplacianSystem::verts_num.
Referenced by heat_bone_weighting().
|
static |
Definition at line 294 of file meshlaplacian.cc.
References LaplacianSystem::context, EIG_linear_solver_delete(), LaplacianSystem::faces, LaplacianSystem::fweights, MEM_freeN(), LaplacianSystem::varea, LaplacianSystem::verts, and LaplacianSystem::vpinned.
Referenced by heat_bone_weighting().
| float laplacian_system_get_solution | ( | LaplacianSystem * | sys, |
| int | v ) |
Definition at line 348 of file meshlaplacian.cc.
References LaplacianSystem::context, EIG_linear_solver_variable_get(), and v.
Referenced by heat_bone_weighting().
| int laplacian_system_solve | ( | LaplacianSystem * | sys | ) |
Definition at line 339 of file meshlaplacian.cc.
References LaplacianSystem::context, EIG_linear_solver_solve(), and LaplacianSystem::variablesdone.
Referenced by heat_bone_weighting().
|
static |
Definition at line 117 of file meshlaplacian.cc.
References angle_v3v3v3(), area_tri_v3(), cotangent_tri_weight_v3(), DEG2RADF, len_v3v3(), v2, LaplacianSystem::varea, and LaplacianSystem::verts.
Referenced by laplacian_system_construct_end().
|
static |
Definition at line 163 of file meshlaplacian.cc.
References LaplacianSystem::context, cotangent_tri_weight_v3(), LaplacianSystem::edgehash, EIG_linear_solver_matrix_add(), LaplacianSystem::fweights, laplacian_edge_count(), LaplacianSystem::storeweights, v2, LaplacianSystem::varea, and LaplacianSystem::verts.
Referenced by laplacian_system_construct_end().
|
static |
Definition at line 1123 of file meshlaplacian.cc.
References MeshDeformBind::boundisect, i, meshdeform_cell_center(), meshdeform_index(), meshdeform_ray_tree_intersect(), MESHDEFORM_TAG_BOUNDARY, MeshDeformBind::tag, x, y, and z().
Referenced by harmonic_coordinates_bind().
|
static |
Definition at line 1148 of file meshlaplacian.cc.
References b, MeshDeformBind::boundisect, i, MEM_calloc_arrayN(), MEM_freeN(), meshdeform_index(), MESHDEFORM_TAG_BOUNDARY, MESHDEFORM_TAG_EXTERIOR, MESHDEFORM_TAG_INTERIOR, MESHDEFORM_TAG_UNTYPED, printf, MeshDeformBind::semibound, MeshDeformBind::size, size(), MeshDeformBind::size3, and MeshDeformBind::tag.
Referenced by harmonic_coordinates_bind().
|
static |
Definition at line 1216 of file meshlaplacian.cc.
References MeshDeformBind::cagemesh_cache, MeshDeformBind::corner_verts, MDefBoundIsect::face_index, MeshDeformBind::faces, i, MDefBoundIsect::poly_weights, and blender::IndexRange::size().
Referenced by meshdeform_matrix_add_rhs(), and meshdeform_matrix_add_semibound_phi().
|
static |
Definition at line 1309 of file meshlaplacian.cc.
References MeshDeformBind::boundisect, i, MDefBoundIsect::len, meshdeform_index(), MeshDeformBind::semibound, MeshDeformBind::width, x, y, and z().
Referenced by meshdeform_matrix_add_cell(), meshdeform_matrix_add_rhs(), and meshdeform_matrix_add_semibound_phi().
| BLI_INLINE void meshdeform_cell_center | ( | MeshDeformBind * | mdb, |
| int | x, | ||
| int | y, | ||
| int | z, | ||
| int | n, | ||
| float * | center ) |
Definition at line 1111 of file meshlaplacian.cc.
References BLI_INLINE, MeshDeformBind::halfwidth, MESHDEFORM_OFFSET, MeshDeformBind::min, MeshDeformBind::width, x, y, and z().
Referenced by meshdeform_add_intersections().
|
static |
Definition at line 1293 of file meshlaplacian.cc.
References MeshDeformBind::boundisect, i, meshdeform_index(), MESHDEFORM_TAG_EXTERIOR, MeshDeformBind::semibound, MeshDeformBind::tag, x, y, and z().
Referenced by harmonic_coordinates_bind().
| BLI_INLINE int meshdeform_index | ( | MeshDeformBind * | mdb, |
| int | x, | ||
| int | y, | ||
| int | z, | ||
| int | n ) |
Definition at line 1090 of file meshlaplacian.cc.
References BLI_INLINE, MESHDEFORM_OFFSET, MeshDeformBind::size, size(), x, y, and z().
Referenced by meshdeform_add_intersections(), meshdeform_bind_floodfill(), meshdeform_boundary_total_weight(), meshdeform_check_semibound(), meshdeform_interp_w(), meshdeform_matrix_add_cell(), meshdeform_matrix_add_exterior_phi(), meshdeform_matrix_add_rhs(), and meshdeform_matrix_add_semibound_phi().
|
static |
Definition at line 1064 of file meshlaplacian.cc.
References copy_v3_v3(), MDefBoundIsect::facing, i, MeshDeformBind::max, MESHDEFORM_OFFSET, meshdeform_ray_tree_intersect(), MeshDeformBind::min, normalize_v3(), and sub_v3_v3v3().
Referenced by harmonic_coordinates_bind().
|
static |
Definition at line 1232 of file meshlaplacian.cc.
References CLAMP, i, meshdeform_index(), MeshDeformBind::phi, result, MeshDeformBind::size, x, y, and z().
Referenced by meshdeform_matrix_solve().
|
static |
Definition at line 1338 of file meshlaplacian.cc.
References MeshDeformBind::boundisect, EIG_linear_solver_matrix_add(), i, meshdeform_boundary_total_weight(), meshdeform_index(), MESHDEFORM_TAG_EXTERIOR, MeshDeformBind::tag, MeshDeformBind::varidx, MeshDeformBind::width, x, y, and z().
Referenced by meshdeform_matrix_solve().
|
static |
Definition at line 1422 of file meshlaplacian.cc.
References i, meshdeform_index(), MESHDEFORM_TAG_EXTERIOR, MeshDeformBind::phi, MeshDeformBind::semibound, MeshDeformBind::tag, x, y, and z().
Referenced by meshdeform_matrix_solve().
|
static |
Definition at line 1367 of file meshlaplacian.cc.
References MeshDeformBind::boundisect, EIG_linear_solver_right_hand_side_add(), i, MDefBoundIsect::len, meshdeform_boundary_phi(), meshdeform_boundary_total_weight(), meshdeform_index(), MESHDEFORM_TAG_EXTERIOR, rhs, MeshDeformBind::tag, MeshDeformBind::varidx, x, y, and z().
Referenced by meshdeform_matrix_solve().
|
static |
Definition at line 1396 of file meshlaplacian.cc.
References MeshDeformBind::boundisect, i, MDefBoundIsect::len, meshdeform_boundary_phi(), meshdeform_boundary_total_weight(), meshdeform_index(), MeshDeformBind::phi, rhs, MeshDeformBind::semibound, x, y, and z().
Referenced by meshdeform_matrix_solve().
|
static |
Definition at line 1449 of file meshlaplacian.cc.
References b, BKE_modifier_set_error(), BLI_memarena_alloc(), MeshDeformBind::cage_verts_num, copy_v3_v3(), MeshDeformBind::dyngrid, EIG_linear_solver_delete(), EIG_linear_solver_new(), EIG_linear_solver_solve(), EIG_linear_solver_variable_get(), error(), fabsf, MeshDeformBind::halfwidth, MeshDeformBind::inside, MEM_calloc_arrayN(), MEM_freeN(), MeshDeformBind::memarena, meshdeform_interp_w(), meshdeform_matrix_add_cell(), meshdeform_matrix_add_exterior_phi(), meshdeform_matrix_add_rhs(), meshdeform_matrix_add_semibound_phi(), MESHDEFORM_MIN_INFLUENCE, MESHDEFORM_TAG_EXTERIOR, MESHDEFORM_TAG_INTERIOR, MeshDeformBind::min, MeshDeformModifierData::modifier, MDefBindInfluence::next, MeshDeformModifierData::object, MeshDeformBind::phi, printf, progress_bar(), MeshDeformBind::semibound, MeshDeformBind::size, MeshDeformBind::size3, SNPRINTF_UTF8, MeshDeformBind::tag, MeshDeformBind::totalphi, MeshDeformBind::varidx, MDefBindInfluence::vertex, MeshDeformBind::vertexcos, MeshDeformBind::verts_num, MDefBindInfluence::weight, MeshDeformBind::weights, MeshDeformBind::width, x, y, and z().
Referenced by harmonic_coordinates_bind().
|
static |
Definition at line 989 of file meshlaplacian.cc.
References BLI_bvhtree_ray_cast_ex(), BLI_memarena_alloc(), BVH_RAYCAST_DIST_MAX, BVH_RAYCAST_WATERTIGHT, MeshDeformBind::bvhtree, MeshDeformBind::cagecos, MeshDeformBind::cagemesh_cache, MDefBoundIsect::co, copy_v3_v3(), MeshDeformBind::corner_verts, blender::Array< T, InlineBufferCapacity, Allocator >::data(), data, BVHTreeRayHit::dist, MDefBoundIsect::face_index, MeshDeformBind::faces, MDefBoundIsect::facing, float, harmonic_ray_callback(), i, BVHTreeRayHit::index, interp_weights_poly_v3(), MeshDeformIsect::isect, MeshDeformIsect::lambda, len, MDefBoundIsect::len, len_v3v3(), madd_v3_v3v3fl(), max_ff(), MeshDeformBind::memarena, MESHDEFORM_LEN_THRESHOLD, normalize_v3_v3(), MDefBoundIsect::poly_weights, blender::IndexRange::size(), MeshDeformIsect::start, sub_v3_v3v3(), MeshDeformBind::tri_faces, UNLIKELY, MeshDeformIsect::vec, and MeshDeformIsect::vec_length.
Referenced by meshdeform_add_intersections(), and meshdeform_inside_cage().
|
static |
Definition at line 44 of file meshlaplacian.cc.
Referenced by harmonic_coordinates_bind(), meshdeform_matrix_solve(), and uiLayout::progress_indicator().
|
static |
Definition at line 45 of file meshlaplacian.cc.
Referenced by ED_mesh_deform_bind_callback().
|
static |
Definition at line 43 of file meshlaplacian.cc.
Referenced by ED_mesh_deform_bind_callback().
|
static |
Definition at line 856 of file meshlaplacian.cc.
Referenced by meshdeform_cell_center(), meshdeform_index(), and meshdeform_inside_cage().