|
Blender V5.0
|
#include <algorithm>#include <cfloat>#include <cmath>#include <cstdio>#include <cstring>#include <ctime>#include <memory.h>#include "DNA_gpencil_modifier_types.h"#include "DNA_mesh_types.h"#include "DNA_modifier_types.h"#include "DNA_object_types.h"#include "BLI_math_geom.h"#include "BLI_math_matrix.h"#include "BLI_math_solvers.h"#include "BLI_math_vector.h"#include "BLI_task.h"#include "BLI_utildefines.h"#include "BKE_attribute.hh"#include "BKE_modifier.hh"#include "BKE_shrinkwrap.hh"#include "BKE_subdiv.hh"#include "BKE_deform.hh"#include "BKE_editmesh.hh"#include "BKE_mesh.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_subdiv_deform.hh"#include "DEG_depsgraph_query.hh"#include "BLI_strict_flags.h"Go to the source code of this file.
Classes | |
| struct | ShrinkwrapCalcData |
| struct | ShrinkwrapCalcCBData |
| struct | TargetProjectTriData |
Namespaces | |
| namespace | blender |
| namespace | blender::bke |
| namespace | blender::bke::shrinkwrap |
Macros | |
| #define | TIMEIT_BENCH(expr, id) |
| #define | OUT_OF_MEMORY() |
Functions | |
| bool | BKE_shrinkwrap_needs_normals (int shrinkType, int shrinkMode) |
| bool | BKE_shrinkwrap_init_tree (ShrinkwrapTreeData *data, Mesh *mesh, int shrinkType, int shrinkMode, bool force_normals) |
| void | BKE_shrinkwrap_free_tree (ShrinkwrapTreeData *) |
| static void | blender::bke::shrinkwrap::merge_vert_dir (ShrinkwrapBoundaryVertData *vdata, MutableSpan< int8_t > status, int index, const float edge_dir[3], signed char side) |
| static ShrinkwrapBoundaryData | blender::bke::shrinkwrap::shrinkwrap_build_boundary_data (const Mesh &mesh) |
| const ShrinkwrapBoundaryData & | blender::bke::shrinkwrap::boundary_cache_ensure (const Mesh &mesh) |
| static void | shrinkwrap_calc_nearest_vertex_cb_ex (void *__restrict userdata, const int i, const TaskParallelTLS *__restrict tls) |
| static void | shrinkwrap_calc_nearest_vertex (ShrinkwrapCalcData *calc) |
| bool | BKE_shrinkwrap_project_normal (char options, const float vert[3], const float dir[3], const float ray_radius, const SpaceTransform *transf, ShrinkwrapTreeData *tree, BVHTreeRayHit *hit) |
| static void | shrinkwrap_calc_normal_projection_cb_ex (void *__restrict userdata, const int i, const TaskParallelTLS *__restrict tls) |
| static void | shrinkwrap_calc_normal_projection (ShrinkwrapCalcData *calc) |
| static void | target_project_tri_deviation (void *userdata, const float x[3], float r_delta[3]) |
| static void | target_project_tri_jacobian (void *userdata, const float x[3], float r_jacobian[3][3]) |
| static void | target_project_tri_clamp (float x[3]) |
| static bool | target_project_tri_correct (void *, const float x[3], float step[3], float x_next[3]) |
| static bool | target_project_solve_point_tri (const float *vtri_co[3], const float vtri_no[3][3], const float point_co[3], const float hit_co[3], float hit_dist_sq, float r_hit_co[3], float r_hit_no[3]) |
| static bool | update_hit (BVHTreeNearest *nearest, int index, const float co[3], const float hit_co[3], const float hit_no[3]) |
| static void | target_project_edge (const ShrinkwrapTreeData *tree, int index, const float co[3], BVHTreeNearest *nearest, int eidx) |
| static void | mesh_corner_tris_target_project (void *userdata, int index, const float co[3], BVHTreeNearest *nearest) |
| void | BKE_shrinkwrap_find_nearest_surface (ShrinkwrapTreeData *tree, BVHTreeNearest *nearest, float co[3], int type) |
| static void | shrinkwrap_calc_nearest_surface_point_cb_ex (void *__restrict userdata, const int i, const TaskParallelTLS *__restrict tls) |
| void | BKE_shrinkwrap_compute_smooth_normal (const ShrinkwrapTreeData *tree, const SpaceTransform *transform, int corner_tri_idx, const float hit_co[3], const float hit_no[3], float r_no[3]) |
| static void | shrinkwrap_snap_with_side (float r_point_co[3], const float point_co[3], const float hit_co[3], const float hit_no[3], float goal_dist, float forcesign, bool forcesnap) |
| void | BKE_shrinkwrap_snap_point_to_surface (const ShrinkwrapTreeData *tree, const SpaceTransform *transform, int mode, int hit_idx, const float hit_co[3], const float hit_no[3], float goal_dist, const float point_co[3], float r_point_co[3]) |
| static void | shrinkwrap_calc_nearest_surface_point (ShrinkwrapCalcData *calc) |
| static blender::Array< blender::float3 > | shrinkwrap_calc_subdivided_positions (Mesh *mesh, const int subdivision_level) |
| void | shrinkwrapModifier_deform (ShrinkwrapModifierData *smd, const ModifierEvalContext *ctx, Scene *, Object *ob, Mesh *mesh, const MDeformVert *dvert, const int defgrp_index, float(*vertexCos)[3], int numVerts) |
| void | shrinkwrapParams_deform (const ShrinkwrapParams ¶ms, Object &object, ShrinkwrapTreeData &tree, const blender::Span< MDeformVert > dvert, const int defgrp_index, const blender::MutableSpan< blender::float3 > positions) |
| void | BKE_shrinkwrap_mesh_nearest_surface_deform (Depsgraph *depsgraph, Scene *scene, Object *ob_source, Object *ob_target) |
| void | BKE_shrinkwrap_remesh_target_project (Mesh *src_me, Mesh *target_me, Object *ob_target) |
| #define OUT_OF_MEMORY | ( | ) |
Definition at line 53 of file shrinkwrap.cc.
| #define TIMEIT_BENCH | ( | expr, | |
| id ) |
Definition at line 49 of file shrinkwrap.cc.
Referenced by BKE_shrinkwrap_remesh_target_project(), and shrinkwrapModifier_deform().
| void BKE_shrinkwrap_compute_smooth_normal | ( | const ShrinkwrapTreeData * | tree, |
| const SpaceTransform * | transform, | ||
| int | tri_idx, | ||
| const float | hit_co[3], | ||
| const float | hit_no[3], | ||
| float | r_no[3] ) |
Compute a smooth normal of the target (if applicable) at the hit location.
| tree | information about the mesh. |
| transform | transform from the hit coordinate space to the object space; may be null. |
| r_no | output in hit coordinate space; may be shared with inputs. |
Definition at line 1144 of file shrinkwrap.cc.
References BLI_space_transform_apply(), BLI_space_transform_invert_normal(), copy_v3_v3(), blender::bke::BVHTreeFromMesh::corner_tris, blender::bke::BVHTreeFromMesh::corner_verts, interp_v3_v3v3v3(), interp_weights_tri_v3(), normalize_v3(), transform(), tree, blender::bke::BVHTreeFromMesh::vert_positions, and w().
Referenced by BKE_shrinkwrap_snap_point_to_surface(), and shrinkwrap_get_tarmat().
| void BKE_shrinkwrap_find_nearest_surface | ( | ShrinkwrapTreeData * | tree, |
| BVHTreeNearest * | nearest, | ||
| float | co[3], | ||
| int | type ) |
Maps the point to the nearest surface, either by simple nearest, or by target normal projection.
Definition at line 1043 of file shrinkwrap.cc.
References BLI_bvhtree_find_nearest(), BLI_bvhtree_find_nearest_ex(), BVH_NEAREST_OPTIMAL_ORDER, BVHTreeNearest::dist_sq, BVHTreeNearest::index, mesh_corner_tris_target_project(), MOD_SHRINKWRAP_TARGET_PROJECT, blender::bke::BVHTreeFromMesh::nearest_callback, printf, and tree.
Referenced by shrinkwrap_calc_nearest_surface_point_cb_ex(), and shrinkwrap_get_tarmat().
| void BKE_shrinkwrap_free_tree | ( | ShrinkwrapTreeData * | data | ) |
Frees the tree data if necessary.
Definition at line 154 of file shrinkwrap.cc.
Referenced by BKE_shrinkwrap_remesh_target_project(), blender::ensure_shrinkwrap_cache_data(), blender::free_data(), gpencil_modifier_free_data(), shrinkwrap_calc_normal_projection(), shrinkwrap_get_tarmat(), and shrinkwrapModifier_deform().
| bool BKE_shrinkwrap_init_tree | ( | ShrinkwrapTreeData * | data, |
| Mesh * | mesh, | ||
| int | shrinkType, | ||
| int | shrinkMode, | ||
| bool | force_normals ) |
Initializes the mesh data structure from the given mesh and settings.
Definition at line 96 of file shrinkwrap.cc.
References BKE_mesh_wrapper_ensure_mdata(), BKE_shrinkwrap_needs_normals(), blender::bke::shrinkwrap::boundary_cache_ensure(), blender::bke::Corner, data, blender::bke::Face, blender::bke::AttributeAccessor::lookup(), MOD_SHRINKWRAP_NEAREST_VERTEX, and MOD_SHRINKWRAP_TARGET_PROJECT.
Referenced by BKE_shrinkwrap_remesh_target_project(), blender::ensure_shrinkwrap_cache_data(), shrinkwrap_calc_normal_projection(), shrinkwrap_get_tarmat(), and shrinkwrapModifier_deform().
| void BKE_shrinkwrap_mesh_nearest_surface_deform | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob_source, | ||
| Object * | ob_target ) |
Used in editmesh_mask_extract.cc to shrink-wrap the extracted mesh to the sculpt.
Definition at line 1505 of file shrinkwrap.cc.
References Object::data, depsgraph, ShrinkwrapModifierData::keepDist, MOD_SHRINKWRAP_NEAREST_SURFACE, MOD_SHRINKWRAP_ON_SURFACE, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkType, shrinkwrapModifier_deform(), ShrinkwrapModifierData::target, and Mesh::verts_num.
Referenced by geometry_extract_apply().
| bool BKE_shrinkwrap_needs_normals | ( | int | shrinkType, |
| int | shrinkMode ) |
Checks if the modifier needs target normals with these settings.
Definition at line 89 of file shrinkwrap.cc.
References MOD_SHRINKWRAP_ABOVE_SURFACE, MOD_SHRINKWRAP_NEAREST_VERTEX, and MOD_SHRINKWRAP_TARGET_PROJECT.
Referenced by BKE_shrinkwrap_init_tree().
| bool BKE_shrinkwrap_project_normal | ( | char | options, |
| const float | vert[3], | ||
| const float | dir[3], | ||
| float | ray_radius, | ||
| const SpaceTransform * | transf, | ||
| ShrinkwrapTreeData * | tree, | ||
| BVHTreeRayHit * | hit ) |
This function ray-cast a single vertex and updates the hit if the "hit" is considered valid.
| options | Opts control whether an hit is valid or not. Supported options are:
|
| transf | Take into consideration the space_transform, that is: if transf was configured with SPACE_TRANSFORM_SETUP(&transf, ob1, ob2) then the input (vert, dir, BVHTreeRayHit) must be defined in ob1 coordinates space and the BVHTree must be built in ob2 coordinate space. Thus it provides an easy way to cast the same ray across several trees (where each tree was built on its own coords space). |
Definition at line 386 of file shrinkwrap.cc.
References BLI_assert, BLI_bvhtree_ray_cast(), BLI_space_transform_apply(), BLI_space_transform_apply_normal(), BLI_space_transform_invert(), BLI_space_transform_invert_normal(), BVHTreeRayHit::co, copy_v3_v3(), BVHTreeRayHit::dist, dot(), dot_v3v3(), BVHTreeRayHit::index, len_v3v3(), mat4_to_scale(), MOD_SHRINKWRAP_CULL_TARGET_BACKFACE, MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE, MOD_SHRINKWRAP_CULL_TARGET_MASK, BVHTreeRayHit::no, options, and tree.
Referenced by shrinkwrap_calc_normal_projection_cb_ex(), and shrinkwrap_get_tarmat().
Used in object_remesh.cc to preserve the details and volume in the voxel remesher.
Definition at line 1533 of file shrinkwrap.cc.
References BKE_shrinkwrap_free_tree(), BKE_shrinkwrap_init_tree(), BLI_SPACE_TRANSFORM_SETUP, data, ShrinkwrapCalcData::keepDist, ShrinkwrapModifierData::keepDist, ShrinkwrapCalcData::local2target, MOD_SHRINKWRAP_ON_SURFACE, MOD_SHRINKWRAP_PROJECT, MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR, MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, NULL_ShrinkwrapCalcData, ShrinkwrapCalcData::numVerts, ShrinkwrapModifierData::projLimit, Mesh::remesh_voxel_size, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapModifierData::shrinkType, shrinkwrap_calc_normal_projection(), ShrinkwrapCalcData::smd, ShrinkwrapCalcData::target, ShrinkwrapModifierData::target, TIMEIT_BENCH, ShrinkwrapCalcData::tree, tree, ShrinkwrapCalcData::vert_normals, ShrinkwrapCalcData::vert_positions, ShrinkwrapCalcData::vertexCos, Mesh::verts_num, and ShrinkwrapCalcData::vgroup.
Referenced by blender::ed::object::voxel_remesh_exec().
| void BKE_shrinkwrap_snap_point_to_surface | ( | const ShrinkwrapTreeData * | tree, |
| const SpaceTransform * | transform, | ||
| int | mode, | ||
| int | hit_idx, | ||
| const float | hit_co[3], | ||
| const float | hit_no[3], | ||
| float | goal_dist, | ||
| const float | point_co[3], | ||
| float | r_point_co[3] ) |
Apply the shrink to surface modes to the given original coordinates and nearest point.
| tree | mesh data for smooth normals. |
| transform | transform from the hit coordinate space to the object space; may be null. |
| r_point_co | may be the same memory location as point_co, hit_co, or hit_no. |
Definition at line 1266 of file shrinkwrap.cc.
References BKE_shrinkwrap_compute_smooth_normal(), copy_v3_v3(), madd_v3_v3v3fl(), MOD_SHRINKWRAP_ABOVE_SURFACE, MOD_SHRINKWRAP_INSIDE, MOD_SHRINKWRAP_ON_SURFACE, MOD_SHRINKWRAP_OUTSIDE, MOD_SHRINKWRAP_OUTSIDE_SURFACE, printf, shrinkwrap_snap_with_side(), transform(), and tree.
Referenced by shrinkwrap_calc_nearest_surface_point_cb_ex(), shrinkwrap_calc_normal_projection_cb_ex(), and shrinkwrap_get_tarmat().
|
static |
Definition at line 979 of file shrinkwrap.cc.
References closest_on_tri_to_point_v3(), copy_v3_v3(), blender::bke::mesh::corner_tri_get_real_edges(), data, BVHTreeNearest::dist_sq, i, len_squared_v3v3(), printf, target_project_edge(), target_project_solve_point_tri(), tree, UNPACK3, and update_hit().
Referenced by BKE_shrinkwrap_find_nearest_surface().
|
static |
Definition at line 1323 of file shrinkwrap.cc.
References BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), data, BVHTreeNearest::dist_sq, FLT_MAX, BVHTreeNearest::index, NULL_BVHTreeNearest, ShrinkwrapCalcData::numVerts, shrinkwrap_calc_nearest_surface_point_cb_ex(), ShrinkwrapCalcData::tree, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.
Referenced by shrinkwrapModifier_deform().
|
static |
Shrink-wrap moving vertices to the nearest surface point on the target.
It builds a BVHTree from the target mesh and then performs a NN matches for each vertex
Definition at line 1078 of file shrinkwrap.cc.
References BKE_defvert_array_find_weight_safe(), BKE_shrinkwrap_find_nearest_surface(), BKE_shrinkwrap_snap_point_to_surface(), BLI_space_transform_apply(), BLI_space_transform_invert(), BVHTreeNearest::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, ShrinkwrapCalcData::dvert, FLT_MAX, i, BVHTreeNearest::index, interp_v3_v3v3(), ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, len_squared_v3v3(), ShrinkwrapCalcData::local2target, MOD_SHRINKWRAP_TARGET_PROJECT, BVHTreeNearest::no, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkType, ShrinkwrapCalcData::smd, ShrinkwrapCalcData::vert_positions, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by shrinkwrap_calc_nearest_surface_point().
|
static |
Definition at line 366 of file shrinkwrap.cc.
References BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), data, BVHTreeNearest::dist_sq, FLT_MAX, BVHTreeNearest::index, NULL_BVHTreeNearest, ShrinkwrapCalcData::numVerts, shrinkwrap_calc_nearest_vertex_cb_ex(), ShrinkwrapCalcData::tree, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.
Referenced by shrinkwrapModifier_deform().
|
static |
Shrink-wrap to the nearest vertex
it builds a BVH-tree of vertices we can attach to and then for each vertex performs a nearest vertex search on the tree.
Definition at line 307 of file shrinkwrap.cc.
References BKE_defvert_array_find_weight_safe(), BLI_bvhtree_find_nearest(), BLI_space_transform_apply(), BLI_space_transform_invert(), BVHTreeNearest::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, ShrinkwrapCalcData::dvert, FLT_MAX, i, BVHTreeNearest::index, interp_v3_v3v3(), ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, len_squared_v3v3(), ShrinkwrapCalcData::local2target, blender::bke::BVHTreeFromMesh::nearest_callback, sqrtf, blender::bke::BVHTreeFromMesh::tree, ShrinkwrapCalcData::vert_positions, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by shrinkwrap_calc_nearest_vertex().
|
static |
Definition at line 585 of file shrinkwrap.cc.
References ShrinkwrapCalcData::aux_target, BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BKE_shrinkwrap_free_tree(), BKE_shrinkwrap_init_tree(), BLI_parallel_range_settings_defaults(), BLI_SPACE_TRANSFORM_SETUP, BLI_task_parallel_range(), data, len_squared_v3(), MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR, MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, MOD_SHRINKWRAP_PROJECT_OVER_NORMAL, MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS, MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS, MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS, normalize_v3(), ShrinkwrapCalcData::numVerts, ShrinkwrapCalcData::ob, ShrinkwrapModifierData::projAxis, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapModifierData::shrinkType, shrinkwrap_calc_normal_projection_cb_ex(), ShrinkwrapCalcData::smd, ShrinkwrapCalcData::tree, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, TaskParallelSettings::userdata_chunk_size, and ShrinkwrapCalcData::vert_positions.
Referenced by BKE_shrinkwrap_remesh_target_project(), and shrinkwrapModifier_deform().
|
static |
Definition at line 462 of file shrinkwrap.cc.
References BKE_defvert_array_find_weight_safe(), BKE_shrinkwrap_project_normal(), BKE_shrinkwrap_snap_point_to_surface(), BVH_RAYCAST_DIST_MAX, BVHTreeRayHit::co, data, BVHTreeRayHit::dist, ShrinkwrapCalcData::dvert, i, BVHTreeRayHit::index, interp_v3_v3v3(), ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, len_squared_v3v3(), ShrinkwrapCalcData::local2target, MOD_SHRINKWRAP_CULL_TARGET_MASK, MOD_SHRINKWRAP_INVERT_CULL_TARGET, MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR, MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, MOD_SHRINKWRAP_PROJECT_OVER_NORMAL, negate_v3_v3(), BVHTreeRayHit::no, options, ShrinkwrapModifierData::projAxis, ShrinkwrapModifierData::projLimit, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapCalcData::smd, tree, ShrinkwrapCalcData::vert_normals, ShrinkwrapCalcData::vert_positions, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by shrinkwrap_calc_normal_projection().
|
static |
Definition at line 1344 of file shrinkwrap.cc.
References blender::bke::subdiv::deform_coarse_vertices(), blender::bke::subdiv::free(), blender::bke::subdiv::Settings::fvar_linear_interpolation, blender::bke::subdiv::Settings::is_adaptive, blender::bke::subdiv::Settings::is_simple, blender::bke::subdiv::Settings::level, blender::bke::subdiv::SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS, blender::bke::subdiv::SUBDIV_VTX_BOUNDARY_EDGE_ONLY, blender::bke::subdiv::update_from_mesh(), blender::bke::subdiv::Settings::use_creases, and blender::bke::subdiv::Settings::vtx_boundary_interpolation.
|
static |
Definition at line 1213 of file shrinkwrap.cc.
References copy_v3_v3(), dot_v3v3(), fabsf, interp_v3_v3v3(), len_manhattan_v3(), len_v3(), madd_v3_v3v3fl(), mul_v3_fl(), printf, signf(), and sub_v3_v3v3().
Referenced by BKE_shrinkwrap_snap_point_to_surface().
| void shrinkwrapModifier_deform | ( | ShrinkwrapModifierData * | smd, |
| const ModifierEvalContext * | ctx, | ||
| Scene * | scene, | ||
| Object * | ob, | ||
| Mesh * | mesh, | ||
| const MDeformVert * | dvert, | ||
| int | defgrp_index, | ||
| float(*) | vertexCos[3], | ||
| int | numVerts ) |
Main shrink-wrap function (implementation of the shrink-wrap modifier).
Definition at line 1374 of file shrinkwrap.cc.
References ShrinkwrapCalcData::aux_target, ShrinkwrapModifierData::auxTarget, BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BKE_shrinkwrap_free_tree(), BKE_shrinkwrap_init_tree(), BLI_SPACE_TRANSFORM_SETUP, data, DEG_get_evaluated(), ModifierEvalContext::depsgraph, ShrinkwrapCalcData::dvert, ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, ShrinkwrapModifierData::keepDist, ShrinkwrapCalcData::local2target, MOD_SHRINKWRAP_INVERT_VGROUP, MOD_SHRINKWRAP_NEAREST_SURFACE, MOD_SHRINKWRAP_NEAREST_VERTEX, MOD_SHRINKWRAP_PROJECT, MOD_SHRINKWRAP_TARGET_PROJECT, NULL_ShrinkwrapCalcData, ShrinkwrapCalcData::numVerts, ShrinkwrapCalcData::ob, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapModifierData::shrinkType, shrinkwrap_calc_nearest_surface_point(), shrinkwrap_calc_nearest_vertex(), shrinkwrap_calc_normal_projection(), ShrinkwrapCalcData::smd, ShrinkwrapModifierData::subsurfLevels, ShrinkwrapCalcData::target, ShrinkwrapModifierData::target, TIMEIT_BENCH, ShrinkwrapCalcData::tree, tree, ShrinkwrapCalcData::vert_normals, ShrinkwrapCalcData::vert_positions, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by BKE_shrinkwrap_mesh_nearest_surface_deform(), and deform_verts().
| void shrinkwrapParams_deform | ( | const ShrinkwrapParams & | params, |
| Object & | object, | ||
| ShrinkwrapTreeData & | tree, | ||
| const blender::Span< MDeformVert > | dvert, | ||
| const int | defgrp_index, | ||
| const blender::MutableSpan< blender::float3 > | positions ) |
Definition at line 1455 of file shrinkwrap.cc.
References ShrinkwrapModifierData::auxTarget, BLI_SPACE_TRANSFORM_SETUP, blender::MutableSpan< T >::data(), blender::Span< T >::data(), ShrinkwrapCalcData::dvert, ShrinkwrapCalcData::invert_vgroup, blender::Span< T >::is_empty(), ShrinkwrapCalcData::keepDist, ShrinkwrapModifierData::keepDist, ShrinkwrapCalcData::local2target, NULL_ShrinkwrapCalcData, ShrinkwrapCalcData::numVerts, ShrinkwrapCalcData::ob, params, ShrinkwrapModifierData::projAxis, ShrinkwrapModifierData::projLimit, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapModifierData::shrinkType, blender::MutableSpan< T >::size(), ShrinkwrapCalcData::smd, switch(), ShrinkwrapModifierData::target, ShrinkwrapCalcData::tree, tree, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by blender::modify_drawing().
|
static |
Definition at line 898 of file shrinkwrap.cc.
References b, CLAMP, copy_v3_v3(), data, dot_v3v3(), float, i, interp_v3_v3v3(), negate_v3(), printf, sqrtf, sub_v3_v3v3(), tree, UNPACK3, update_hit(), and x.
Referenced by mesh_corner_tris_target_project().
|
static |
Definition at line 812 of file shrinkwrap.cc.
References BLI_newton3d_solve(), TargetProjectTriData::c0_minus_c2, TargetProjectTriData::c1_minus_c2, TargetProjectTriData::co_interp, copy_v3_v3(), dot_v3v3(), interp_v3_v3v3v3(), interp_weights_tri_v3(), len_manhattan_v3(), TargetProjectTriData::n0_minus_n2, TargetProjectTriData::n1_minus_n2, TargetProjectTriData::no_interp, TargetProjectTriData::point_co, sqrtf, sub_v3_v3v3(), target_project_tri_clamp(), target_project_tri_correct(), target_project_tri_deviation(), target_project_tri_jacobian(), UNPACK3, TargetProjectTriData::vtri_co, TargetProjectTriData::vtri_no, and x.
Referenced by mesh_corner_tris_target_project().
|
static |
Definition at line 728 of file shrinkwrap.cc.
References x.
Referenced by target_project_solve_point_tri(), and target_project_tri_correct().
|
static |
Definition at line 739 of file shrinkwrap.cc.
References add_v2_fl(), fixed, i, len_v2(), M_SQRT2, mul_v3_fl(), step, sub_v3_v3v3(), sum(), target_project_tri_clamp(), and x.
Referenced by target_project_solve_point_tri().
Definition at line 702 of file shrinkwrap.cc.
References data, interp_v3_v3v3v3(), madd_v3_v3v3fl(), sub_v3_v3(), w(), and x.
Referenced by target_project_solve_point_tri().
|
static |
Definition at line 715 of file shrinkwrap.cc.
References copy_v3_v3(), data, madd_v3_v3fl(), madd_v3_v3v3fl(), and x.
Referenced by target_project_solve_point_tri().
|
static |
Definition at line 873 of file shrinkwrap.cc.
References BVHTreeNearest::co, copy_v3_v3(), BVHTreeNearest::dist_sq, BVHTreeNearest::index, len_squared_v3v3(), BVHTreeNearest::no, normalize_v3_v3(), printf, and UNPACK3.
Referenced by mesh_corner_tris_target_project(), and target_project_edge().