Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-01-17 15:02:15 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-01-17 15:02:15 +0300
commit16a37bcd31894ce17ed7d5aba9af2ac1b4f6c653 (patch)
treec0588b103118d1eb181d9f8f28976c5f5690f272 /source
parent243f4530ef54cb5b37b2002d884eda47f9985f0c (diff)
Bugfix for "ghost feathers" trailing one frame behind the character.
The derivedmesh and particle system needed to be evaluated at render level before creating dupliparticles.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/object.c9
-rw-r--r--source/blender/render/intern/source/convertblender.c7
2 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index de2875c91f4..bfe2b56b289 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2199,6 +2199,7 @@ void object_handle_update(Object *ob)
if(ob->particlesystem.first) {
ParticleSystem *tpsys, *psys;
+ DerivedMesh *dm;
psys= ob->particlesystem.first;
while(psys) {
@@ -2215,6 +2216,14 @@ void object_handle_update(Object *ob)
else
psys= psys->next;
}
+
+ if(G.rendering && ob->transflag & OB_DUPLIPARTS) {
+ /* this is to make sure we get render level duplis in groups:
+ * the derivedmesh must be created before init_render_mesh,
+ * since object_duplilist does dupliparticles before that */
+ dm = mesh_create_derived_render(ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+ dm->release(dm);
+ }
}
}
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 44db5280165..25b5dac2a55 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -4136,18 +4136,11 @@ static void dupli_render_particle_set(Render *re, Object *ob, int level, int ena
return;
if(ob->transflag & OB_DUPLIPARTS) {
- DerivedMesh *dm;
-
for(psys=ob->particlesystem.first; psys; psys=psys->next)
if(enable)
psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy);
else
psys_render_restore(ob, psys);
-
- if(enable) {
- dm = mesh_create_derived_render(ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
- dm->release(dm);
- }
}
if(ob->dup_group==NULL) return;