Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/shrinkwrap.c
| Show First 20 Lines • Show All 90 Lines • ▼ Show 20 Lines | static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc) | ||||
| nearest.dist_sq = FLT_MAX; | nearest.dist_sq = FLT_MAX; | ||||
| #ifndef __APPLE__ | #ifndef __APPLE__ | ||||
| #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(treeData, calc) schedule(static) if (calc->numVerts > BKE_MESH_OMP_LIMIT) | #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(treeData, calc) schedule(static) if (calc->numVerts > BKE_MESH_OMP_LIMIT) | ||||
| #endif | #endif | ||||
| for (i = 0; i < calc->numVerts; ++i) { | for (i = 0; i < calc->numVerts; ++i) { | ||||
| float *co = calc->vertexCos[i]; | float *co = calc->vertexCos[i]; | ||||
| float tmp_co[3]; | float tmp_co[3]; | ||||
| float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); | float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); | ||||
| if(calc->invert_vgroup) weight = 1.0f - weight; | |||||
| if (weight == 0.0f) { | if (weight == 0.0f) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| /* Convert the vertex to tree coordinates */ | /* Convert the vertex to tree coordinates */ | ||||
| if (calc->vert) { | if (calc->vert) { | ||||
| copy_v3_v3(tmp_co, calc->vert[i].co); | copy_v3_v3(tmp_co, calc->vert[i].co); | ||||
| ▲ Show 20 Lines • Show All 299 Lines • ▼ Show 20 Lines | static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc) | ||||
| /* Find the nearest vertex */ | /* Find the nearest vertex */ | ||||
| #ifndef __APPLE__ | #ifndef __APPLE__ | ||||
| #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(calc, treeData) schedule(static) if (calc->numVerts > BKE_MESH_OMP_LIMIT) | #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(calc, treeData) schedule(static) if (calc->numVerts > BKE_MESH_OMP_LIMIT) | ||||
| #endif | #endif | ||||
| for (i = 0; i < calc->numVerts; ++i) { | for (i = 0; i < calc->numVerts; ++i) { | ||||
| float *co = calc->vertexCos[i]; | float *co = calc->vertexCos[i]; | ||||
| float tmp_co[3]; | float tmp_co[3]; | ||||
| float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); | float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); | ||||
| if(calc->invert_vgroup) weight = 1.0f - weight; | |||||
| if (weight == 0.0f) continue; | if (weight == 0.0f) continue; | ||||
| /* Convert the vertex to tree coordinates */ | /* Convert the vertex to tree coordinates */ | ||||
| if (calc->vert) { | if (calc->vert) { | ||||
| copy_v3_v3(tmp_co, calc->vert[i].co); | copy_v3_v3(tmp_co, calc->vert[i].co); | ||||
| } | } | ||||
| else { | else { | ||||
| copy_v3_v3(tmp_co, co); | copy_v3_v3(tmp_co, co); | ||||
| ▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Object *ob, DerivedMesh *dm, | ||||
| if (smd->auxTarget == ob) smd->auxTarget = NULL; | if (smd->auxTarget == ob) smd->auxTarget = NULL; | ||||
| /* Configure Shrinkwrap calc data */ | /* Configure Shrinkwrap calc data */ | ||||
| calc.smd = smd; | calc.smd = smd; | ||||
| calc.ob = ob; | calc.ob = ob; | ||||
| calc.numVerts = numVerts; | calc.numVerts = numVerts; | ||||
| calc.vertexCos = vertexCos; | calc.vertexCos = vertexCos; | ||||
| calc.invert_vgroup = (smd->shrinkOpts & MOD_SHRINKWRAP_INVERT_VGROUP) != 0; | |||||
| /* DeformVertex */ | /* DeformVertex */ | ||||
| calc.vgroup = defgroup_name_index(calc.ob, calc.smd->vgroup_name); | calc.vgroup = defgroup_name_index(calc.ob, calc.smd->vgroup_name); | ||||
| if (dm) { | if (dm) { | ||||
| calc.dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); | calc.dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); | ||||
| } | } | ||||
| else if (calc.ob->type == OB_LATTICE) { | else if (calc.ob->type == OB_LATTICE) { | ||||
| calc.dvert = BKE_lattice_deform_verts_get(calc.ob); | calc.dvert = BKE_lattice_deform_verts_get(calc.ob); | ||||
| ▲ Show 20 Lines • Show All 68 Lines • Show Last 20 Lines | |||||