[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11176] branches/particles/source/blender: *bugs fixed:

Janne Karhu janne.karhu at utu.fi
Fri Jul 6 03:10:29 CEST 2007


Revision: 11176
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11176
Author:   jhk
Date:     2007-07-06 03:10:28 +0200 (Fri, 06 Jul 2007)

Log Message:
-----------
*bugs fixed:
	-"none" visualization didn't show the option to render emitter
	-particles baked in object space crashed in particle mode due to a typo
	-vortex effector still had some quirks so now finally after a total recode it works like it's supposed to
	-object's dupli flag didn't get updated properly when previously existing particle settings were used to add a particle system to an object
	-tips couldn't allways be selected properly in particle mode
	-transform manipulator center was wrong in particle mode
*new things:
	-code cleaning with the help of theeth
	-children between parents are weighted a bit better so removed the "N" variable. As a result old blends using child particles may not load correctly. If this happens open the blend with an old build, disable children, save and then load in the new build. This should hopefully allow load without crashing.
	-"between faces children" can spread over faces for fine control of hair edges on surface
	-"between faces children" can use seams of the emitter's edges to define what parents are used for what children --> parting of hair! (if edge groups are implemented this should be changed to be a user definable edge group instead of using the seam flag)
	-boids are effected by spherical effector particles (time for some hunters vs. prey!)
	-boids are effected by wind effectors (they create an actual air speed around the boids)
	-boids are effected by curve effectors (creates a boid dependent moving goal, with "min size" parameter as the strength of the goal)
	-billboards can be aligned to particle velocity

Modified Paths:
--------------
    branches/particles/source/blender/blenkernel/BKE_particle.h
    branches/particles/source/blender/blenkernel/intern/anim.c
    branches/particles/source/blender/blenkernel/intern/constraint.c
    branches/particles/source/blender/blenkernel/intern/depsgraph.c
    branches/particles/source/blender/blenkernel/intern/library.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_edit.c
    branches/particles/source/blender/blenkernel/intern/particle_system.c
    branches/particles/source/blender/blenkernel/intern/softbody.c
    branches/particles/source/blender/makesdna/DNA_object_force.h
    branches/particles/source/blender/makesdna/DNA_particle_types.h
    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/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/editobject.c
    branches/particles/source/blender/src/header_view3d.c
    branches/particles/source/blender/src/space.c
    branches/particles/source/blender/src/toets.c
    branches/particles/source/blender/src/transform_conversions.c
    branches/particles/source/blender/src/transform_manipulator.c

Modified: branches/particles/source/blender/blenkernel/BKE_particle.h
===================================================================
--- branches/particles/source/blender/blenkernel/BKE_particle.h	2007-07-05 18:14:35 UTC (rev 11175)
+++ branches/particles/source/blender/blenkernel/BKE_particle.h	2007-07-06 01:10:28 UTC (rev 11176)
@@ -12,8 +12,20 @@
 struct Group;
 struct ListBase;
 
-typedef struct pNewEffectorCache {
-	struct pNewEffectorCache *next, *prev;
+typedef struct ParticleTreeNode{
+	struct ParticleTreeNode *left, *right;
+	float co[3];
+	int nbr;
+	short d;
+} ParticleTreeNode;
+
+typedef struct ParticleTreeNearest {
+	int num;
+	float dist, co[3];
+}ParticleTreeNearest;
+
+typedef struct ParticleEffectorCache {
+	struct ParticleEffectorCache *next, *prev;
 	Object *ob;
 	
 	/* precalculated variables for guides */
@@ -24,11 +36,13 @@
 	float ob_minmax[6];
 	float *face_minmax;
 	float *vert_cos;
+	/* precalculated variables for boids */
+	struct ParticleTreeNode *tree;
 
 	short type, psys_nbr;
 	
 	Object obcopy;	/* for restoring transformation data */
-} pNewEffectorCache;
+} ParticleEffectorCache;
 
 typedef struct ParticleReactEvent {
 	struct ParticleReactEvent *next, *prev;
@@ -47,18 +61,6 @@
 	float length, clump, kink;		/* used in path caching */
 } ParticleTexture;
 
-typedef struct ParticleTreeNode{
-	struct ParticleTreeNode *left, *right;
-	float co[3];
-	int nbr;
-	short d;
-} ParticleTreeNode;
-
-typedef struct ParticleTreeNearest {
-	int num;
-	float dist;
-}ParticleTreeNearest;
-
 typedef struct ParticleUndo {
 	struct ParticleUndo *next, *prev;
 	struct ParticleKey **keys;
@@ -98,53 +100,59 @@
 	void (*Copyf)(float *v1, float *v2);
 } BoidVecFunc;
 
