uvcalc_lightmap would raise an error on meshes with no faces.
authorCampbell Barton <ideasman42@gmail.com>
Wed, 14 May 2008 16:40:25 +0000 (16:40 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 14 May 2008 16:40:25 +0000 (16:40 +0000)
auto-threads wasnt working for baking.

release/scripts/uvcalc_lightmap.py
source/blender/render/extern/include/RE_pipeline.h
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/pipeline.c

index 3b7c3ac7cf905df9abfb69e496e1d3488b216a9b..bd5a72995cbaf10d0a70ef6a65601503f2c287e3 100644 (file)
@@ -517,7 +517,7 @@ def main():
        
        if not Draw.PupBlock('Lightmap Pack', [\
        'Context...',
-       ('Active Object', PREF_ACT_ONLY, 'If disabled, use all objects for packing the lightmap.'),\
+       ('Active Object', PREF_ACT_ONLY, 'If disabled, include other selected objects for packing the lightmap.'),\
        ('Selected Faces', PREF_SEL_ONLY, 'Use only selected faces from all selected meshes.'),\
        'Image & UVs...',
        ('Share Tex Space', PREF_PACK_IN_ONE, 'Objects Share texture space, map all objects into 1 uvmap'),\
@@ -538,7 +538,7 @@ def main():
                        return
                meshes = [ ob.getData(mesh=1) ]
        else:
-               meshes = dict([ (me.name, me) for ob in scn.objects.context for me in (ob.getData(mesh=1),) if not me.lib])
+               meshes = dict([ (me.name, me) for ob in scn.objects.context for me in (ob.getData(mesh=1),) if not me.lib if len(me.faces)])
                meshes = meshes.values()
                if not meshes:
                        Draw.PupMenu('Error%t|No mesh objects selected.')
index d8f6836005b5646331de826c9792b8659c709511..66dc1dd5fef042bcb0d2d19a84c7e024812d1d61 100644 (file)
@@ -177,6 +177,9 @@ void RE_DataBase_ApplyWindow(struct Render *re);
 /* override the scene setting for amount threads, commandline */
 void RE_set_max_threads(int threads);
 
+/* set the render threads based on the commandline and autothreads setting */
+void RE_init_threadcount(Render *re);
+
 /* the main processor, assumes all was set OK! */
 void RE_TileProcessor(struct Render *re, int firsttile, int threaded);
 
index 33cad2789c6d6092a0432383801f26daee411552..dbade68ba1dae46675b69c76eb9ddd0630d0ea81 100644 (file)
@@ -5417,6 +5417,9 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob)
 
        /* renderdata setup and exceptions */
        re->r= scene->r;
+       
+       RE_init_threadcount(re);
+       
        re->flag |= R_GLOB_NOPUNOFLIP;
        re->excludeob= actob;
        if(type == RE_BAKE_LIGHT)
index 93282e641d352c776ec20145d02bd0cda0d65689..857269cb44db2243d6764c521e30eba886e63363 100644 (file)
@@ -2675,3 +2675,12 @@ void RE_set_max_threads(int threads)
                printf("Error, threads has to be in range 1-%d\n", BLENDER_MAX_THREADS);
        }
 }
+
+void RE_init_threadcount(Render *re) 
+{
+       if ((re->r.mode & R_FIXED_THREADS)==0 || commandline_threads == 0) { /* Automatic threads */
+               re->r.threads = BLI_system_thread_count();
+       } else if(commandline_threads >= 1 && commandline_threads<=BLENDER_MAX_THREADS) {
+               re->r.threads= commandline_threads;
+       }
+}