[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42159] branches/bmesh/blender: Enable building cycles in bmesh branch

Andrew Wiggin ender79bl at gmail.com
Fri Nov 25 14:28:11 CET 2011


Revision: 42159
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42159
Author:   ender79
Date:     2011-11-25 13:28:04 +0000 (Fri, 25 Nov 2011)
Log Message:
-----------
Enable building cycles in bmesh branch

This change adds RNA access to tesselated face UVs and colors (MTFACE and MCOL), primarily for use by plugin renderers (e.g. cycles). The RNA mesh properties to get to these are prefixed with "tessface_" and additionally the help text states that these are for renderers, to try not to confuse existing mesh editing tool scripts into thinking they could just start using these values.

Modified Paths:
--------------
    branches/bmesh/blender/intern/cycles/blender/addon/properties.py
    branches/bmesh/blender/intern/cycles/blender/blender_mesh.cpp
    branches/bmesh/blender/source/blender/editors/interface/interface_templates.c
    branches/bmesh/blender/source/blender/makesrna/RNA_access.h
    branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c

Modified: branches/bmesh/blender/intern/cycles/blender/addon/properties.py
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/addon/properties.py	2011-11-25 12:55:42 UTC (rev 42158)
+++ branches/bmesh/blender/intern/cycles/blender/addon/properties.py	2011-11-25 13:28:04 UTC (rev 42159)
@@ -19,7 +19,8 @@
 # <pep8 compliant>
 
 import bpy
