[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16843] trunk/blender: svn merge -r 16780: 16842 https://svn.blender.org/svnroot/bf-blender/trunk/blender
Davide Vercelli
davide.vercelli at gmail.com
Tue Sep 30 11:13:55 CEST 2008
Revision: 16843
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16843
Author: unclezeiv
Date: 2008-09-30 11:13:54 +0200 (Tue, 30 Sep 2008)
Log Message:
-----------
svn merge -r 16780:16842 https://svn.blender.org/svnroot/bf-blender/trunk/blender
Modified Paths:
--------------
trunk/blender/source/blender/makesdna/DNA_lamp_types.h
trunk/blender/source/blender/python/api2_2x/Mesh.c
trunk/blender/source/blender/python/api2_2x/doc/Mesh.py
trunk/blender/source/blender/render/intern/include/render_types.h
trunk/blender/source/blender/render/intern/source/convertblender.c
trunk/blender/source/blender/src/space.c
Property Changed:
----------------
trunk/blender/
Property changes on: trunk/blender
___________________________________________________________________
Name: svn:ignore
+ user-config.py
.*
build
install
Modified: trunk/blender/source/blender/makesdna/DNA_lamp_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_lamp_types.h 2008-09-30 07:01:37 UTC (rev 16842)
+++ trunk/blender/source/blender/makesdna/DNA_lamp_types.h 2008-09-30 09:13:54 UTC (rev 16843)
@@ -72,7 +72,7 @@
float area_size, area_sizey, area_sizez;
float adapt_thresh;
short ray_samp_method;
- short pad1;
+ short fast_soft_shadows;
/* texact is for buttons */
short texact, shadhalostep;
Modified: trunk/blender/source/blender/python/api2_2x/Mesh.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Mesh.c 2008-09-30 07:01:37 UTC (rev 16842)
+++ trunk/blender/source/blender/python/api2_2x/Mesh.c 2008-09-30 09:13:54 UTC (rev 16843)
@@ -73,6 +73,7 @@
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
#include "BLI_memarena.h"
+#include "BLI_editVert.h"
#include "blendef.h"
#include "mydevice.h"
@@ -88,6 +89,7 @@
#include "gen_utils.h"
#include "gen_library.h"
#include "multires.h"
+#include "editmesh.h" /* for extrusion tools */
/* EXPP Mesh defines */
@@ -117,6 +119,7 @@
#define MESH_TOOL_RECALCNORM 6
#define MESH_TOOL_TRI2QUAD 7
#define MESH_TOOL_QUAD2TRI 8
+#define MESH_TOOL_EXTRUSION 9
static PyObject *MVertSeq_CreatePyObject( Mesh * mesh );
static PyObject *MFaceSeq_CreatePyObject( Mesh * mesh );
@@ -7278,6 +7281,54 @@
case MESH_TOOL_QUAD2TRI:
convert_to_triface( *((int *)args[0]) );
break;
+ case MESH_TOOL_EXTRUSION:
+ {
+ float nor[3]= {0.0, 0.0, 0.0};
+ int only = *((int *)args[0]);
+ VectorObject *vec = *((VectorObject **) args[1]);
+ float mult = *((float *) args[2]);
+
+ if (only == 3)
+ extrudeflag_face_indiv(SELECT, nor);
+ else if (only == 2)
+ extrudeflag_edges_indiv(SELECT, nor);
+ else if (only == 1)
+ extrudeflag_verts_indiv(SELECT, nor);
+ else
+ extrudeflag(SELECT, nor);
+
+ if (vec != NULL)
+ translateflag(SELECT, vec->vec);
+ else if (mult != 0.0)
+ {
+ if (only != 3)
+ {
+ VecMulf(nor, mult);
+ translateflag(SELECT, nor);
+ }
+ else /* individual faces */
+ {
+ EditMesh * em = G.editMesh;
+ EditFace * efa= em->faces.first;
+
+ while (efa)
+ {
+ if (efa->f & SELECT)
+ {
+ VECCOPY(nor, efa->n)
+ VecMulf(nor, mult);
+ VecAddf(efa->v1->co, efa->v1->co, nor);
+ VecAddf(efa->v2->co, efa->v2->co, nor);
+ VecAddf(efa->v3->co, efa->v3->co, nor);
+ if (efa->v4)
+ VecAddf(efa->v4->co, efa->v4->co, nor);
+ }
+ efa = efa->next;
+ }
+ }
+ }
+ }
+ break;
}
/* exit edit mode, free edit mesh */
@@ -7420,6 +7471,47 @@
return Mesh_Tools( self, MESH_TOOL_FILL, NULL );
}
+static PyObject *Mesh_extrude( BPy_Mesh * self, PyObject *args, PyObject *kwd )
+{
+ int only = 0;
+ PyObject * ob = NULL;
+ VectorObject *vec = NULL;
+ float mult = 0.0;
+ void *params[] = {(void *)&only, (void *)&vec, (void *)&mult};
+ static char *kwlist[] = {"translate", "mode", NULL};
+
+ /*
+ if( !PyArg_ParseTupleAndKeywords( args, kwd, "|O!i", kwlist, &vector_Type, &vec, &only ) )
+ return EXPP_ReturnPyObjError( PyExc_TypeError,
+ "expected nothing or a 3D vector and an optional ExtrudeMode flag" );
+ */
+
+ if( !PyArg_ParseTupleAndKeywords( args, kwd, "|Oi", kwlist, &ob, &only ) )
+ return EXPP_ReturnPyObjError( PyExc_TypeError,
+ "expected nothing or a 3D vector and an optional ExtrudeMode flag" );
+
+ if( ob )
+ {
+ if (PyObject_TypeCheck(ob, &vector_Type))
+ {
+ vec = (VectorObject *)ob;
+
+ if( vec->size != 3 )
+ return EXPP_ReturnPyObjError(PyExc_AttributeError,
+ "Mesh.extrude(vec) expects a 3D vector object\n");
+ }
+ else if (PyFloat_Check(ob))
+ {
+ mult = (float)PyFloat_AsDouble(ob);
+ }
+ }
+
+ if( only < 0 || only > 3 )
+ return EXPP_ReturnPyObjError( PyExc_ValueError,
+ "expected ExtrudeMode flag" );
+
+ return Mesh_Tools( self, MESH_TOOL_EXTRUSION, params );
+}
/*
* "pointInside" function
@@ -7466,7 +7558,7 @@
VectorObject *vec;
static char *kwlist[] = {"point", "selected_only", NULL};
- if( !PyArg_ParseTupleAndKeywords(args, kwd, "|O!i", kwlist,
+ if( !PyArg_ParseTupleAndKeywords(args, kwd, "O!|i", kwlist,
&vector_Type, &vec, &selected_only) ) {
return EXPP_ReturnPyObjError( PyExc_TypeError, "expected a vector and an optional bool argument");
}
@@ -7746,6 +7838,8 @@
"Recalculates inside or outside normals (experimental)"},
{"getTangents", (PyCFunction)Mesh_getTangents, METH_VARARGS|METH_KEYWORDS,
"Return a list of face tangents"},
+ {"extrude", (PyCFunction)Mesh_extrude, METH_VARARGS|METH_KEYWORDS,
+ "Extrudes selected region (experimental)"},
/* mesh custom data layers */
{"addUVLayer", (PyCFunction)Mesh_addUVLayer, METH_VARARGS,
@@ -8792,6 +8886,19 @@
return Mode;
}
+static PyObject *M_Mesh_ExtrudeModeDict( void )
+{
+ PyObject *Mode = PyConstant_New( );
+ if( Mode ) {
+ BPy_constant *d = ( BPy_constant * ) Mode;
+ PyConstant_Insert(d, "REGION", PyInt_FromLong(0));
+ PyConstant_Insert(d, "ONLYVERTS", PyInt_FromLong(1));
+ PyConstant_Insert(d, "ONLYEDGES", PyInt_FromLong(2));
+ PyConstant_Insert(d, "INDIVFACES", PyInt_FromLong(3));
+ }
+ return Mode;
+}
+
static char M_Mesh_doc[] = "The Blender.Mesh submodule";
PyObject *Mesh_Init( void )
@@ -8806,6 +8913,7 @@
PyObject *AssignModes = M_Mesh_VertAssignDict( );
PyObject *SelectModes = M_Mesh_SelectModeDict( );
PyObject *PropertyTypes = M_Mesh_PropertiesTypeDict( );
+ PyObject *ExtrudeModes = M_Mesh_ExtrudeModeDict( );
if( PyType_Ready( &MCol_Type ) < 0 )
return NULL;
@@ -8848,6 +8956,8 @@
PyModule_AddObject( submodule, "SelectModes", SelectModes );
if( PropertyTypes )
PyModule_AddObject( submodule, "PropertyTypes", PropertyTypes );
+ if( ExtrudeModes )
+ PyModule_AddObject( submodule, "ExtrudeModes", ExtrudeModes );
Modified: trunk/blender/source/blender/python/api2_2x/doc/Mesh.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Mesh.py 2008-09-30 07:01:37 UTC (rev 16842)
+++ trunk/blender/source/blender/python/api2_2x/doc/Mesh.py 2008-09-30 09:13:54 UTC (rev 16843)
@@ -110,9 +110,16 @@
- VERTEX: vertex select mode.
- EDGE: edge select mode.
- FACE: face select mode.
+ at type ExtrudeModes: readonly dictionary.
+ at var ExtrudeModes: The available mesh extrusion modes.
+ - REGION: extrude region.
+ - ONLYVERTS: extrude only vertices.
+ - ONLYEDGES: extrude only edges.
+ - INDIVFACES: extrude individual faces.
"""
AssignModes = {'REPLACE':1}
+ExtrudeModes = {'REGION':0}
def Get(name=None):
"""
@@ -1253,7 +1260,21 @@
@param direction: specifies outward (0) or inward (1) normals. Outward
is the default. Value must be in the range [0,1].
"""
-
+
+ def extrude(translate = None, mode = ExtrudeModes['REGION']):
+ """
+ Extrudes selected vertices according to the required mode. The extruded
+ geometry may also be optionally translated.
+ @type translate: vector or float
+ @param translate: amount by which the extruded region gets translated;
+ if float, it is intended as a multiplier for the individual faces normal
+ (INDIVFACES), or for the average normal of the entire region (all other
+ cases)
+ @type mode: module constant
+ @param mode: four choices: REGION, ONLYVERTS, ONLYEDGES and INDIVFACES.
+ See L{ExtrudeModes} for a complete description.
+ """
+
def __copy__ ():
"""
Make a copy of this mesh
Modified: trunk/blender/source/blender/render/intern/include/render_types.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/render_types.h 2008-09-30 07:01:37 UTC (rev 16842)
+++ trunk/blender/source/blender/render/intern/include/render_types.h 2008-09-30 09:13:54 UTC (rev 16843)
@@ -455,6 +455,9 @@
/** A small depth offset to prevent self-shadowing. */
float bias;
+ /* fast soft shadow rendering */
+ short fast_soft_shadows;
+
short ray_samp, ray_sampy, ray_sampz, ray_samp_method, ray_samp_type, area_shape, ray_totsamp;
short xold[BLENDER_MAX_THREADS], yold[BLENDER_MAX_THREADS]; /* last jitter table for area lights */
float area_size, area_sizey, area_sizez;
Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c 2008-09-30 07:01:37 UTC (rev 16842)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c 2008-09-30 09:13:54 UTC (rev 16843)
@@ -3439,6 +3439,8 @@
lar->type= la->type;
lar->mode= la->mode;
+
+ lar->fast_soft_shadows = la->fast_soft_shadows;
lar->energy= la->energy;
if(la->mode & LA_NEG) lar->energy= -lar->energy;
Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c 2008-09-30 07:01:37 UTC (rev 16842)
+++ trunk/blender/source/blender/src/space.c 2008-09-30 09:13:54 UTC (rev 16843)
@@ -370,7 +370,7 @@
void handle_view3d_lock()
{
if (G.vd != NULL && curarea != NULL ) {
- if(G.vd->localview==0 && G.vd->scenelock && curarea->spacetype==SPACE_VIEW3D) {
+ if(G.vd->localview==0 && G.vd->scenelock/* && curarea->spacetype==SPACE_VIEW3D*/) {
/* copy to scene */
G.scene->lay= G.vd->lay;
More information about the Bf-blender-cvs
mailing list