Blender
V3.3
|
#include <float.h>
#include <math.h>
#include <memory.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "DNA_gpencil_modifier_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "BLI_math.h"
#include "BLI_math_solvers.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "BKE_DerivedMesh.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_context.h"
#include "BKE_lattice.h"
#include "BKE_lib_id.h"
#include "BKE_modifier.h"
#include "BKE_shrinkwrap.h"
#include "BKE_deform.h"
#include "BKE_editmesh.h"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.h"
#include "BKE_mesh_wrapper.h"
#include "BKE_subsurf.h"
#include "DEG_depsgraph_query.h"
#include "MEM_guardedalloc.h"
#include "BLI_strict_flags.h"
Go to the source code of this file.
Classes | |
struct | ShrinkwrapCalcData |
struct | ShrinkwrapCalcCBData |
struct | TargetProjectTriData |
Macros | |
#define | TIMEIT_BENCH(expr, id) (expr) |
#define | OUT_OF_MEMORY() ((void)printf("Shrinkwrap: Out of memory\n")) |
Typedefs | |
typedef struct ShrinkwrapCalcData | ShrinkwrapCalcData |
typedef struct ShrinkwrapCalcCBData | ShrinkwrapCalcCBData |
typedef struct TargetProjectTriData | TargetProjectTriData |
Definition at line 55 of file shrinkwrap.c.
Definition at line 51 of file shrinkwrap.c.
typedef struct ShrinkwrapCalcCBData ShrinkwrapCalcCBData |
typedef struct ShrinkwrapCalcData ShrinkwrapCalcData |
typedef struct TargetProjectTriData TargetProjectTriData |
Definition at line 323 of file shrinkwrap.c.
References BKE_shrinkwrap_discard_boundary_data(), mesh, Mesh::runtime, shrinkwrap_build_boundary_data(), and Mesh_Runtime::shrinkwrap_data.
Referenced by mesh_build_extra_data().
void BKE_shrinkwrap_compute_smooth_normal | ( | const struct ShrinkwrapTreeData * | tree, |
const struct SpaceTransform * | transform, | ||
int | looptri_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 1170 of file shrinkwrap.c.
References BLI_space_transform_apply(), BLI_space_transform_invert_normal(), MVert::co, copy_v3_v3(), float(), interp_v3_v3v3v3(), interp_weights_tri_v3(), BVHTreeFromMesh::loop, BVHTreeFromMesh::looptri, ME_SMOOTH, normalize_v3(), NULL, MLoopTri::poly, transform(), tree, MLoopTri::tri, MLoop::v, BVHTreeFromMesh::vert, and w().
Referenced by BKE_shrinkwrap_snap_point_to_surface(), and shrinkwrap_get_tarmat().
Free boundary data for target project.
Definition at line 152 of file shrinkwrap.c.
References data, MEM_freeN, mesh, NULL, Mesh::runtime, and Mesh_Runtime::shrinkwrap_data.
Referenced by BKE_mesh_runtime_clear_geometry(), and BKE_shrinkwrap_compute_boundary_data().
void BKE_shrinkwrap_find_nearest_surface | ( | struct ShrinkwrapTreeData * | tree, |
struct 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 1066 of file shrinkwrap.c.
References BLI_bvhtree_find_nearest(), BLI_bvhtree_find_nearest_ex(), BVH_NEAREST_OPTIMAL_ORDER, BVHTreeNearest::dist_sq, BVHTreeNearest::index, mesh_looptri_target_project(), MOD_SHRINKWRAP_TARGET_PROJECT, BVHTreeFromMesh::nearest_callback, tree, and type.
Referenced by shrinkwrap_calc_nearest_surface_point_cb_ex(), and shrinkwrap_get_tarmat().
void BKE_shrinkwrap_free_tree | ( | struct ShrinkwrapTreeData * | data | ) |
Frees the tree data if necessary.
Definition at line 147 of file shrinkwrap.c.
References data, and free_bvhtree_from_mesh().
Referenced by bakeModifier(), BKE_gpencil_cache_data_clear(), BKE_gpencil_cache_data_init(), BKE_shrinkwrap_remesh_target_project(), freeData(), shrinkwrap_calc_normal_projection(), shrinkwrap_get_tarmat(), and shrinkwrapModifier_deform().
bool BKE_shrinkwrap_init_tree | ( | struct 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 97 of file shrinkwrap.c.
References BKE_bvhtree_from_mesh_get(), BKE_mesh_poly_normals_ensure(), BKE_mesh_wrapper_ensure_mdata(), BKE_shrinkwrap_needs_normals(), BVHTREE_FROM_LOOPTRI, BVHTREE_FROM_VERTS, CD_NORMAL, CustomData_get_layer(), data, Mesh::flag, Mesh::ldata, ME_AUTOSMOOTH, mesh, MOD_SHRINKWRAP_NEAREST_VERTEX, MOD_SHRINKWRAP_TARGET_PROJECT, NULL, Mesh::runtime, Mesh_Runtime::shrinkwrap_data, Mesh::totpoly, and Mesh::totvert.
Referenced by bakeModifier(), BKE_gpencil_cache_data_init(), BKE_shrinkwrap_remesh_target_project(), shrinkwrap_calc_normal_projection(), shrinkwrap_get_tarmat(), and shrinkwrapModifier_deform().
void BKE_shrinkwrap_mesh_nearest_surface_deform | ( | struct bContext * | C, |
struct Object * | ob_source, | ||
struct Object * | ob_target | ||
) |
Used in editmesh_mask_extract.c
to shrink-wrap the extracted mesh to the sculpt.
Definition at line 1525 of file shrinkwrap.c.
References BKE_mesh_vert_coords_alloc(), BKE_mesh_vert_coords_apply(), C, CTX_data_depsgraph_pointer(), CTX_data_scene(), Object::data, depsgraph, float(), ShrinkwrapModifierData::keepDist, MEM_freeN, MOD_SHRINKWRAP_NEAREST_SURFACE, MOD_SHRINKWRAP_ON_SURFACE, NULL, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkType, shrinkwrapModifier_deform(), and ShrinkwrapModifierData::target.
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 90 of file shrinkwrap.c.
References MOD_SHRINKWRAP_ABOVE_SURFACE, MOD_SHRINKWRAP_NEAREST_VERTEX, and MOD_SHRINKWRAP_TARGET_PROJECT.
Referenced by BKE_shrinkwrap_init_tree(), blender::deg::DepsgraphRelationBuilder::build_constraints(), and updateDepsgraph().
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 | ||
) |
Definition at line 419 of file shrinkwrap.c.
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_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().
void BKE_shrinkwrap_remesh_target_project | ( | struct Mesh * | src_me, |
struct Mesh * | target_me, | ||
struct Object * | ob_target | ||
) |
Used in object_remesh.cc
to preserve the details and volume in the voxel remesher.
Definition at line 1550 of file shrinkwrap.c.
References BKE_mesh_vert_coords_alloc(), BKE_mesh_vert_coords_apply(), BKE_mesh_vertex_normals_ensure(), BKE_shrinkwrap_free_tree(), BKE_shrinkwrap_init_tree(), BLI_SPACE_TRANSFORM_SETUP, float(), ShrinkwrapCalcData::keepDist, ShrinkwrapModifierData::keepDist, ShrinkwrapCalcData::local2target, MEM_freeN, MOD_SHRINKWRAP_ON_SURFACE, MOD_SHRINKWRAP_PROJECT, MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR, MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, Mesh::mvert, 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, Mesh::totvert, ShrinkwrapCalcData::tree, tree, ShrinkwrapCalcData::vert, ShrinkwrapCalcData::vert_normals, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by voxel_remesh_exec().
void BKE_shrinkwrap_snap_point_to_surface | ( | const struct ShrinkwrapTreeData * | tree, |
const struct 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 1288 of file shrinkwrap.c.
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, 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 169 of file shrinkwrap.c.
References add_v3_v3(), BLI_assert, ShrinkwrapBoundaryVertData::direction, dot_v3v3(), and sub_v3_v3().
Referenced by shrinkwrap_build_boundary_data().
|
static |
Definition at line 1009 of file shrinkwrap.c.
References BKE_mesh_looptri_get_real_edges(), BLI_BITMAP_TEST, closest_on_tri_to_point_v3(), MVert::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, len_squared_v3v3(), target_project_edge(), target_project_solve_point_tri(), tree, MLoopTri::tri, UNPACK3, update_hit(), and MLoop::v.
Referenced by BKE_shrinkwrap_find_nearest_surface().
|
static |
Definition at line 192 of file shrinkwrap.c.
References BKE_mesh_looptri_get_real_edges(), BKE_mesh_runtime_looptri_ensure(), BKE_mesh_runtime_looptri_len(), BKE_mesh_vertex_normals_ensure(), BLI_BITMAP_ENABLE, BLI_BITMAP_NEW, ShrinkwrapBoundaryData::boundary_verts, MVert::co, cross_v3_v3v3(), data, ShrinkwrapBoundaryVertData::direction, MLoop::e, ShrinkwrapBoundaryData::edge_is_boundary, float(), ShrinkwrapBoundaryData::looptri_has_boundary, Mesh::medge, MEM_calloc_arrayN, MEM_callocN, MEM_freeN, merge_vert_dir(), mesh, Mesh::mloop, Mesh::mvert, ShrinkwrapBoundaryVertData::normal_plane, normalize_v3(), NULL, ShrinkwrapBoundaryData::num_boundary_verts, sub_v3_v3v3(), Mesh::totedge, Mesh::totloop, Mesh::totvert, and ShrinkwrapBoundaryData::vert_boundary_id.
Referenced by BKE_shrinkwrap_compute_boundary_data().
|
static |
Definition at line 1345 of file shrinkwrap.c.
References BKE_MESH_OMP_LIMIT, BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), data, BVHTreeNearest::dist_sq, 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 shrinkwrapGpencilModifier_deform(), and shrinkwrapModifier_deform().
|
static |
Definition at line 1101 of file shrinkwrap.c.
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, MVert::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, ShrinkwrapCalcData::dvert, BVHTreeNearest::index, interp_v3_v3v3(), ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, len_squared_v3v3(), ShrinkwrapCalcData::local2target, MOD_SHRINKWRAP_TARGET_PROJECT, BVHTreeNearest::no, NULL, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkType, ShrinkwrapCalcData::smd, ShrinkwrapCalcData::vert, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by shrinkwrap_calc_nearest_surface_point().
|
static |
Definition at line 398 of file shrinkwrap.c.
References BKE_MESH_OMP_LIMIT, BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), data, BVHTreeNearest::dist_sq, 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 shrinkwrapGpencilModifier_deform(), and shrinkwrapModifier_deform().
|
static |
Shrink-wrap to the nearest vertex
it builds a BVHTree of vertices we can attach to and then for each vertex performs a nearest vertex search on the tree
Definition at line 336 of file shrinkwrap.c.
References BKE_defvert_array_find_weight_safe(), BLI_bvhtree_find_nearest(), BLI_space_transform_apply(), BLI_space_transform_invert(), BVHTreeNearest::co, MVert::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, ShrinkwrapCalcData::dvert, BVHTreeNearest::index, interp_v3_v3v3(), ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, len_squared_v3v3(), ShrinkwrapCalcData::local2target, BVHTreeFromMesh::nearest_callback, sqrtf, BVHTreeFromMesh::tree, ShrinkwrapCalcData::vert, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by shrinkwrap_calc_nearest_vertex().
|
static |
Definition at line 616 of file shrinkwrap.c.
References ShrinkwrapCalcData::aux_target, BKE_MESH_OMP_LIMIT, 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(), NULL, 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.
Referenced by BKE_shrinkwrap_remesh_target_project(), shrinkwrapGpencilModifier_deform(), and shrinkwrapModifier_deform().
|
static |
Definition at line 494 of file shrinkwrap.c.
References BKE_defvert_array_find_weight_safe(), BKE_shrinkwrap_project_normal(), BKE_shrinkwrap_snap_point_to_surface(), BVH_RAYCAST_DIST_MAX, BVHTreeRayHit::co, MVert::co, copy_v3_v3(), data, BVHTreeRayHit::dist, ShrinkwrapCalcData::dvert, 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, NULL, options, ShrinkwrapModifierData::projAxis, ShrinkwrapModifierData::projLimit, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapCalcData::smd, tree, ShrinkwrapCalcData::vert, ShrinkwrapCalcData::vert_normals, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by shrinkwrap_calc_normal_projection().
|
static |
Definition at line 1235 of file shrinkwrap.c.
References copy_v3_v3(), dot_v3v3(), fabsf, interp_v3_v3v3(), len_manhattan_v3(), len_v3(), madd_v3_v3v3fl(), mul_v3_fl(), signf(), and sub_v3_v3v3().
Referenced by BKE_shrinkwrap_snap_point_to_surface().
void shrinkwrapGpencilModifier_deform | ( | ShrinkwrapGpencilModifierData * | mmd, |
Object * | ob, | ||
MDeformVert * | dvert, | ||
const int | defgrp_index, | ||
float(*) | vertexCos[3], | ||
int | numVerts | ||
) |
Definition at line 1476 of file shrinkwrap.c.
References ShrinkwrapGpencilModifierData::aux_target, ShrinkwrapModifierData::auxTarget, BLI_SPACE_TRANSFORM_SETUP, ShrinkwrapGpencilModifierData::cache_data, ShrinkwrapCalcData::dvert, ShrinkwrapGpencilModifierData::flag, GP_SHRINKWRAP_INVERT_VGROUP, ShrinkwrapCalcData::invert_vgroup, ShrinkwrapGpencilModifierData::keep_dist, ShrinkwrapCalcData::keepDist, ShrinkwrapModifierData::keepDist, ShrinkwrapCalcData::local2target, MOD_SHRINKWRAP_NEAREST_SURFACE, MOD_SHRINKWRAP_NEAREST_VERTEX, MOD_SHRINKWRAP_PROJECT, MOD_SHRINKWRAP_TARGET_PROJECT, NULL_ShrinkwrapCalcData, ShrinkwrapCalcData::numVerts, ShrinkwrapCalcData::ob, ShrinkwrapGpencilModifierData::proj_axis, ShrinkwrapGpencilModifierData::proj_limit, ShrinkwrapModifierData::projAxis, ShrinkwrapModifierData::projLimit, ShrinkwrapGpencilModifierData::shrink_mode, ShrinkwrapGpencilModifierData::shrink_opts, ShrinkwrapGpencilModifierData::shrink_type, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapModifierData::shrinkType, shrinkwrap_calc_nearest_surface_point(), shrinkwrap_calc_nearest_vertex(), shrinkwrap_calc_normal_projection(), ShrinkwrapCalcData::smd, ShrinkwrapGpencilModifierData::target, ShrinkwrapModifierData::target, TIMEIT_BENCH, ShrinkwrapCalcData::tree, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by deformStroke().
void shrinkwrapModifier_deform | ( | ShrinkwrapModifierData * | smd, |
const ModifierEvalContext * | ctx, | ||
struct Scene * | scene, | ||
Object * | ob, | ||
Mesh * | mesh, | ||
MDeformVert * | dvert, | ||
const int | defgrp_index, | ||
float(*) | vertexCos[3], | ||
int | numVerts | ||
) |
Definition at line 1367 of file shrinkwrap.c.
References ShrinkwrapCalcData::aux_target, ShrinkwrapModifierData::auxTarget, BKE_mesh_vertex_normals_ensure(), BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BKE_shrinkwrap_free_tree(), BKE_shrinkwrap_init_tree(), BLI_assert, BLI_SPACE_TRANSFORM_SETUP, CD_MVERT, CDDM_from_mesh(), DEG_get_evaluated_object(), ModifierEvalContext::depsgraph, ShrinkwrapCalcData::dvert, SubsurfModifierData::emCache, DerivedMesh::getNumVerts, DerivedMesh::getVertDataArray, ShrinkwrapCalcData::invert_vgroup, ShrinkwrapCalcData::keepDist, ShrinkwrapModifierData::keepDist, SubsurfModifierData::levels, ShrinkwrapCalcData::local2target, SubsurfModifierData::mCache, ME_CC_SUBSURF, mesh, MOD_SHRINKWRAP_INVERT_VGROUP, MOD_SHRINKWRAP_NEAREST_SURFACE, MOD_SHRINKWRAP_NEAREST_VERTEX, MOD_SHRINKWRAP_PROJECT, MOD_SHRINKWRAP_TARGET_PROJECT, Object::mode, Mesh::mvert, NULL, NULL_ShrinkwrapCalcData, ShrinkwrapCalcData::numVerts, ShrinkwrapCalcData::ob, OB_MODE_EDIT, DerivedMesh::release, scene, ShrinkwrapModifierData::shrinkMode, ShrinkwrapModifierData::shrinkOpts, ShrinkwrapModifierData::shrinkType, shrinkwrap_calc_nearest_surface_point(), shrinkwrap_calc_nearest_vertex(), shrinkwrap_calc_normal_projection(), ShrinkwrapCalcData::smd, SubsurfModifierData::subdivType, SUBSURF_IN_EDIT_MODE, subsurf_make_derived_from_derived(), ShrinkwrapModifierData::subsurfLevels, ShrinkwrapCalcData::target, ShrinkwrapModifierData::target, TIMEIT_BENCH, ShrinkwrapCalcData::tree, tree, ShrinkwrapCalcData::vert, ShrinkwrapCalcData::vert_normals, ShrinkwrapCalcData::vertexCos, and ShrinkwrapCalcData::vgroup.
Referenced by BKE_shrinkwrap_mesh_nearest_surface_deform().
|
static |
Definition at line 933 of file shrinkwrap.c.
References Freestyle::a, usdtokens::b(), Freestyle::c, CLAMP, copy_v3_v3(), data, dot_v3v3(), blender::robust_pred::epsilon, float(), interp_v3_v3v3(), negate_v3(), sqrtf, sub_v3_v3v3(), tree, UNPACK3, update_hit(), and x.
Referenced by mesh_looptri_target_project().
|
static |
Definition at line 846 of file shrinkwrap.c.
References BLI_newton3d_solve(), TargetProjectTriData::c0_minus_c2, TargetProjectTriData::c1_minus_c2, TargetProjectTriData::co_interp, copy_v3_v3(), dot_v3v3(), blender::robust_pred::epsilon, interp_v3_v3v3v3(), interp_weights_tri_v3(), len_manhattan_v3(), TargetProjectTriData::n0_minus_n2, TargetProjectTriData::n1_minus_n2, TargetProjectTriData::no_interp, sqrtf, sub_v3_v3v3(), target_project_tri_clamp(), target_project_tri_correct(), target_project_tri_deviation(), target_project_tri_jacobian(), UNPACK3, TargetProjectTriData::vtri_co, and x.
Referenced by mesh_looptri_target_project().
Definition at line 758 of file shrinkwrap.c.
References x.
Referenced by target_project_solve_point_tri(), and target_project_tri_correct().
|
static |
Definition at line 773 of file shrinkwrap.c.
References add_v2_fl(), blender::robust_pred::epsilon, len_v2(), M_SQRT2, mul_v3_fl(), sub_v3_v3v3(), sum(), target_project_tri_clamp(), and x.
Referenced by target_project_solve_point_tri().
|
static |
Definition at line 732 of file shrinkwrap.c.
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 745 of file shrinkwrap.c.
References copy_v3_v3(), data, madd_v3_v3fl(), madd_v3_v3v3fl(), and x.
Referenced by target_project_solve_point_tri().
|
static |
Definition at line 908 of file shrinkwrap.c.
References BVHTreeNearest::co, copy_v3_v3(), BVHTreeNearest::dist_sq, BVHTreeNearest::index, len_squared_v3v3(), BVHTreeNearest::no, normalize_v3_v3(), and UNPACK3.
Referenced by mesh_looptri_target_project(), and target_project_edge().