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
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/renderconverter/intern/convertBlenderScene.c')
-rw-r--r--source/blender/renderconverter/intern/convertBlenderScene.c32
1 files changed, 11 insertions, 21 deletions
diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c
index 3b694813e91..f50a95bcbc9 100644
--- a/source/blender/renderconverter/intern/convertBlenderScene.c
+++ b/source/blender/renderconverter/intern/convertBlenderScene.c
@@ -2683,7 +2683,7 @@ extern ListBase duplilist;
void RE_rotateBlenderScene(void)
{
Base *base;
- Object *ob, *obd;
+ Object *ob;
Scene *sce;
unsigned int lay;
float mat[4][4];
@@ -2776,6 +2776,7 @@ void RE_rotateBlenderScene(void)
if( (base->lay & lay) || (ob->type==OB_LAMP && (base->lay & G.scene->lay)) ) {
if(ob->transflag & OB_DUPLI) {
+
/* exception: mballs! */
/* yafray: Include at least one copy of a dupliframe object for yafray in the renderlist.
mballs comment above true as well for yafray, they are not included, only all other object types */
@@ -2793,28 +2794,17 @@ void RE_rotateBlenderScene(void)
}
}
- make_duplilist(sce, ob);
if(ob->type==OB_MBALL) {
init_render_object(ob);
}
else {
- obd= duplilist.first;
- if(obd) {
- /* exception, in background render it doesnt make the displist */
- if ELEM(obd->type, OB_CURVE, OB_SURF) {
- Curve *cu;
-
- cu= obd->data;
- if(cu->disp.first==NULL) {
- obd->flag &= ~OB_FROMDUPLI;
- makeDispListCurveTypes(obd, 0);
- obd->flag |= OB_FROMDUPLI;
- }
- }
- }
-
- obd= duplilist.first;
- while(obd) {
+ DupliObject *dob;
+ ListBase *lb= object_duplilist(sce, ob);
+
+ for(dob= lb->first; dob; dob= dob->next) {
+ Object *obd= dob->ob;
+ Mat4CpyMat4(obd->obmat, dob->mat);
+
if(obd->type!=OB_MBALL) {
/* yafray: special handling of duplivert objects for yafray:
only the matrix is stored, together with the source object name.
@@ -2829,10 +2819,10 @@ void RE_rotateBlenderScene(void)
}
else init_render_object(obd);
}
- obd= obd->id.next;
+ Mat4CpyMat4(obd->obmat, dob->omat);
}
+ BLI_freelistN(lb);
}
- free_duplilist();
}
else {
/* yafray: if there are linked data objects (except lamps, empties or armatures),