diff options
author | Ton Roosendaal <ton@blender.org> | 2005-09-26 19:34:21 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-09-26 19:34:21 +0400 |
commit | 43d290403704a0b953949ac2ca82c251feee0133 (patch) | |
tree | 6a7324f6fb3b83296c3c61c9e96edc707d78b23b /source/blender/blenloader/intern/readfile.c | |
parent | 9656e8be02972740055f3614590645535840acc9 (diff) |
Cleanup and new features for vertex keys.
User doc: http://www.blender3d.org/cms/Shape_Keys.678.0.html
- The mixed use of "Vertex Key","Key" or "RVK" in Blender was a bit
confusing. Also a 'vertex key' assumes keys per vertex, which actually is
only a single key for the entire shape. The discussions on blender.org
forums all mentioned "Shape" or "Blend Shapes", which I think is an OK
name for a "Vertex Key" in the UI. :)
- Most work was code spaghetti cleanup. Doing shape-keys now nicely goes
via the depgraph and DerivedMesh. That then allows to have different
shapes per object, with the new "Pin" feature.
Objects now define what Shape is shown (ob->shapenr)
- Added a Shape Panel in the Edit buttons with the various options
- Fixed a lot of issues in the IpoWindow, with drawing the channels.
For example, deleting a key-line there caused the entire Relative option to
go wrong, same for moving the lines up/down.
Changing key-line order now reflects in order of channels. The active
Shape is drawn more clear now too.
- Noticed it doesnt work yet for curves/lattice. Need modifier advise!
Diffstat (limited to 'source/blender/blenloader/intern/readfile.c')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a632b2bb12e..1fcc572238c 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4848,6 +4848,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Object *ob; bArmature *arm; Mesh *me; + Key *key; Scene *sce= main->scene.first; while(sce){ @@ -4941,6 +4942,29 @@ static void do_versions(FileData *fd, Library *lib, Main *main) mesh_strip_loose_faces(me); } } + + for(key= main->key.first; key; key= key->id.next) { + KeyBlock *kb; + int index= 1; + + /* trick to find out if we already introduced adrcode */ + for(kb= key->block.first; kb; kb= kb->next) + if(kb->adrcode) break; + + if(kb==NULL) { + for(kb= key->block.first; kb; kb= kb->next) { + if(kb==key->refkey) { + if(kb->name[0]==0) + strcpy(kb->name, "Basis"); + } + else { + if(kb->name[0]==0) + sprintf(kb->name, "Key %d", index); + kb->adrcode= index++; + } + } + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ |