Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/texture_pointdensity.c
| Show First 20 Lines • Show All 92 Lines • ▼ Show 20 Lines | |||||
| const float(*vert_normals)[3] = BKE_mesh_vertex_normals_ensure(mesh); | const float(*vert_normals)[3] = BKE_mesh_vertex_normals_ensure(mesh); | ||||
| memcpy(data_color, vert_normals, sizeof(float[3]) * mesh->totvert); | memcpy(data_color, vert_normals, sizeof(float[3]) * mesh->totvert); | ||||
| } | } | ||||
| static void pointdensity_cache_object(PointDensity *pd, Object *ob) | static void pointdensity_cache_object(PointDensity *pd, Object *ob) | ||||
| { | { | ||||
| float *data_color; | float *data_color; | ||||
| int i; | int i; | ||||
| const MVert *mvert = NULL, *mv; | |||||
| Mesh *mesh = ob->data; | Mesh *mesh = ob->data; | ||||
| #if 0 /* UNUSED */ | #if 0 /* UNUSED */ | ||||
| CustomData_MeshMasks mask = CD_MASK_BAREMESH; | CustomData_MeshMasks mask = CD_MASK_BAREMESH; | ||||
| mask.fmask |= CD_MASK_MTFACE | CD_MASK_MCOL; | mask.fmask |= CD_MASK_MTFACE | CD_MASK_MCOL; | ||||
| switch (pd->ob_color_source) { | switch (pd->ob_color_source) { | ||||
| case TEX_PD_COLOR_VERTCOL: | case TEX_PD_COLOR_VERTCOL: | ||||
| mask.lmask |= CD_MASK_PROP_BYTE_COLOR; | mask.lmask |= CD_MASK_PROP_BYTE_COLOR; | ||||
| break; | break; | ||||
| case TEX_PD_COLOR_VERTWEIGHT: | case TEX_PD_COLOR_VERTWEIGHT: | ||||
| mask.vmask |= CD_MASK_MDEFORMVERT; | mask.vmask |= CD_MASK_MDEFORMVERT; | ||||
| break; | break; | ||||
| } | } | ||||
| #endif | #endif | ||||
| mvert = BKE_mesh_verts(mesh); /* local object space */ | const float(*positions)[3] = BKE_mesh_positions(mesh); /* local object space */ | ||||
| pd->totpoints = mesh->totvert; | pd->totpoints = mesh->totvert; | ||||
| if (pd->totpoints == 0) { | if (pd->totpoints == 0) { | ||||
| return; | return; | ||||
| } | } | ||||
| pd->point_tree = BLI_bvhtree_new(pd->totpoints, 0.0, 4, 6); | pd->point_tree = BLI_bvhtree_new(pd->totpoints, 0.0, 4, 6); | ||||
| alloc_point_data(pd); | alloc_point_data(pd); | ||||
| point_data_pointers(pd, NULL, NULL, &data_color); | point_data_pointers(pd, NULL, NULL, &data_color); | ||||
| for (i = 0, mv = mvert; i < pd->totpoints; i++, mv++) { | for (i = 0; i < pd->totpoints; i++) { | ||||
| float co[3]; | float co[3]; | ||||
| copy_v3_v3(co, mv->co); | copy_v3_v3(co, positions[i]); | ||||
| switch (pd->ob_cache_space) { | switch (pd->ob_cache_space) { | ||||
| case TEX_PD_OBJECTSPACE: | case TEX_PD_OBJECTSPACE: | ||||
| break; | break; | ||||
| case TEX_PD_OBJECTLOC: | case TEX_PD_OBJECTLOC: | ||||
| mul_m4_v3(ob->object_to_world, co); | mul_m4_v3(ob->object_to_world, co); | ||||
| sub_v3_v3(co, ob->loc); | sub_v3_v3(co, ob->loc); | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 92 Lines • Show Last 20 Lines | |||||