[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13132] trunk/blender/source/blender:
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri Jan 4 22:12:48 CET 2008
Revision: 13132
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13132
Author: blendix
Date: 2008-01-04 22:12:48 +0100 (Fri, 04 Jan 2008)
Log Message:
-----------
- Further fixes for duplivert rendering inside a dupligroup.
- Fix for integer overflow when allocating a lot of particles
(9 million * 8 keys * sizeof cache key).
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/anim.c
trunk/blender/source/blender/blenkernel/intern/particle.c
trunk/blender/source/blender/render/intern/source/convertblender.c
Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim.c 2008-01-04 17:48:07 UTC (rev 13131)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c 2008-01-04 21:12:48 UTC (rev 13132)
@@ -882,7 +882,7 @@
if((ob->transflag & OB_DUPLI)==0)
return;
- /* Should the dupli's be greated for this object? - Respect restrict flags */
+ /* Should the dupli's be generated for this object? - Respect restrict flags */
if (G.rendering) {
if (ob->restrictflag & OB_RESTRICT_RENDER) {
return;
@@ -923,7 +923,8 @@
if (level==0) {
for(dob= duplilist->first; dob; dob= dob->next)
- Mat4CpyMat4(dob->ob->obmat, dob->mat);
+ if(dob->type == OB_DUPLIGROUP)
+ Mat4CpyMat4(dob->ob->obmat, dob->mat);
}
}
}
Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c 2008-01-04 17:48:07 UTC (rev 13131)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c 2008-01-04 21:12:48 UTC (rev 13132)
@@ -2172,6 +2172,7 @@
ParticleCacheKey **cache, *tcache;
ListBase threads;
int i, totchild, totparent, totthread;
+ unsigned long totchildstep;
pthreads= psys_threads_create(ob, psys, G.scene->r.threads);
@@ -2192,7 +2193,8 @@
free_child_path_cache(psys);
cache = psys->childcache = MEM_callocN(totchild*sizeof(void *), "Child path cache array");
- tcache = MEM_callocN(totchild * (ctx->steps + 1) * sizeof(ParticleCacheKey), "Child path cache");
+ totchildstep= totchild*(ctx->steps + 1);
+ tcache = MEM_callocN(totchildstep*sizeof(ParticleCacheKey), "Child path cache");
for(i=0; i<totchild; i++)
cache[i] = tcache + i * (ctx->steps + 1);
Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c 2008-01-04 17:48:07 UTC (rev 13131)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c 2008-01-04 21:12:48 UTC (rev 13132)
@@ -4079,7 +4079,7 @@
Base *base;
Object *ob;
Scene *sce;
- float mat[4][4];
+ float mat[4][4], obmat[4][4];
for(SETLOOPER(re->scene, base)) {
ob= base->object;
@@ -4112,6 +4112,7 @@
for(dob= lb->first; dob; dob= dob->next) {
Object *obd= dob->ob;
+ Mat4CpyMat4(obmat, obd->obmat);
Mat4CpyMat4(obd->obmat, dob->mat);
/* group duplis need to set ob matrices correct, for deform. so no_draw is part handled */
@@ -4134,7 +4135,7 @@
/* compute difference between object matrix and
* object matrix with dupli transform, in viewspace */
- Mat4Invert(imat, dob->omat);
+ Mat4Invert(imat, obmat);
MTC_Mat4MulSerie(mat, re->viewmat, dob->mat, imat, re->viewinv, 0, 0, 0, 0);
RE_addRenderInstance(re, NULL, obd, ob, dob->index, 0, mat);
@@ -4145,6 +4146,8 @@
obd->flag |= OB_DONE;
obd->transflag |= OB_RENDER_DUPLI;
+
+ Mat4CpyMat4(obd->obmat, obmat);
}
else
init_render_object(re, obd, ob, dob->index, only_verts);
More information about the Bf-blender-cvs
mailing list