+typedef struct ParticleSeam{
+	float v0[3], v1[3];
+	float nor[3], dir[3], tan[3];
+	float length2;
+} ParticleSeam;
+
 /* ----------- functions needed outside particlesystem ---------------- */
 /* particle.c */
 int count_particles(struct ParticleSystem *psys);
 int count_particles_mod(struct ParticleSystem *psys, int totgr, int cur);
 int count_psyskeys(struct ParticleSystem *psys);
 
-struct ParticleSystem *get_current_psys(struct Object *ob);
-struct ParticleSystem *get_psys(struct Object *ob, int index);
-struct ParticleData *get_selected_particle(struct ParticleSystem *psys, int *index);
-struct ParticleKey *get_particle_selected_key(struct ParticleSystem *psys, int pa_index, int *key_index);
-void particles_change_act(void *ob_v, void *old_act);
-struct Object *get_particle_lattice(struct ParticleSystemModifierData *psmd);
+struct ParticleSystem *psys_get_current(struct Object *ob);
+struct ParticleSystem *psys_get(struct Object *ob, int index);
+struct ParticleData *psys_get_selected_particle(struct ParticleSystem *psys, int *index);
+struct ParticleKey *psys_get_selected_key(struct ParticleSystem *psys, int pa_index, int *key_index);
+void psys_change_act(void *ob_v, void *old_act);
+struct Object *psys_get_lattice(struct ParticleSystemModifierData *psmd);
 
-void free_particleSettings(struct ParticleSettings *part);
-void particle_system_free_bake(struct ParticleSystem *psys);
-void free_particle_path_cache(struct ParticleSystem *psys);
-void free_particles(struct Object * ob, struct ParticleSystem * psys, int sys);
-void remove_from_particle_list(struct Object *ob, short nbr, struct ParticleSystem *psys);
+void psys_free_settings(struct ParticleSettings *part);
+void psys_free_bake(struct ParticleSystem *psys);
+void psys_free_path_cache(struct ParticleSystem *psys);
+void psys_free(struct Object * ob, struct ParticleSystem * psys);
+void psys_remove_from_particle_list(struct Object *ob, short nbr, struct ParticleSystem *psys);
 
-void interpolate_face_uvs(struct MTFace *tface, int quad, float *uv, float *uvco);
+void psys_interpolate_uvs(struct MTFace *tface, int quad, float *uv, float *uvco);
 
 void copy_particle_key(struct ParticleKey *to, struct ParticleKey *from, int time);
 
-void particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, float *fuv, float *vec, float *nor, float *utan, float *vtan);
-struct ParticleSystemModifierData *get_particle_modifier(struct Object *ob, struct ParticleSystem *psys);
+void psys_particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, float *fuv, float *vec, float *nor, float *utan, float *vtan);
+struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct ParticleSystem *psys);
 
-struct ParticleSettings *new_particle_settings(char *name);
-struct ParticleSettings *copy_particle_settings(struct ParticleSettings *part);
-void flush_particlesettings(struct ParticleSettings *part, int event);
+struct ParticleSettings *psys_new_settings(char *name);
+struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part);
+void psys_flush_settings(struct ParticleSettings *part, int event);
 
-void find_particle_parents(struct ParticleSystemModifierData *psmd, struct ParticleSystem *psys);
+void psys_find_parents(struct ParticleSystemModifierData *psmd, struct ParticleSystem *psys);
 
-void cache_particle_paths(struct Object *ob, struct ParticleSystemModifierData *psmd, struct ParticleSystem *psys, float cfra);
-void particle_guide(struct ParticleKey *state, int pa_num, float time, struct ListBase *lb);
-float get_particle_size(struct Material *ma, struct ParticleSystemModifierData *psmd, struct IpoCurve *icu_size, struct ParticleSystem *psys, struct ParticleSettings *part, struct ParticleData *pa, float *vg_size);
-float get_particle_timestep(struct ParticleSettings *part);
-float get_child_particle_time(struct ParticleSystem *psys, int child_nbr, float cfra);
-float get_child_particle_size(struct ParticleSystem *psys, int child_nbr, float cfra, float *pa_time);
-void get_particle_on_path(struct Object *ob, struct ParticleSystem *psys, int pa_num, struct ParticleKey *state, int vel);
-int get_particle_state(struct Object *ob, struct ParticleSystem *psys, int p, struct ParticleKey *state, int allways);
+void psys_cache_paths(struct Object *ob, struct ParticleSystemModifierData *psmd, struct ParticleSystem *psys, float cfra);
+void do_guide(struct ParticleKey *state, int pa_num, float time, struct ListBase *lb);
+float psys_get_size(struct Material *ma, struct ParticleSystemModifierData *psmd, struct IpoCurve *icu_size, struct ParticleSystem *psys, struct ParticleSettings *part, struct ParticleData *pa, float *vg_size);
+float psys_get_timestep(struct ParticleSettings *part);
+float psys_get_child_time(struct ParticleSystem *psys, int child_nbr, float cfra);
+float psys_get_child_size(struct ParticleSystem *psys, int child_nbr, float cfra, float *pa_time);
+void psys_get_particle_on_path(struct Object *ob, struct ParticleSystem *psys, int pa_num, struct ParticleKey *state, int vel);
+int psys_get_particle_state(struct Object *ob, struct ParticleSystem *psys, int p, struct ParticleKey *state, int allways);
 
 /* particle_system.c */
