[Bf-blender-cvs] [dfe61958a7e] hair_guides_grooming: Fix crashes when creating multiple scalp regions.
Lukas Tönne
noreply at git.blender.org
Thu Jun 28 10:10:09 CEST 2018
Commit: dfe61958a7e50e2d290589faa07ca3b0c243cb1a
Author: Lukas Tönne
Date: Thu Jun 28 06:13:54 2018 +0100
Branches: hair_guides_grooming
https://developer.blender.org/rBdfe61958a7e50e2d290589faa07ca3b0c243cb1a
Fix crashes when creating multiple scalp regions.
===================================================================
M source/blender/blenkernel/intern/groom.c
M source/blender/draw/intern/draw_cache_impl_groom.c
===================================================================
diff --git a/source/blender/blenkernel/intern/groom.c b/source/blender/blenkernel/intern/groom.c
index 699b4894519..4d43864dc4d 100644
--- a/source/blender/blenkernel/intern/groom.c
+++ b/source/blender/blenkernel/intern/groom.c
@@ -1381,7 +1381,7 @@ void BKE_groom_hair_update_guide_curves(const Depsgraph *depsgraph, Groom *groom
BKE_hair_set_guide_curve(
hsys,
- i,
+ guide_idx,
&bundle->guides[i].root,
numverts[guide_idx],
taper_length,
diff --git a/source/blender/draw/intern/draw_cache_impl_groom.c b/source/blender/draw/intern/draw_cache_impl_groom.c
index c6b4521abfb..216a8ac7bc5 100644
--- a/source/blender/draw/intern/draw_cache_impl_groom.c
+++ b/source/blender/draw/intern/draw_cache_impl_groom.c
@@ -378,7 +378,6 @@ typedef struct GroomRenderData
int curve_res;
int tri_len; /* Total mlooptri array length */
- int section_tri_len; /* Number of looptri per section polygon */
struct MLoopTri *mlooptri; /* Triangulation data for sections */
} GroomRenderData;
@@ -404,10 +403,11 @@ static GroomRenderData* groom_render_data_create(Groom *groom)
totpoly += numpolys;
totvert += region->numverts * numpolys;
- rdata->section_tri_len = poly_to_tri_count(1, region->numverts);
- rdata->tri_len = rdata->section_tri_len * numpolys;
- /* Polygons are unconnected, no shared vertices */
- BLI_assert(rdata->tri_len == poly_to_tri_count(numpolys, region->numverts * numpolys));
+ /* Polygons are unconnected, no shared vertices,
+ * same vertex number for each section polygon.
+ */
+ int section_tri_len = poly_to_tri_count(1, region->numverts);
+ rdata->tri_len += section_tri_len * numpolys;
}
}
@@ -733,10 +733,11 @@ static void groom_get_faces(
if (numshapeverts > 1)
{
const MLoopTri *mtri = rdata->mlooptri;
+ int section_tri_len = poly_to_tri_count(1, region->numverts);
/* Skip the root section */
for (int i = 1; i < bundle->totsections; ++i)
{
- for (int j = 0; j < rdata->section_tri_len; ++j, ++mtri)
+ for (int j = 0; j < section_tri_len; ++j, ++mtri)
{
GWN_indexbuf_add_tri_verts(
&elb,
More information about the Bf-blender-cvs
mailing list