[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11602] branches/particles: -unified baking system
Janne Karhu
jhkarh at utu.fi
Tue Aug 14 22:18:30 CEST 2007
Revision: 11602
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11602
Author: jhk
Date: 2007-08-14 22:18:30 +0200 (Tue, 14 Aug 2007)
Log Message:
-----------
-unified baking system
*currently supports particles and soft body (old soft body should convert properly)
*baking everything at the same time
*proper autobaking
*post-bake editing in "bake mode"
*not allowing changes to object data structure after bake (locking modifiers still todo)
*t-key transforms time in bake mode
*bakeable view in outliner
-particle systems are stored as linked lists so in theory no limit to how many systems can be in an object
-new particle system type "hair" for easier hair/fur creation
Quite a lot of code and structures have changed, so a big bug hunt is essential. Files from previous builds won't load, but everything else that's not working should be considered as a new bug and sent to me.
Modified Paths:
--------------
branches/particles/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj
branches/particles/projectfiles_vc7/blender/makesdna/DNA_makesdna.vcproj
branches/particles/projectfiles_vc7/blender/src/BL_src.vcproj
branches/particles/source/blender/blenkernel/BKE_global.h
branches/particles/source/blender/blenkernel/BKE_object.h
branches/particles/source/blender/blenkernel/BKE_particle.h
branches/particles/source/blender/blenkernel/BKE_softbody.h
branches/particles/source/blender/blenkernel/intern/anim.c
branches/particles/source/blender/blenkernel/intern/blender.c
branches/particles/source/blender/blenkernel/intern/depsgraph.c
branches/particles/source/blender/blenkernel/intern/modifier.c
branches/particles/source/blender/blenkernel/intern/object.c
branches/particles/source/blender/blenkernel/intern/particle.c
branches/particles/source/blender/blenkernel/intern/particle_system.c
branches/particles/source/blender/blenkernel/intern/scene.c
branches/particles/source/blender/blenkernel/intern/softbody.c
branches/particles/source/blender/blenloader/intern/readfile.c
branches/particles/source/blender/blenloader/intern/writefile.c
branches/particles/source/blender/include/BIF_outliner.h
branches/particles/source/blender/include/BIF_transform.h
branches/particles/source/blender/include/blendef.h
branches/particles/source/blender/include/butspace.h
branches/particles/source/blender/include/transform.h
branches/particles/source/blender/makesdna/DNA_modifier_types.h
branches/particles/source/blender/makesdna/DNA_object_force.h
branches/particles/source/blender/makesdna/DNA_object_types.h
branches/particles/source/blender/makesdna/DNA_particle_types.h
branches/particles/source/blender/makesdna/DNA_space_types.h
branches/particles/source/blender/makesdna/intern/makesdna.c
branches/particles/source/blender/render/intern/source/convertblender.c
branches/particles/source/blender/src/buttons_editing.c
branches/particles/source/blender/src/buttons_object.c
branches/particles/source/blender/src/buttons_shading.c
branches/particles/source/blender/src/drawobject.c
branches/particles/source/blender/src/drawview.c
branches/particles/source/blender/src/edit.c
branches/particles/source/blender/src/editipo.c
branches/particles/source/blender/src/editmesh.c
branches/particles/source/blender/src/editmesh_add.c
branches/particles/source/blender/src/editmesh_tools.c
branches/particles/source/blender/src/editobject.c
branches/particles/source/blender/src/editscreen.c
branches/particles/source/blender/src/editview.c
branches/particles/source/blender/src/header_ipo.c
branches/particles/source/blender/src/header_oops.c
branches/particles/source/blender/src/header_view3d.c
branches/particles/source/blender/src/outliner.c
branches/particles/source/blender/src/space.c
branches/particles/source/blender/src/toets.c
branches/particles/source/blender/src/transform.c
branches/particles/source/blender/src/transform_conversions.c
branches/particles/source/blender/src/transform_generics.c
branches/particles/source/blender/src/transform_manipulator.c
Added Paths:
-----------
branches/particles/source/blender/blenkernel/BKE_dynamics_bake.h
branches/particles/source/blender/blenkernel/intern/dynamics_bake.c
branches/particles/source/blender/include/BIF_editbake.h
branches/particles/source/blender/src/editbake.c
Removed Paths:
-------------
branches/particles/source/blender/blenkernel/intern/particle_edit.c
Modified: branches/particles/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj
===================================================================
--- branches/particles/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj 2007-08-14 18:06:18 UTC (rev 11601)
+++ branches/particles/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj 2007-08-14 20:18:30 UTC (rev 11602)
@@ -378,6 +378,9 @@
RelativePath="..\..\..\source\blender\blenkernel\intern\displist.c">
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\intern\dynamics_bake.c">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\intern\effect.c">
</File>
<File
@@ -438,9 +441,6 @@
RelativePath="..\..\..\source\blender\blenkernel\intern\particle.c">
</File>
<File
- RelativePath="..\..\..\source\blender\blenkernel\intern\particle_edit.c">
- </File>
- <File
RelativePath="..\..\..\source\blender\blenkernel\intern\particle_system.c">
</File>
<File
@@ -565,6 +565,9 @@
RelativePath="..\..\..\source\blender\blenkernel\BKE_displist.h">
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\BKE_dynamics_bake.h">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\BKE_effect.h">
</File>
<File
Modified: branches/particles/projectfiles_vc7/blender/makesdna/DNA_makesdna.vcproj
===================================================================
--- branches/particles/projectfiles_vc7/blender/makesdna/DNA_makesdna.vcproj 2007-08-14 18:06:18 UTC (rev 11601)
+++ branches/particles/projectfiles_vc7/blender/makesdna/DNA_makesdna.vcproj 2007-08-14 20:18:30 UTC (rev 11602)
@@ -439,6 +439,9 @@
RelativePath="..\..\..\source\blender\makesdna\DNA_armature_types.h">
</File>
<File
+ RelativePath="..\..\..\source\blender\makesdna\DNA_bake_types.h">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\makesdna\DNA_brush_types.h">
</File>
<File
Modified: branches/particles/projectfiles_vc7/blender/src/BL_src.vcproj
===================================================================
--- branches/particles/projectfiles_vc7/blender/src/BL_src.vcproj 2007-08-14 18:06:18 UTC (rev 11601)
+++ branches/particles/projectfiles_vc7/blender/src/BL_src.vcproj 2007-08-14 20:18:30 UTC (rev 11602)
@@ -236,6 +236,9 @@
RelativePath="..\..\..\source\blender\src\editarmature.c">
</File>
<File
+ RelativePath="..\..\..\source\blender\src\editbake.c">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\src\editconstraint.c">
</File>
<File
@@ -633,6 +636,9 @@
RelativePath="..\..\..\source\blender\include\BIF_editarmature.h">
</File>
<File
+ RelativePath="..\..\..\source\blender\include\BIF_editbake.h">
+ </File>
+ <File
RelativePath="..\..\..\source\blender\include\BIF_editconstraint.h">
</File>
<File
Added: branches/particles/source/blender/blenkernel/BKE_dynamics_bake.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_dynamics_bake.h (rev 0)
+++ branches/particles/source/blender/blenkernel/BKE_dynamics_bake.h 2007-08-14 20:18:30 UTC (rev 11602)
@@ -0,0 +1,108 @@
+#ifndef BKE_DYNAMICS_BAKE_H
+#define BKE_DYNAMICS_BAKE_H
+
+struct BakeableSystem;
+struct BakeKey;
+struct BakeBase;
+struct ListBase;
+
+/* number of floats in the struct*/
+#define PARTICLE_CUSTOM_SIZE 8
+
+typedef struct BakeKeyParticle{
+ float ave[3];
+ float rot[4];
+ float weight;
+} BakeKeyParticle;
+
+typedef struct BakeCacheKey{
+ float co[3];
+ float vel[3];
+ float rot[4];
+ float col[4];
+} BakeCacheKey;
+
+typedef struct BakeableAccess{
+ short custom_size, recalc_flag;
+
+ /* starting frame of baking */
+ float (*start_frame)(struct BakeableSystem *bsys);
+
+ /* end frame of baking */
+ float (*end_frame)(struct BakeableSystem *bsys);
+
+ /* timestep needed for next step */
+ float (*get_timestep)(struct BakeableSystem *bsys);
+
+ int (*needs_autobake)(struct BakeableSystem *bsys);
+
+ void (*set_baking)(struct BakeableSystem *bsys);
+ void (*end_baking)(struct BakeableSystem *bsys);
+
+ /* prepare system to continue baking from cfra */
+ void (*set_rebaking)(struct BakeableSystem *bsys, float cfra);
+
+ /* info on the bake, like size in memory, amount of baked keys etc. */
+ char *(*bake_info)(struct BakeableSystem *bsys);
+ /* name for identifying system in menus etc. */
+ char *(*name)(struct BakeableSystem *bsys);
+
+ /* initializes and sets an editing mode for the baked data */
+ void (*set_bake_edit)(struct BakeableSystem *bsys);
+ /* clear out temporary stuff left by the edit mode etc. */
+ void (*end_bake_edit)(struct BakeableSystem *bsys);
+
+ int (*key_needs_saving)(struct BakeableSystem *bsys, int index, float cfra);
+
+ int (*initialize_save_keys)(struct BakeableSystem *bsys, int *avg_keys);
+
+ void (*save_key_from_dynamics)(struct BakeableSystem *bsys, int index, float cfra, struct BakeKey *key, float *ckey);
+ void (*convert_dynamic_key)(struct BakeableSystem *bsys, void *dynkey, struct BakeKey *key, float *ckey);
+ void (*convert_bake_key)(struct BakeableSystem *bsys, struct BakeKey *key, float *ckey, void *dynkey);
+ void (*interpolate_customkey)(struct BakeableSystem *bsys, float *ckey1, float *ckey2, float keytime, float *ckey);
+ void (*convert_to_global_space)(struct BakeableSystem *bsys, int index, struct BakeKey *key, float *ckey);
+
+ void (*remove_set_elements)(struct BakeableSystem *bsys, int new_totbel);
+} BakeableAccess;
+
+#define BSYS_FIRST_KEY -1
+#define BSYS_NO_KEY 0
+#define BSYS_BAKE_KEY 1
+#define BSYS_LAST_KEY 2
+
+int dynamicsbake_test();
+struct BakeableSystem *DB_find_bsys(struct ListBase *bakeable, void *system);
+struct BakeBase *DB_find_bbase(struct ListBase *bakeable, void *system);
+int DB_has_hair(struct ListBase *bakeable);
+void DB_free_bsys(struct BakeableSystem *bsys);
+void DB_free_bbase(struct BakeBase *bbase);
+void DB_copy_key(struct BakeKey *to, struct BakeKey *from);
+int DB_count_keys(struct BakeableSystem *bsys);
+struct BakeBase *DB_new_BakeBase();
+void DB_copy_BakeableSystem(struct BakeableSystem *to, struct BakeableSystem *from);
+
+int DB_get_key_at_time(struct BakeableSystem *bsys, int index, float time, struct BakeKey *key, float *ckey);
+void DB_get_key_on_path(struct BakeableSystem *bsys, int index, float path, struct BakeKey *key, float *ckey);
+void DB_save_keys(struct BakeableSystem *bsys, float cfra);
+
+void DB_init_keyloop(struct BakeableSystem *bsys);
+struct BakeKey *DB_next_keyloop(struct BakeableSystem *bsys, int *bel_index);
+
+char *DB_menu_string(struct Object *ob, int for_soft);
+
+void free_cached_child_paths(struct BakeableSystem *bsys);
+void DB_free_cached_paths(struct BakeableSystem *bsys);
+void DB_cache_paths(struct BakeableSystem *bsys, float time);
+void DB_save_keys(struct BakeableSystem *bsys, float cfra);
+void DB_free_bake(struct BakeableSystem *bsys);
+
+struct ListBase *DB_get_all_systems_to_bake();
+struct ListBase *DB_get_all_autobake_systems();
+void DB_unified_bake_cb(void *arg1, void *arg2);
+void DB_single_bake_cb(void *bsys, void *arg2);
+void DB_unified_bake(struct ListBase *bakelist, int from_cfra, int autobake);
+
+struct BakeBase *DB_psys_to_BakeBase(struct Object *ob, struct ParticleSystem *psys);
+struct BakeBase *DB_soft_to_BakeBase(struct Object *ob, struct SoftBody *sb);
+struct BakeableAccess *access_BakeableSystem(struct BakeableSystem *bsys);
+#endif
\ No newline at end of file
Modified: branches/particles/source/blender/blenkernel/BKE_global.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_global.h 2007-08-14 18:06:18 UTC (rev 11601)
+++ branches/particles/source/blender/blenkernel/BKE_global.h 2007-08-14 20:18:30 UTC (rev 11602)
@@ -190,7 +190,7 @@
#define G_DRAWSHARP (1 << 28) /* draw edges with the sharp flag */
#define G_SCULPTMODE (1 << 29)
-#define G_PARTICLEEDIT (1 << 30)
+#define G_BAKEEDIT (1 << 30)
/* G.fileflags */
Modified: branches/particles/source/blender/blenkernel/BKE_object.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_object.h 2007-08-14 18:06:18 UTC (rev 11601)
+++ branches/particles/source/blender/blenkernel/BKE_object.h 2007-08-14 20:18:30 UTC (rev 11602)
@@ -79,6 +79,7 @@
void make_local_object(struct Object *ob);
void set_mblur_offs(float blur);
void set_field_offs(float field);
+void set_bake_offs(float bake);
void disable_speed_curve(int val);
float bsystem_time(struct Object *ob, struct Object *par, float cfra, float ofs);
Modified: branches/particles/source/blender/blenkernel/BKE_particle.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_particle.h 2007-08-14 18:06:18 UTC (rev 11601)
+++ branches/particles/source/blender/blenkernel/BKE_particle.h 2007-08-14 20:18:30 UTC (rev 11602)
@@ -12,17 +12,21 @@
struct Group;
struct ListBase;
-typedef struct ParticleTreeNode{
- struct ParticleTreeNode *left, *right;
+struct BakeKey;
+struct IpoCurve;
+struct ModifierData;
+
+typedef struct KDTreeNode{
+ struct KDTreeNode *left, *right;
float co[3];
int nbr;
short d;
-} ParticleTreeNode;
+} KDTreeNode;
-typedef struct ParticleTreeNearest {
+typedef struct KDTreeNearest {
int num;
float dist, co[3];
-}ParticleTreeNearest;
+} KDTreeNearest;
typedef struct ParticleEffectorCache {
struct ParticleEffectorCache *next, *prev;
@@ -37,7 +41,7 @@
float *face_minmax;
float *vert_cos;
/* precalculated variables for boids */
- struct ParticleTreeNode *tree;
+ struct KDTreeNode *tree;
short type, psys_nbr;
@@ -61,35 +65,6 @@
float length, clump, kink; /* used in path caching */
} ParticleTexture;
-typedef struct ParticleUndo {
- struct ParticleUndo *next, *prev;
- struct ParticleKey **keys;
- struct ParticleData *particles;
- ParticleTreeNode *emitter_field;
- float **lengths;
- float **wcos;
- float *emitter_cosnos;
- int totpart, totpoint;
- char name[64];
-} ParticleUndo;
-
-typedef struct ParticleEditPath{
- ListBase undo;
- ParticleUndo *curundo;
- ParticleTreeNode *emitter_field;
- float **lengths;
- float *emitter_cosnos;
- float **world_cos;
- float sta, end, life, size; /* average values for selected particles */
- float o_sta, o_end, o_life, o_size;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list