diff options
author | Ton Roosendaal <ton@blender.org> | 2005-02-25 22:01:13 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-02-25 22:01:13 +0300 |
commit | 76500cd1ed76267d0e189e8de2c0e9534362c570 (patch) | |
tree | 3a1e4e4d12a1c036a28be7b9cd38289283a333bf | |
parent | bca210bc04ca74beb658e1a261b65d095235f503 (diff) |
Transform; correct inverse parent implementation for translating children
-rwxr-xr-x | source/blender/src/transform.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/source/blender/src/transform.c b/source/blender/src/transform.c index 54586e3c185..28b4be809d4 100755 --- a/source/blender/src/transform.c +++ b/source/blender/src/transform.c @@ -155,7 +155,6 @@ void createTransTexspace(void) Object *ob; ID *id; - ob= OBACT; Trans.total = 1; td= Trans.data= MEM_callocN(sizeof(TransData), "TransTexspace"); @@ -840,17 +839,16 @@ static void ObjectToTransData(TransData *td, Object *ob) Mat3CpyMat4(td->mtx, ob->obmat); - object_to_mat3(ob, obmtx); - - /* - Mat3CpyMat4(totmat, ob->obmat); - Mat3Inv(obinv, totmat); - Mat3MulMat3(td->smtx, obmtx, obinv); - */ if (ob->parent) { - Mat3CpyMat4(td->mtx, ob->parent->obmat); - Mat3Inv(td->smtx, td->mtx); + float totmat[3][3], obinv[3][3]; + + /* we calculate smtx without obmat: so a parmat */ + object_to_mat3(ob, obmtx); + Mat3CpyMat4(totmat, ob->obmat); + Mat3Inv(obinv, totmat); + Mat3MulMat3(td->smtx, obmtx, obinv); + Mat3Inv(td->mtx, td->smtx); } else { |