-from bpy.props import (EnumProperty,
+from bpy.props import (BoolProperty,
+                       EnumProperty,
                        FloatProperty,
                        IntProperty,
                        PointerProperty)

Modified: branches/bmesh/blender/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/blender_mesh.cpp	2011-11-25 12:55:42 UTC (rev 42158)
+++ branches/bmesh/blender/intern/cycles/blender/blender_mesh.cpp	2011-11-25 13:28:04 UTC (rev 42159)
@@ -114,9 +114,9 @@
 
 	/* create vertex color attributes */
 	{
-		BL::Mesh::vertex_colors_iterator l;
+		BL::Mesh::tessface_vertex_colors_iterator l;
 
-		for(b_mesh.vertex_colors.begin(l); l != b_mesh.vertex_colors.end(); ++l) {
+		for(b_mesh.tessface_vertex_colors.begin(l); l != b_mesh.tessface_vertex_colors.end(); ++l) {
 			if(!mesh_need_attribute(scene, mesh, ustring(l->name().c_str())))
 				continue;
 
@@ -146,9 +146,9 @@
 
 	/* create uv map attributes */
 	{
-		BL::Mesh::uv_textures_iterator l;
+		BL::Mesh::tessface_uv_textures_iterator l;
 
-		for(b_mesh.uv_textures.begin(l); l != b_mesh.uv_textures.end(); ++l) {
+		for(b_mesh.tessface_uv_textures.begin(l); l != b_mesh.tessface_uv_textures.end(); ++l) {
 			Attribute::Standard std = (l->active_render())? Attribute::STD_UV: Attribute::STD_NONE;
 			ustring name = ustring(l->name().c_str());
 

Modified: branches/bmesh/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/interface/interface_templates.c	2011-11-25 12:55:42 UTC (rev 42158)
+++ branches/bmesh/blender/source/blender/editors/interface/interface_templates.c	2011-11-25 13:28:04 UTC (rev 42159)
@@ -2103,7 +2103,7 @@
 	name= (namebuf)? namebuf: "";
 
 	/* hardcoded types */
-	if(itemptr->type == &RNA_MeshTextureFaceLayer || itemptr->type == &RNA_MeshColorLayer) {
+	if(itemptr->type == &RNA_MeshTexturePolyLayer || itemptr->type == &RNA_MeshLoopColorLayer) {
 		uiItemL(sub, name, icon);
 		uiBlockSetEmboss(block, UI_EMBOSSN);
 		uiDefIconButR(block, TOG, 0, ICON_SCENE, 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "active_render", 0, 0, 0, 0, 0, NULL);

Modified: branches/bmesh/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/bmesh/blender/source/blender/makesrna/RNA_access.h	2011-11-25 12:55:42 UTC (rev 42158)
+++ branches/bmesh/blender/source/blender/makesrna/RNA_access.h	2011-11-25 13:28:04 UTC (rev 42159)
@@ -306,6 +306,7 @@
 extern StructRNA RNA_Mesh;
 extern StructRNA RNA_MeshColor;
 extern StructRNA RNA_MeshColorLayer;
+extern StructRNA RNA_MeshLoopColorLayer;
 extern StructRNA RNA_MeshDeformModifier;
 extern StructRNA RNA_MeshEdge;
 extern StructRNA RNA_MeshFace;
@@ -320,6 +321,8 @@
 extern StructRNA RNA_MeshStringPropertyLayer;
 extern StructRNA RNA_MeshTextureFace;
 extern StructRNA RNA_MeshTextureFaceLayer;
+extern StructRNA RNA_MeshTexturePoly;
+extern StructRNA RNA_MeshTexturePolyLayer;
 extern StructRNA RNA_MeshVertex;
 extern StructRNA RNA_MessageSensor;
 extern StructRNA RNA_MetaBall;

Modified: branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c	2011-11-25 12:55:42 UTC (rev 42158)
+++ branches/bmesh/blender/source/blender/makesrna/intern/rna_mesh.c	2011-11-25 13:28:04 UTC (rev 42159)
@@ -85,6 +85,11 @@
 	return (me->edit_btmesh) ? &me->edit_btmesh->bm->ldata : &me->ldata;
 }
 
+static CustomData *rna_mesh_fdata_helper(Mesh *me)
+{
+	return (me->edit_btmesh) ? NULL : &me->fdata;
+}
+
 static CustomData *rna_mesh_pdata(PointerRNA *ptr)
 {
 	Mesh *me = rna_mesh(ptr);
@@ -97,6 +102,12 @@
 	return rna_mesh_ldata_helper(me);
 }
 
+static CustomData *rna_mesh_fdata(PointerRNA *ptr)
+{
+	Mesh *me = rna_mesh(ptr);
+	return rna_mesh_fdata_helper(me);
+}
+
 static void rna_Mesh_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
 	ID *id= ptr->id.data;
@@ -257,6 +268,112 @@
 		return area_tri_v3(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co);
 }
 
+static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	values[0]= mtface->uv[0][0];
+	values[1]= mtface->uv[0][1];
+}
+
+static void rna_MeshTextureFace_uv1_set(PointerRNA *ptr, const float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	mtface->uv[0][0]= values[0];
+	mtface->uv[0][1]= values[1];
+}
+
+static void rna_MeshTextureFace_uv2_get(PointerRNA *ptr, float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	values[0]= mtface->uv[1][0];
+	values[1]= mtface->uv[1][1];
+}
+
+static void rna_MeshTextureFace_uv2_set(PointerRNA *ptr, const float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	mtface->uv[1][0]= values[0];
+	mtface->uv[1][1]= values[1];
+}
+
+static void rna_MeshTextureFace_uv3_get(PointerRNA *ptr, float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	values[0]= mtface->uv[2][0];
+	values[1]= mtface->uv[2][1];
+}
+
+static void rna_MeshTextureFace_uv3_set(PointerRNA *ptr, const float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	mtface->uv[2][0]= values[0];
+	mtface->uv[2][1]= values[1];
+}
+
+static void rna_MeshTextureFace_uv4_get(PointerRNA *ptr, float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	values[0]= mtface->uv[3][0];
+	values[1]= mtface->uv[3][1];
+}
+
+static void rna_MeshTextureFace_uv4_set(PointerRNA *ptr, const float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+
+	mtface->uv[3][0]= values[0];
+	mtface->uv[3][1]= values[1];
+}
+
+static int rna_CustomDataData_numverts(PointerRNA *ptr, int type)
+{
+	Mesh *me = rna_mesh(ptr);
+	CustomData *fdata = rna_mesh_fdata(ptr);
+	CustomDataLayer *cdl;
+	int a, b;
+
+	for (cdl = fdata->layers, a = 0; a < fdata->totlayer; cdl++, a++) {
+		if(cdl->type == type) {
+			b = ((char *)ptr->data - ((char*)cdl->data)) / CustomData_sizeof(type);
+			if(b >= 0 && b < me->totface) {
+				return (me->mface[b].v4 ? 4 : 3);
+			}
+		}
+	}
+
+	return 0;
+}
+
+static int rna_MeshTextureFace_uv_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+	length[0]= rna_CustomDataData_numverts(ptr, CD_MTFACE);
+	length[1]= 2;
+	return length[0]*length[1];
+}
+
+static void rna_MeshTextureFace_uv_get(PointerRNA *ptr, float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+	int totvert= rna_CustomDataData_numverts(ptr, CD_MTFACE);
+
+	memcpy(values, mtface->uv, totvert * 2 * sizeof(float));
+}
+
+static void rna_MeshTextureFace_uv_set(PointerRNA *ptr, const float *values)
+{
+	MTFace *mtface= (MTFace*)ptr->data;
+	int totvert= rna_CustomDataData_numverts(ptr, CD_MTFACE);
+
+	memcpy(mtface->uv, values, totvert * 2 * sizeof(float));
+}
+
 /* notice red and blue are swapped */
 static void rna_MeshColor_color1_get(PointerRNA *ptr, float *values)
 {
@@ -422,77 +539,117 @@
 	return (me->edit_btmesh) ? 0 : me->totloop;
 }
 
-/* uv_textures */
+/* face uv_textures */
 
-DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_texture, pdata, CD_MTEXPOLY)
-DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, active, MeshTextureFaceLayer)
-DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, clone, MeshTextureFaceLayer)
-DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, stencil, MeshTextureFaceLayer)
-DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_texture, pdata, CD_MTEXPOLY, render, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION(tessface_uv_texture, fdata, CD_MTFACE)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(tessface_uv_texture, fdata, CD_MTFACE, active, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(tessface_uv_texture, fdata, CD_MTFACE, clone, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(tessface_uv_texture, fdata, CD_MTFACE, stencil, MeshTextureFaceLayer)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(tessface_uv_texture, fdata, CD_MTFACE, render, MeshTextureFaceLayer)
 
-static int rna_CustomDataData_numverts(PointerRNA *ptr, int type)
+static void rna_MeshTextureFaceLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
 {
-	/*BMESH_TODO
-	CustomData *fdata= rna_mesh_fdata(ptr);
-	CustomDataLayer *cdl;
-	int a, b;
+	Mesh *me = rna_mesh(ptr);
+	CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
+	rna_iterator_array_begin(iter, layer->data, sizeof(MTFace), (me->edit_btmesh)? 0: me->totface, 0, NULL);
+}
 
-	for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
-		if(cdl->type == type) {
-			b= ((char*)ptr->data - ((char*)cdl->data))/CustomData_sizeof(type);
-			if(b >= 0 && b < me->totface)
-				return (me->mface[b].v4? 4: 3);
-		}
-	}
+static int rna_MeshTextureFaceLayer_data_length(PointerRNA *ptr)
+{
+	Mesh *me = rna_mesh(ptr);
+	return (me->edit_btmesh)? 0: me->totface;
+}
 
-	return 0;*/
-	return 0;
+static int rna_MeshTextureFaceLayer_active_render_get(PointerRNA *ptr)
+{
+	return rna_CustomDataLayer_active_get(ptr, rna_mesh_fdata(ptr), CD_MTFACE, 1);
 }
 
-static void rna_MeshTextureFaceLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
+static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr)
 {
+	return rna_CustomDataLayer_active_get(ptr, rna_mesh_fdata(ptr), CD_MTFACE, 0);
+}
+
+static int rna_MeshTextureFaceLayer_clone_get(PointerRNA *ptr)
+{
+	return rna_CustomDataLayer_clone_get(ptr, rna_mesh_fdata(ptr), CD_MTFACE, 0);
+}
+
+static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value)
+{
+	rna_CustomDataLayer_active_set(ptr, rna_mesh_fdata(ptr), value, CD_MTFACE, 1);
+}
+
+static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value)
+{
+	rna_CustomDataLayer_active_set(ptr, rna_mesh_fdata(ptr), value, CD_MTFACE, 0);
+}
+
+static void rna_MeshTextureFaceLayer_clone_set(PointerRNA *ptr, int value)
+{

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list