-int count_keyed_particle_targets(struct Object *ob, struct ParticleSystem *psys);
-void get_reactor_particle_target(struct Object *ob, struct ParticleSystem *psys, Object **target_ob, struct ParticleSystem **target_psys);
+int psys_count_keyed_targets(struct Object *ob, struct ParticleSystem *psys);
+void psys_get_reactor_target(struct Object *ob, struct ParticleSystem *psys, Object **target_ob, struct ParticleSystem **target_psys);
 
-void pdInitEffectorsNew(struct Object *obsrc, struct Group *group, struct ParticleSystem *psys);
-void pdEndEffectorsNew(struct ParticleSystem *psys);
+void psys_init_effectors(struct Object *obsrc, struct Group *group, struct ParticleSystem *psys);
+void psys_end_effectors(struct ParticleSystem *psys);
 
 void particle_system_update(struct Object *ob, struct ParticleSystem *psys);
 
@@ -152,23 +160,23 @@
 void foreach_particle(struct ParticleSystem *psys, void (*func)(ParticleSystem *psys, int index, void *userData), void *userData);
 void particle_select_root(struct ParticleSystem *psys, int index, void *userData);
 void particle_select_tip(struct ParticleSystem *psys, int index, void *userData);
-void particle_edit_apply_averages(void);
-void particle_edit_keytime_change(void);
-void set_particleedit(void);
+void pe_apply_averages(void);
+void pe_keytime_change(void);
+void set_particle_edit(void);
 void mouse_particles(void);
 void select_linked_particles(void);
 void particle_borderselect(void);
-void brush_particles(void);
+void pe_brush_particles(void);
 void deselectall_particle(void);
 void particle_selectionCB(short selecting, struct Object *editobj, short *mval, float rad);
 void do_lasso_select_particles(short mcords[][2], short moves, short select);
 void select_less_particle(void);
 void select_more_particle(void);
 void hide_particles(void);
-void rekey_particles(void);
-void subdivide_particles(void);
-void delete_particle(void);
-void particle_edit_averages_change(void);
+void pe_rekey(void);
+void pe_subdivide(void);
+void pe_delete_particle(void);
+void pe_averages_change(void);
 
 void undo_push_particle(char *str);
 void particle_undo(void);
@@ -177,39 +185,39 @@
 
 /* ----------- functions needed only inside particlesystem ------------ */
 /* particle.c */
-void particle_key_to_object(struct Object *ob, struct ParticleKey *key, float imat[][4]);
-void particle_key_to_geometry(struct DerivedMesh *dm, struct ParticleData *pa, struct ParticleKey *key);
-void particle_key_from_geometry(struct DerivedMesh *dm, struct ParticleData *pa, struct ParticleKey *key);
-void particle_geometry_mat(struct DerivedMesh *dm, struct ParticleData *pa, float mat[][4]);
-void particle_vec_from_geometry(struct DerivedMesh *dm, struct ParticleData *pa, float *vec);
+void psys_key_to_object(struct Object *ob, struct ParticleKey *key, float imat[][4]);
+void psys_key_to_geometry(struct DerivedMesh *dm, struct ParticleData *pa, struct ParticleKey *key);
+void psys_key_from_geometry(struct DerivedMesh *dm, struct ParticleData *pa, struct ParticleKey *key);
+void psys_geometry_mat(struct DerivedMesh *dm, struct ParticleData *pa, float mat[][4]);
+void psys_vec_from_geometry(struct DerivedMesh *dm, struct ParticleData *pa, float *vec);
 
-struct ParticleTreeNode *particle_tree_alloc(int nodes);
-struct ParticleTreeNode *copy_particle_tree(struct ParticleTreeNode *from);
-void free_particle_tree(struct ParticleTreeNode *root);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list