Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/shrinkwrap.c
| Show First 20 Lines • Show All 660 Lines • ▼ Show 20 Lines | else { | ||||
| /* Invalid projection direction */ | /* Invalid projection direction */ | ||||
| if (len_squared_v3(proj_axis) < FLT_EPSILON) { | if (len_squared_v3(proj_axis) < FLT_EPSILON) { | ||||
| return; | return; | ||||
| } | } | ||||
| } | } | ||||
| if (calc->aux_target) { | if (calc->aux_target) { | ||||
| auxMesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(calc->aux_target, false); | auxMesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(calc->aux_target); | ||||
| if (!auxMesh) { | if (!auxMesh) { | ||||
| return; | return; | ||||
| } | } | ||||
| BLI_SPACE_TRANSFORM_SETUP(&local2aux, calc->ob, calc->aux_target); | BLI_SPACE_TRANSFORM_SETUP(&local2aux, calc->ob, calc->aux_target); | ||||
| } | } | ||||
| if (BKE_shrinkwrap_init_tree( | if (BKE_shrinkwrap_init_tree( | ||||
| &aux_tree_stack, auxMesh, calc->smd->shrinkType, calc->smd->shrinkMode, false)) { | &aux_tree_stack, auxMesh, calc->smd->shrinkType, calc->smd->shrinkMode, false)) { | ||||
| ▲ Show 20 Lines • Show All 714 Lines • ▼ Show 20 Lines | void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, | ||||
| calc.numVerts = numVerts; | calc.numVerts = numVerts; | ||||
| calc.vertexCos = vertexCos; | calc.vertexCos = vertexCos; | ||||
| calc.dvert = dvert; | calc.dvert = dvert; | ||||
| calc.vgroup = defgrp_index; | calc.vgroup = defgrp_index; | ||||
| calc.invert_vgroup = (smd->shrinkOpts & MOD_SHRINKWRAP_INVERT_VGROUP) != 0; | calc.invert_vgroup = (smd->shrinkOpts & MOD_SHRINKWRAP_INVERT_VGROUP) != 0; | ||||
| if (smd->target != NULL) { | if (smd->target != NULL) { | ||||
| Object *ob_target = DEG_get_evaluated_object(ctx->depsgraph, smd->target); | Object *ob_target = DEG_get_evaluated_object(ctx->depsgraph, smd->target); | ||||
| calc.target = BKE_modifier_get_evaluated_mesh_from_evaluated_object(ob_target, false); | calc.target = BKE_modifier_get_evaluated_mesh_from_evaluated_object(ob_target); | ||||
| /* TODO: there might be several "bugs" with non-uniform scales matrices | /* TODO: there might be several "bugs" with non-uniform scales matrices | ||||
| * because it will no longer be nearest surface, not sphere projection | * because it will no longer be nearest surface, not sphere projection | ||||
| * because space has been deformed */ | * because space has been deformed */ | ||||
| BLI_SPACE_TRANSFORM_SETUP(&calc.local2target, ob, ob_target); | BLI_SPACE_TRANSFORM_SETUP(&calc.local2target, ob, ob_target); | ||||
| /* TODO: smd->keepDist is in global units.. must change to local */ | /* TODO: smd->keepDist is in global units.. must change to local */ | ||||
| calc.keepDist = smd->keepDist; | calc.keepDist = smd->keepDist; | ||||
| ▲ Show 20 Lines • Show All 182 Lines • Show Last 20 Lines | |||||