[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13654] trunk/blender/source/blender: Added python access for baking
Campbell Barton
ideasman42 at gmail.com
Tue Feb 12 15:47:59 CET 2008
Revision: 13654
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13654
Author: campbellbarton
Date: 2008-02-12 15:47:55 +0100 (Tue, 12 Feb 2008)
Log Message:
-----------
Added python access for baking
http://www.blender.org/documentation/246PythonDoc/
http://www.blender.org/documentation/246PythonDoc/Render.RenderData-class.html
http://www.blender.org/documentation/246PythonDoc/bpy_api_2_46.zip
Modified Paths:
--------------
trunk/blender/source/blender/include/BIF_meshtools.h
trunk/blender/source/blender/python/api2_2x/BGL.c
trunk/blender/source/blender/python/api2_2x/doc/Render.py
trunk/blender/source/blender/python/api2_2x/doc/epy_docgen-3.sh
trunk/blender/source/blender/python/api2_2x/sceneRender.c
trunk/blender/source/blender/src/buttons_scene.c
trunk/blender/source/blender/src/header_info.c
trunk/blender/source/blender/src/meshtools.c
Modified: trunk/blender/source/blender/include/BIF_meshtools.h
===================================================================
--- trunk/blender/source/blender/include/BIF_meshtools.h 2008-02-12 13:38:07 UTC (rev 13653)
+++ trunk/blender/source/blender/include/BIF_meshtools.h 2008-02-12 14:47:55 UTC (rev 13654)
@@ -40,7 +40,8 @@
extern void sort_faces(void);
extern void objects_bake_render_menu(void);
-extern void objects_bake_render(short event);
+extern void objects_bake_render_ui(short event);
+extern void objects_bake_render(short event, char **error_msg);
extern long mesh_octree_table(struct Object *ob, float *co, char mode);
extern int mesh_get_x_mirror_vert(struct Object *ob, int index);
Modified: trunk/blender/source/blender/python/api2_2x/BGL.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/BGL.c 2008-02-12 13:38:07 UTC (rev 13653)
+++ trunk/blender/source/blender/python/api2_2x/BGL.c 2008-02-12 14:47:55 UTC (rev 13654)
@@ -1,5 +1,5 @@
/*
- * $Id: BGL.c 12267 2007-10-17 09:51:13Z campbellbarton $
+ * $Id$
*
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
*
@@ -1099,7 +1099,7 @@
if( PyType_Ready( &buffer_Type) < 0)
Py_RETURN_NONE;
-#define EXPP_ADDCONST(x) EXPP_dict_set_item_str(dict, #x, PyInt_FromLong(x))
+#define EXPP_ADDCONST(x) EXPP_dict_set_item_str(dict, #x, PyInt_FromLong((int)x))
/* So, for example:
* EXPP_ADDCONST(GL_CURRENT_BIT) becomes
@@ -1126,7 +1126,8 @@
EXPP_ADDCONST(GL_TEXTURE_BIT);
EXPP_ADDCONST(GL_SCISSOR_BIT);
EXPP_ADDCONST(GL_ALL_ATTRIB_BITS);
-
+ EXPP_ADDCONST(GL_CLIENT_ALL_ATTRIB_BITS);
+
EXPP_ADDCONST(GL_FALSE);
EXPP_ADDCONST(GL_TRUE);
Modified: trunk/blender/source/blender/python/api2_2x/doc/Render.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Render.py 2008-02-12 13:38:07 UTC (rev 13653)
+++ trunk/blender/source/blender/python/api2_2x/doc/Render.py 2008-02-12 14:47:55 UTC (rev 13654)
@@ -74,6 +74,24 @@
horizontally or vertically
- SCALE: Stretch or squeeze the viewport to fill the display window.
+ at type BakeModes: readonly dictionary
+ at var BakeModes: Constant dict used for with L{RenderData.bakeMode}
+attribute. One of the following modes can be active:
+ - LIGHT: Bake lighting only.
+ - ALL: Bake all render lighting.
+ - AO: Bake ambient occlusion.
+ - NORMALS: Bake a normal map.
+ - TEXTURE: Bake textures.
+ - DISPLACEMENT: Bake displacement.
+
+ at type BakeNormalSpaceModes: readonly dictionary
+ at var BakeNormalSpaceModes: Constant dict used for with L{RenderData.bakeNormalSpace}
+attribute. One of the following modes can be active:
+ - CAMERA: Bake normals relative to the camera.
+ - WORLD: Bake normals in worldspace.
+ - OBJECT: Bake normals relative to the object.
+ - TANGENT: Bake tangent space normals.
+
@var INTERNAL: The internal rendering engine. Use with setRenderer()
@var YAFRAY: Yafray rendering engine. Use with setRenderer()
@@ -367,6 +385,18 @@
@type yafrayGIPhotons: boolean
@ivar yafrayGITunePhotons: If true the photonmap is shown directly in the render for tuning.
@type yafrayGITunePhotons: boolean
+ @ivar bakeMode: The method used when baking, see L{BakeModes}.
+ @type bakeMode: int
+ @ivar bakeNormalSpace: The method used when baking, see L{BakeNormalSpaceModes}.
+ @type bakeNormalSpace: int
+ @ivar bakeClear: When enabled, baking clears the image first.
+ @type bakeClear: bool
+ @ivar bakeToActive: When enabled, selected objects are baked onto the active object.
+ @type bakeToActive: bool
+ @ivar bakeMargin: The pixel distance to extend baked pixels past the boundry (reduces bleeding when mipmapping)
+ @type bakeMargin: int
+ @ivar bakeDist: The distance in blender units to use when bakeToActive is enabled and geomtry does not overlap.
+ @type bakeDist: float
"""
def currentFrame(frame = None):
@@ -383,6 +413,11 @@
Render the scene.
"""
+ def bake():
+ """
+ Bake selected objects in the scene.
+ """
+
def renderAnim():
"""
Render a series of frames to an output directory.
Modified: trunk/blender/source/blender/python/api2_2x/doc/epy_docgen-3.sh
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/epy_docgen-3.sh 2008-02-12 13:38:07 UTC (rev 13653)
+++ trunk/blender/source/blender/python/api2_2x/doc/epy_docgen-3.sh 2008-02-12 14:47:55 UTC (rev 13654)
@@ -7,6 +7,6 @@
# set posix locale so regex works properly for [A-Z]*.py
LC_ALL=POSIX
-epydoc -o BPY_API --url "http://www.blender.org" --top API_intro \
+epydoc -v -o BPY_API --url "http://www.blender.org" --top API_intro \
--name "Blender" --no-private --no-frames \
$( ls [A-Z]*.py )
Modified: trunk/blender/source/blender/python/api2_2x/sceneRender.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/sceneRender.c 2008-02-12 13:38:07 UTC (rev 13653)
+++ trunk/blender/source/blender/python/api2_2x/sceneRender.c 2008-02-12 14:47:55 UTC (rev 13654)
@@ -47,6 +47,7 @@
#include "BIF_drawscene.h"
#include "BIF_renderwin.h"
#include "BIF_writeimage.h"
+#include "BIF_meshtools.h"
#include "BLI_blenlib.h"
@@ -86,6 +87,10 @@
EXPP_RENDER_ATTR_SIZEY,
EXPP_RENDER_ATTR_GAUSSFILTER,
EXPP_RENDER_ATTR_MBLURFACTOR,
+ EXPP_RENDER_ATTR_BAKEMARGIN,
+ EXPP_RENDER_ATTR_BAKEMODE,
+ EXPP_RENDER_ATTR_BAKEDIST,
+ EXPP_RENDER_ATTR_BAKENORMALSPACE
};
#define EXPP_RENDER_ATTR_CFRA 2
@@ -133,6 +138,7 @@
static PyObject *RenderData_SetImageType( BPy_RenderData * self,
PyObject * args );
static PyObject *RenderData_Render( BPy_RenderData * self );
+static PyObject *RenderData_Bake( BPy_RenderData * self );
/* BPy_RenderData Internal Protocols */
@@ -492,6 +498,28 @@
Py_RETURN_NONE;
}
+/***************************************************************************/
+/* BPy_Bake Function Definitions */
+/***************************************************************************/
+
+PyObject *RenderData_Bake( BPy_RenderData * self )
+{
+ char *error_msg = NULL;
+ Scene *oldsce;
+
+ oldsce = G.scene;
+ set_scene( self->scene );
+
+ objects_bake_render(0, &error_msg);
+
+ set_scene( oldsce );
+
+ if (error_msg)
+ return EXPP_ReturnPyObjError( PyExc_RuntimeError, error_msg );
+
+ Py_RETURN_NONE;
+}
+
/*
* This will save the rendered image to an output file path already defined.
*/
@@ -1849,6 +1877,9 @@
case EXPP_RENDER_ATTR_FPS_BASE:
param = self->renderContext->frs_sec_base;
break;
+ case EXPP_RENDER_ATTR_BAKEDIST:
+ param = self->renderContext->bake_maxdist;
+ break;
default:
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
"undefined type constant in RenderData_getFloatAttr" );
@@ -1882,6 +1913,13 @@
max = 120.0f;
param = &self->renderContext->frs_sec_base;
break;
+
+ case EXPP_RENDER_ATTR_BAKEDIST:
+ min = 0.0f;
+ max = 10.0f;
+ param = &self->renderContext->bake_maxdist;
+ break;
+
default:
return EXPP_ReturnIntError( PyExc_RuntimeError,
"undefined type constant in RenderData_setFloatAttrClamp" );
@@ -1928,6 +1966,15 @@
case EXPP_RENDER_ATTR_SIZEY:
param = self->renderContext->ysch;
break;
+ case EXPP_RENDER_ATTR_BAKEMARGIN:
+ param = self->renderContext->bake_filter;
+ break;
+ case EXPP_RENDER_ATTR_BAKEMODE:
+ param = self->renderContext->bake_mode;
+ break;
+ case EXPP_RENDER_ATTR_BAKENORMALSPACE:
+ param = self->renderContext->bake_normal_space;
+ break;
default:
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
"undefined type constant in RenderData_setIValueAttrClamp" );
@@ -2006,6 +2053,24 @@
size = 'h';
param = &self->renderContext->ysch;
break;
+ case EXPP_RENDER_ATTR_BAKEMARGIN:
+ min = 0;
+ max = 32;
+ size = 'h';
+ param = &self->renderContext->bake_filter;
+ break;
+ case EXPP_RENDER_ATTR_BAKEMODE:
+ min = RE_BAKE_LIGHT;
+ max = RE_BAKE_DISPLACEMENT;
+ size = 'h';
+ param = &self->renderContext->bake_mode;
+ break;
+ case EXPP_RENDER_ATTR_BAKENORMALSPACE:
+ min = R_BAKE_SPACE_CAMERA;
+ max = R_BAKE_SPACE_TANGENT;
+ size = 'h';
+ param = &self->renderContext->bake_normal_space;
+ break;
default:
return EXPP_ReturnIntError( PyExc_RuntimeError,
"undefined type constant in RenderData_setIValueAttrClamp" );
@@ -2451,6 +2516,32 @@
return 0;
}
+static int RenderData_setBakeMode( BPy_RenderData *self, PyObject *value,
+ void *type )
+{
+ /* use negative numbers to flip truth */
+ int param = PyObject_IsTrue( value );
+
+ if( param == -1 )
+ return EXPP_ReturnIntError( PyExc_TypeError,
+ "expected True/False or 0/1" );
+
+ if (param) {
+ self->renderContext->bake_flag |= (int)type;
+ } else {
+ self->renderContext->bake_flag &= ~(int)type;
+ }
+ return 0;
+}
+
+static PyObject *RenderData_getBakeMode( BPy_RenderData *self, void *type )
+{
+ int itype = (int)type;
+ /* use negative numbers to flip truth */
+ if (self->renderContext->bake_flag & itype) Py_RETURN_TRUE;
+ else Py_RETURN_FALSE;
+}
+
/***************************************************************************/
/* BPy_RenderData attribute def */
/***************************************************************************/
@@ -2791,7 +2882,32 @@
(getter)RenderData_getYafrayGITunePhotons, (setter)RenderData_setYafrayGITunePhotons,
"If true the photonmap is shown directly in the render for tuning",
NULL},
-
+
+ /* Bake stuff */
+ {"bakeClear",
+ (getter)RenderData_getBakeMode, (setter)RenderData_setBakeMode,
+ "Clear the image before baking",
+ (void *)R_BAKE_CLEAR},
+ {"bakeToActive",
+ (getter)RenderData_getBakeMode, (setter)RenderData_setBakeMode,
+ "Bake selection to active",
+ (void *)R_BAKE_TO_ACTIVE},
+ {"bakeMargin",
+ (getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
+ "number of pixels to use as a margin for the edges of the image",
+ (void *)EXPP_RENDER_ATTR_BAKEMARGIN},
+ {"bakeMode",
+ (getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
+ "The mode for baking, see Blender.Scene.Render.BakeModes",
+ (void *)EXPP_RENDER_ATTR_BAKEMODE},
+ {"bakeNormalSpace",
+ (getter)RenderData_getIValueAttr, (setter)RenderData_setIValueAttrClamp,
+ "The mode for baking, see Blender.Scene.Render.BakeNormalSpaceModes",
+ (void *)EXPP_RENDER_ATTR_BAKENORMALSPACE},
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list