[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28827] branches/render25/source/blender: particle system can start in negative frames now.
Joseph Eagar
joeedh at gmail.com
Tue May 18 16:30:36 CEST 2010
Revision: 28827
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28827
Author: joeedh
Date: 2010-05-18 16:30:33 +0200 (Tue, 18 May 2010)
Log Message:
-----------
particle system can start in negative frames now. also removed BIF_preview_changed, since it's not being used anymore.
Modified Paths:
--------------
branches/render25/source/blender/blenkernel/BKE_particle.h
branches/render25/source/blender/blenkernel/BKE_pointcache.h
branches/render25/source/blender/blenkernel/intern/anim.c
branches/render25/source/blender/blenkernel/intern/cloth.c
branches/render25/source/blender/blenkernel/intern/collision.c
branches/render25/source/blender/blenkernel/intern/depsgraph.c
branches/render25/source/blender/blenkernel/intern/effect.c
branches/render25/source/blender/blenkernel/intern/object.c
branches/render25/source/blender/blenkernel/intern/particle.c
branches/render25/source/blender/blenkernel/intern/particle_system.c
branches/render25/source/blender/blenkernel/intern/pointcache.c
branches/render25/source/blender/editors/object/object_relations.c
branches/render25/source/blender/editors/physics/particle_edit.c
branches/render25/source/blender/editors/render/render_preview.c
branches/render25/source/blender/editors/space_view3d/drawobject.c
branches/render25/source/blender/makesdna/DNA_cloth_types.h
branches/render25/source/blender/makesdna/DNA_particle_types.h
branches/render25/source/blender/makesrna/intern/rna_object_force.c
branches/render25/source/blender/modifiers/intern/MOD_collision.c
branches/render25/source/blender/modifiers/intern/MOD_explode.c
branches/render25/source/blender/modifiers/intern/MOD_particleinstance.c
branches/render25/source/blender/render/intern/source/object_particle.c
branches/render25/source/blender/render/intern/source/texture_pointdensity.c
Modified: branches/render25/source/blender/blenkernel/BKE_particle.h
===================================================================
--- branches/render25/source/blender/blenkernel/BKE_particle.h 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/BKE_particle.h 2010-05-18 14:30:33 UTC (rev 28827)
@@ -244,7 +244,7 @@
float psys_get_child_time(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *birthtime, float *dietime);
float psys_get_child_size(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *pa_time);
void psys_get_particle_on_path(struct ParticleSimulationData *sim, int pa_num, struct ParticleKey *state, int vel);
-int psys_get_particle_state(struct ParticleSimulationData *sim, int p, struct ParticleKey *state, int always);
+int psys_get_particle_state(struct ParticleSimulationData *sim, int p, struct ParticleKey *state, int always, int use_current_frame);
/* for anim.c */
void psys_get_dupli_texture(struct Object *ob, struct ParticleSettings *part, struct ParticleSystemModifierData *psmd, struct ParticleData *pa, struct ChildParticle *cpa, float *uv, float *orco);
Modified: branches/render25/source/blender/blenkernel/BKE_pointcache.h
===================================================================
--- branches/render25/source/blender/blenkernel/BKE_pointcache.h 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/BKE_pointcache.h 2010-05-18 14:30:33 UTC (rev 28827)
@@ -227,7 +227,7 @@
} PTCacheEdit;
/* Particle functions */
-void BKE_ptcache_make_particle_key(struct ParticleKey *key, int index, void **data, float time);
+void BKE_ptcache_make_particle_key(struct ParticleKey *key, int index, void **data, float time, int use_frames);
/**************** Creating ID's ****************************/
void BKE_ptcache_id_from_softbody(PTCacheID *pid, struct Object *ob, struct SoftBody *sb);
Modified: branches/render25/source/blender/blenkernel/intern/anim.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/anim.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/anim.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -1078,7 +1078,7 @@
ParticleSettings *part;
ParticleData *pa;
ChildParticle *cpa=0;
- ParticleKey state;
+ ParticleKey state={0,};
ParticleCacheKey *cache;
float ctime, pa_time, scale = 1.0f;
float tmat[4][4], mat[4][4], pamat[4][4], vec[3], size=0.0;
@@ -1229,7 +1229,9 @@
else {
/* first key */
state.time = ctime;
- if(psys_get_particle_state(&sim, a, &state, 0) == 0)
+ state.use_frames = 1;
+
+ if(psys_get_particle_state(&sim, a, &state, 0, 0) == 0)
continue;
quat_to_mat4( pamat,state.rot);
Modified: branches/render25/source/blender/blenkernel/intern/cloth.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/cloth.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/cloth.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -494,7 +494,7 @@
cache->flag |= PTCACHE_OUTDATED;
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
BKE_ptcache_validate(cache, 0);
- cache->last_exact= 0;
+ cache->last_exact= MIN2(cache->startframe, 0);
cache->flag &= ~PTCACHE_REDO_NEEDED;
return result;
}
@@ -577,7 +577,7 @@
}
/* if on second frame, write cache for first frame */
- if(cache->simframe == startframe && (cache->flag & PTCACHE_OUTDATED || cache->last_exact==0))
+ if(cache->simframe == startframe && (cache->flag & PTCACHE_OUTDATED || cache->last_exact<=cache->startframe))
BKE_ptcache_write_cache(&pid, startframe);
clmd->sim_parms->timescale *= framenr - cache->simframe;
Modified: branches/render25/source/blender/blenkernel/intern/collision.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/collision.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/collision.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -1585,17 +1585,11 @@
normalize_v3(vec);
} else VECCOPY(vec, no);
- mul_v3_fl(no, lambda*2);
- mul_v3_fl(vec, lambda*2.0);
+ mul_v3_fl(no, lambda);
+ mul_v3_fl(vec, lambda);
+ //add_v3_v3(cv->txold, vec);
add_v3_v3(cv->tx, no);
- sub_v3_v3(cv->txold, vec);
-
- //add_v3_v3(cv->txold, cv->tx);
- //mul_v3_fl(cv->txold, 0.5f);
- //add_v3_v3(cv->txold, cv->tx);
- //mul_v3_fl(cv->txold, 0.5f);
- VECCOPY(cv->txold, cv->tx);
}
MEM_freeN(frefs);
Modified: branches/render25/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/depsgraph.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/depsgraph.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -2225,7 +2225,7 @@
ob= base->object;
if(base->lay & lay) {
- if(ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL))
+ //if(ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL))
ob->recalc |= OB_RECALC_DATA;
if(ob->dup_group)
ob->dup_group->id.flag |= LIB_DOIT;
@@ -2235,7 +2235,7 @@
for(group= G.main->group.first; group; group= group->id.next) {
if(group->id.flag & LIB_DOIT) {
for(go= group->gobject.first; go; go= go->next) {
- if(ELEM5(go->ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL))
+ //if(ELEM5(go->ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL))
go->ob->recalc |= OB_RECALC_DATA;
if(go->ob->proxy_from)
go->ob->recalc |= OB_RECALC_OB;
@@ -2247,6 +2247,9 @@
/* now tag update flags, to ensure deformers get calculated on redraw */
DAG_scene_update_flags(scene, lay);
+
+ scene_update_for_newframe(scene, lay);
+ //scene_update_for_newframe(scene, lay);
}
}
Modified: branches/render25/source/blender/blenkernel/intern/effect.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/effect.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/effect.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -631,7 +631,7 @@
else if(eff->psys) {
ParticleSimulationData sim = {eff->scene, eff->ob, eff->psys, NULL, NULL};
ParticleData *pa = eff->psys->particles + *efd->index;
- ParticleKey state;
+ ParticleKey state={0,};
/* exclude the particle itself for self effecting particles */
if(eff->psys == point->psys && *efd->index == point->index)
@@ -639,8 +639,10 @@
else {
/* TODO: time from actual previous calculated frame (step might not be 1) */
state.time = cfra - 1.0;
- ret = psys_get_particle_state(&sim, *efd->index, &state, 0);
+ state.use_frames = 1;
+ ret = psys_get_particle_state(&sim, *efd->index, &state, 0, 0);
+
/* TODO */
//if(eff->pd->forcefiled == PFIELD_HARMONIC && ret==0) {
// if(pa->dietime < eff->psys->cfra)
Modified: branches/render25/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/object.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/object.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -2547,6 +2547,7 @@
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
if(ob->id.lib && ob->proxy_from) {
+ where_is_pose(scene, ob->proxy_from);
copy_pose_result(ob->pose, ob->proxy_from->pose);
// printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name);
}
Modified: branches/render25/source/blender/blenkernel/intern/particle.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/particle.c 2010-05-18 14:30:20 UTC (rev 28826)
+++ branches/render25/source/blender/blenkernel/intern/particle.c 2010-05-18 14:30:33 UTC (rev 28827)
@@ -1060,12 +1060,12 @@
while(pm && pm->next && (float)pm->frame < t)
pm = pm->next;
- BKE_ptcache_make_particle_key(key2, pm->index_array ? pm->index_array[index] - 1 : index, pm->data, (float)pm->frame);
- BKE_ptcache_make_particle_key(key1, pm->prev->index_array ? pm->prev->index_array[index] - 1 : index, pm->prev->data, (float)pm->prev->frame);
+ BKE_ptcache_make_particle_key(key2, pm->index_array ? pm->index_array[index] - 1 : index, pm->data, (float)pm->frame, 1);
+ BKE_ptcache_make_particle_key(key1, pm->prev->index_array ? pm->prev->index_array[index] - 1 : index, pm->prev->data, (float)pm->prev->frame, 1);
}
else if(cache->mem_cache.first) {
PTCacheMem *pm2 = cache->mem_cache.first;
- BKE_ptcache_make_particle_key(key2, pm2->index_array ? pm2->index_array[index] - 1 : index, pm2->data, (float)pm2->frame);
+ BKE_ptcache_make_particle_key(key2, pm2->index_array ? pm2->index_array[index] - 1 : index, pm2->data, (float)pm2->frame, 1);
copy_particle_key(key1, key2, 1);
}
}
@@ -1142,8 +1142,8 @@
/* interpret timing and find keys */
if(point) {
- if(result->time < 0.0f)
- real_t = -result->time;
+ if(result->use_frames)
+ real_t = result->time;
else
real_t = *(pind->ekey[0]->time) + t * (*(pind->ekey[0][point->totkey-1].time) - *(pind->ekey[0]->time));
@@ -1159,8 +1159,8 @@
return;
}
- if(result->time < 0.0f)
- real_t = -result->time;
+ if(result->use_frames)
+ real_t = result->time;
else
real_t = pind->kkey[0]->time + t * (pind->kkey[0][pa->totkey-1].time - pind->kkey[0]->time);
@@ -1190,14 +1190,14 @@
pind->kkey[0] = pind->kkey[1] - 1;
}
else if(pind->cache) {
- if(result->time < 0.0f) /* flag for time in frames */
- real_t = -result->time;
+ if(result->use_frames) /* flag for time in frames */
+ real_t = result->time;
else
real_t = pa->time + t * (pa->dietime - pa->time);
}
else {
- if(result->time < 0.0f)
- real_t = -result->time;
+ if(result->use_frames)
+ real_t = result->time;
else
real_t = pind->hkey[0]->time + t * (pind->hkey[0][pa->totkey-1].time - pind->hkey[0]->time);
@@ -1945,7 +1945,7 @@
void precalc_guides(ParticleSimulationData *sim, ListBase *effectors)
{
EffectedPoint point;
- ParticleKey state;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list