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:
authorTon Roosendaal <ton@blender.org>2007-01-12 16:17:15 +0300
committerTon Roosendaal <ton@blender.org>2007-01-12 16:17:15 +0300
commite8f7626301c6aeaf8aee878253329ece4857f5dd (patch)
tree73382fbc11732c525f20f8947a4ed987b378f66a /source/blender/src/meshtools.c
parent765e464a71a339e15454ca35621c8f4923b64869 (diff)
Patch from Matt: for AO baking, instead of warning user that AO was not
active or setup, it just turns on the flags and continues.
Diffstat (limited to 'source/blender/src/meshtools.c')
-rw-r--r--source/blender/src/meshtools.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/source/blender/src/meshtools.c b/source/blender/src/meshtools.c
index d31004fd1c3..255312dc5a0 100644
--- a/source/blender/src/meshtools.c
+++ b/source/blender/src/meshtools.c
@@ -797,6 +797,8 @@ void objects_bake_render_menu(void)
/* all selected meshes with UV maps are rendered for current scene visibility */
void objects_bake_render(short event)
{
+ short prev_r_raytrace, prev_wo_amb_occ;
+
if(event==0) event= G.scene->r.bake_mode;
if(event>0) {
@@ -813,10 +815,16 @@ void objects_bake_render(short event)
else if(event==3) event= RE_BAKE_NORMALS;
else event= RE_BAKE_TEXTURE;
+ prev_r_raytrace = G.scene->r.mode & R_RAYTRACE;
+ prev_wo_amb_occ = G.scene->world->mode & WO_AMB_OCC;
+
if(event==RE_BAKE_AO) {
- if((G.scene->r.mode & R_RAYTRACE)==0 || G.scene->world==NULL
- || (G.scene->world->mode & WO_AMB_OCC)==0) {
- error("No ray-trace or AO set up");
+ /* If raytracing or AO is disabled, switch it on temporarily for baking. */
+ if (prev_r_raytrace == 0) G.scene->r.mode |= R_RAYTRACE;
+ if (prev_wo_amb_occ == 0) G.scene->world->mode |= WO_AMB_OCC;
+
+ if(G.scene->world==NULL) {
+ error("No world set up");
return;
}
}
@@ -872,6 +880,12 @@ void objects_bake_render(short event)
}
}
+ if(event==RE_BAKE_AO) {
+ /* switch off temporary raytrace and AO */
+ if (prev_r_raytrace == 0) G.scene->r.mode &= ~R_RAYTRACE;
+ if (prev_wo_amb_occ == 0) G.scene->world->mode &= ~WO_AMB_OCC;
+ }
+
allqueue(REDRAWIMAGE, 0);
allqueue(REDRAWVIEW3D, 0);