[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