diff options
author | Ton Roosendaal <ton@blender.org> | 2005-05-02 17:28:13 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-05-02 17:28:13 +0400 |
commit | 42126cb5fcceda5485d02af7efbfe996b4aae160 (patch) | |
tree | 12dfc4c41f600ca481a50be691e9fe0058d741fc /source/blender/blenloader/intern/writefile.c | |
parent | 2606a5c5d37e6460066dae78e88d47fde6552c65 (diff) |
Added baking for softbodies.
Works as follows;
- press the 'show bake settings' button (no space left... :)
- define start/end frame for bake, and an interval step.
The baked result interpolates nicely (Bspline, 4 keys) so in general a
step size of 2 or 3 still gives OK results.
- Press "BAKE". This will do a full animation + playback. Press ESC if it
you don't want it.
Once Baked, the BAKE button becomes a FREE BAKE. As reminder the softbody
buttons get blocked with error() menu.
This saves OK in a file. Renders any frame, including fields and moblur.
You can also set a "Timeoffs" for the softbody. And yes, this should be
in the NLA once... :)
NOTE! With this commit, files saved with the old (first commit) version by
Jens Ole won't read the settings back... he stored all sofbody variables in
Object, which was moved to a new struct when I did my first commit on SB
(over a month ago)
Also note that I moved particle deflecting & softbody to a new include.
Diffstat (limited to 'source/blender/blenloader/intern/writefile.c')
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 61 |
1 files changed, 36 insertions, 25 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 00b29f32127..419897706fd 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -100,44 +100,45 @@ Important to know is that 'streaming' has been added to files, for Blender Publi #include "nla.h" // __NLA is defined -#include "DNA_packedFile_types.h" -#include "DNA_sdna_types.h" -#include "DNA_property_types.h" -#include "DNA_sensor_types.h" -#include "DNA_controller_types.h" +#include "DNA_armature_types.h" +#include "DNA_action_types.h" #include "DNA_actuator_types.h" -#include "DNA_effect_types.h" -#include "DNA_object_types.h" -#include "DNA_userdef_types.h" -#include "DNA_vfont_types.h" -#include "DNA_ipo_types.h" +#include "DNA_controller_types.h" #include "DNA_curve_types.h" +#include "DNA_constraint_types.h" #include "DNA_camera_types.h" +#include "DNA_effect_types.h" +#include "DNA_group_types.h" +#include "DNA_image_types.h" +#include "DNA_ika_types.h" +#include "DNA_ipo_types.h" +#include "DNA_fileglobal_types.h" +#include "DNA_key_types.h" +#include "DNA_lattice_types.h" +#include "DNA_listBase.h" /* for Listbase, the type of samples, ...*/ +#include "DNA_lamp_types.h" #include "DNA_meta_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_material_types.h" -#include "DNA_lattice_types.h" -#include "DNA_armature_types.h" -#include "DNA_sequence_types.h" -#include "DNA_ika_types.h" -#include "DNA_group_types.h" +#include "DNA_nla_types.h" +#include "DNA_object_types.h" +#include "DNA_object_force.h" #include "DNA_oops_types.h" +#include "DNA_packedFile_types.h" +#include "DNA_property_types.h" +#include "DNA_scene_types.h" +#include "DNA_sdna_types.h" +#include "DNA_sequence_types.h" +#include "DNA_sensor_types.h" #include "DNA_space_types.h" #include "DNA_screen_types.h" -#include "DNA_view3d_types.h" -#include "DNA_lamp_types.h" -#include "DNA_fileglobal_types.h" #include "DNA_sound_types.h" #include "DNA_texture_types.h" #include "DNA_text_types.h" -#include "DNA_image_types.h" -#include "DNA_key_types.h" -#include "DNA_scene_types.h" -#include "DNA_constraint_types.h" -#include "DNA_listBase.h" /* for Listbase, the type of samples, ...*/ -#include "DNA_action_types.h" -#include "DNA_nla_types.h" +#include "DNA_view3d_types.h" +#include "DNA_vfont_types.h" +#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" // MEM_freeN #include "BLI_blenlib.h" @@ -661,6 +662,7 @@ static void write_objects(WriteData *wd, ListBase *idbase) { Object *ob; ObHook *hook; + int a; ob= idbase->first; while(ob) { @@ -684,6 +686,15 @@ static void write_objects(WriteData *wd, ListBase *idbase) writestruct(wd, DATA, "PartDeflect", 1, ob->pd); writestruct(wd, DATA, "SoftBody", 1, ob->soft); + if(ob->soft) { + SoftBody *sb= ob->soft; + if(sb->keys) { + writedata(wd, DATA, sizeof(void *)*sb->totkey, sb->keys); + for(a=0; a<sb->totkey; a++) { + writestruct(wd, DATA, "SBVertex", sb->totpoint, sb->keys[a]); + } + } + } for(hook= ob->hooks.first; hook; hook= hook->next) { writestruct(wd, DATA, "ObHook", 1, hook); |