diff options
author | Andre Susano Pinto <andresusanopinto@gmail.com> | 2008-07-19 02:24:20 +0400 |
---|---|---|
committer | Andre Susano Pinto <andresusanopinto@gmail.com> | 2008-07-19 02:24:20 +0400 |
commit | 59a2b5017185369836678b14325666f62dba9311 (patch) | |
tree | cbb6fb4b4fb2b7fd46446eba9513b80a0f66d8f7 /source/blender/blenkernel/BKE_shrinkwrap.h | |
parent | 8d94bfec1b9f692474d74441ec92ef5d3765e8e5 (diff) |
*Added "kept" mesh above surface option on shrinkwrap to nearest surface
changed a few code relative to project over normal mode (to try to kept code generic and more independent of modifier itself)
Diffstat (limited to 'source/blender/blenkernel/BKE_shrinkwrap.h')
-rw-r--r-- | source/blender/blenkernel/BKE_shrinkwrap.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_shrinkwrap.h b/source/blender/blenkernel/BKE_shrinkwrap.h index b0a40768e8b..a512c1d57cb 100644 --- a/source/blender/blenkernel/BKE_shrinkwrap.h +++ b/source/blender/blenkernel/BKE_shrinkwrap.h @@ -42,7 +42,27 @@ typedef char* BitSet; #define bitset_unset(set,index) ((set)[(index)>>3] &= ~(1 << ((index)&0x7))) +/* SpaceTransform stuff */ +//TODO: should move to other generic space? +struct Object; + +typedef struct SpaceTransform +{ + float local2target[4][4]; + float target2local[4][4]; + +} SpaceTransform; + +void space_transform_setup(SpaceTransform *data, struct Object *local, struct Object *target); +void space_transform_apply (SpaceTransform *data, float *co); +void space_transform_invert(SpaceTransform *data, float *co); + +void space_transform_apply_normal (SpaceTransform *data, float *co); +void space_transform_invert_normal(SpaceTransform *data, float *co); + + +/* Shrinkwrap stuff */ struct Object; struct DerivedMesh; struct ShrinkwrapModifierData; @@ -59,9 +79,7 @@ typedef struct ShrinkwrapCalcData struct DerivedMesh *target; //mesh we are shrinking to - //matrixs for local<->target space transform - float local2target[4][4]; - float target2local[4][4]; + SpaceTransform local2target; float keptDist; //Distance to kept from target (units are in local space) //float *weights; //weights of vertexs @@ -75,6 +93,7 @@ void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *data); struct DerivedMesh *shrinkwrapModifier_do(struct ShrinkwrapModifierData *smd, struct Object *ob, struct DerivedMesh *dm, int useRenderParams, int isFinalCalc); + #endif |