Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Felke <martin.felke@googlemail.com>2019-06-17 11:59:55 +0300
committerMartin Felke <martin.felke@googlemail.com>2019-06-17 11:59:55 +0300
commitaf7032e9f056c0ee5968015c64d63bf2d3c18031 (patch)
tree96ff3fc5ae710f2f49e767f88f911508cb1724ca
parent9c1016b74e15cb038f91b4f8aad56cf9c30397fe (diff)
only write rotation data to mesh if particle rotation was enabled
-rw-r--r--source/blender/blenkernel/intern/fracture.c7
-rw-r--r--source/blender/modifiers/intern/MOD_remesh.c57
2 files changed, 40 insertions, 24 deletions
diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index 4b458cfd405..4c593f25ac3 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -4249,9 +4249,9 @@ void BKE_read_animated_loc_rot(FractureModifierData *fmd, Object *ob, bool do_bi
copy_v3_v3(co, mvert[v].co);
copy_v3_v3(off, fmd->anim_bind[i].offset);
- //if (fmd->anim_mesh_rot)
+ if (fmd->anim_mesh_rot)
{
- if (quats && fmd->anim_mesh_rot)
+ if (quats)
{
quat[0] = quatX[v];
quat[1] = quatY[v];
@@ -4297,8 +4297,9 @@ void BKE_read_animated_loc_rot(FractureModifierData *fmd, Object *ob, bool do_bi
copy_v3_v3(mi->rigidbody->pos, co);
+ if (fmd->anim_mesh_rot)
{
- if (quats && fmd->anim_mesh_rot) {
+ if (quats) {
//if rotations are changed, re-bind the object to fix
mul_qt_qtqt(quat, ob_quat, quat);
}
diff --git a/source/blender/modifiers/intern/MOD_remesh.c b/source/blender/modifiers/intern/MOD_remesh.c
index 173d7d16a74..3f5899beb5d 100644
--- a/source/blender/modifiers/intern/MOD_remesh.c
+++ b/source/blender/modifiers/intern/MOD_remesh.c
@@ -265,10 +265,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
velY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "velY");
velZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "velZ");
- quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatX");
- quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatY");
- quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatZ");
- quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatW");
+ if (psys->part->flag & PART_ROTATIONS)
+ {
+ quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatX");
+ quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatY");
+ quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatZ");
+ quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatW");
+ }
orig_index = CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, n);
@@ -281,10 +284,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
velY[i] = vel[i][1];
velZ[i] = vel[i][2];
- quatX[i] = rot[i][0];
- quatY[i] = rot[i][1];
- quatZ[i] = rot[i][2];
- quatW[i] = rot[i][3];
+ if (quatX)
+ {
+ quatX[i] = rot[i][0];
+ quatY[i] = rot[i][1];
+ quatZ[i] = rot[i][2];
+ quatW[i] = rot[i][3];
+ }
orig_index[i] = index[i];
}
@@ -328,11 +334,14 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
velX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "velX");
velY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "velY");
velZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "velZ");
-
- quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatX");
- quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatY");
- quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatZ");
- quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatW");
+
+ if (psys->part->flag & PART_ROTATIONS)
+ {
+ quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatX");
+ quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatY");
+ quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatZ");
+ quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatW");
+ }
orig_index = CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, n + derived->numVertData);
@@ -362,10 +371,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
velY[i] = vel[i][1];
velZ[i] = vel[i][2];
- quatX[i] = rot[i][0];
- quatY[i] = rot[i][1];
- quatZ[i] = rot[i][2];
- quatW[i] = rot[i][3];
+ if (quatX)
+ {
+ quatX[i] = rot[i][0];
+ quatY[i] = rot[i][1];
+ quatZ[i] = rot[i][2];
+ quatW[i] = rot[i][3];
+ }
orig_index[i] = index[i];
@@ -384,10 +396,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
velY[i] = ovY ? ovY[i-n] : 0.0f;
velZ[i] = ovZ ? ovZ[i-n] : 0.0f;
- quatX[i] = oqX ? oqX[i-n] : 1.0f;
- quatZ[i] = oqY ? oqY[i-n] : 0.0f;
- quatY[i] = oqZ ? oqZ[i-n] : 0.0f;
- quatW[i] = oqW ? oqW[i-n] : 0.0f;
+ if (quatX)
+ {
+ quatX[i] = oqX ? oqX[i-n] : 1.0f;
+ quatZ[i] = oqY ? oqY[i-n] : 0.0f;
+ quatY[i] = oqZ ? oqZ[i-n] : 0.0f;
+ quatW[i] = oqW ? oqW[i-n] : 0.0f;
+ }
orig_index[i] = i;
if (dvert_new && dvert && defgrp_size > -1)