[Bf-blender-cvs] [263814d] cycles-ptex-49: Add very simple UI for setting initial Ptex resolution

Nicholas Bishop noreply at git.blender.org
Tue Feb 10 12:51:53 CET 2015


Commit: 263814dbf6aa0523cf599f22ed10faeb8924b11c
Author: Nicholas Bishop
Date:   Tue Feb 10 12:36:55 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB263814dbf6aa0523cf599f22ed10faeb8924b11c

Add very simple UI for setting initial Ptex resolution

===================================================================

M	release/scripts/startup/bl_ui/properties_data_mesh.py
M	source/blender/editors/mesh/mesh_data.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py
index 6893259..2de15a8 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -196,6 +196,7 @@ class DATA_PT_ptex(MeshButtonsPanel, Panel):
     def draw(self, context):
         layout = self.layout
 
+        pts = context.tool_settings.ptex_tool_settings
         me = context.mesh
 
         row = layout.row()
@@ -207,6 +208,8 @@ class DATA_PT_ptex(MeshButtonsPanel, Panel):
         col.operator("mesh.ptex_add", icon='ZOOMIN', text="")
         col.operator("mesh.ptex_remove", icon='ZOOMOUT', text="")
 
+        layout.prop(pts, "resolution")
+
         layout.operator("mesh.ptex_res_change",
                         text='Halve Resolution').mode = 'HALVE'
         layout.operator("mesh.ptex_res_change",
diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c
index 8fb8748..90dcff7 100644
--- a/source/blender/editors/mesh/mesh_data.c
+++ b/source/blender/editors/mesh/mesh_data.c
@@ -720,16 +720,20 @@ void MESH_OT_vertex_color_remove(wmOperatorType *ot)
 
 /*** ptex operator ***/
 
-static int mesh_ptex_add(Mesh *me, const char *name, const bool active_set)
+static int mesh_ptex_add(const PtexToolSettings *pts, Mesh *me,
+						 const char *name, const bool active_set)
 {
 	int layernum = 0;
 
 	if (me->edit_btmesh) {
 		/* TODO */
 		assert(!me->edit_btmesh);
+		return -1;
 	}
 	else {
 		MLoopPtex *layer_data;
+		const MPtexLogRes logres = {pts->u_logres, pts->u_logres};
+		int i;
 
 		layernum = CustomData_number_of_layers(&me->ldata, CD_LOOP_PTEX);
 
@@ -740,9 +744,7 @@ static int mesh_ptex_add(Mesh *me, const char *name, const bool active_set)
 
 		{
 			// TODO
-			int i;
 			MPtexTexelInfo texel_info = {4, MPTEX_DATA_TYPE_UINT8};
-			MPtexLogRes logres = {5, 5};
 			for (i = 0; i < me->totloop; i++) {
 				BKE_loop_ptex_init(&layer_data[i], texel_info, logres);
 			}
@@ -764,9 +766,11 @@ static int mesh_ptex_add(Mesh *me, const char *name, const bool active_set)
 static int mesh_ptex_add_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Object *ob = ED_object_context(C);
+	Scene *scene = CTX_data_scene(C);
+	PtexToolSettings *pts = &scene->toolsettings->ptex_tool_settings;
 	Mesh *me = ob->data;
 
-	if (mesh_ptex_add(me, NULL, true) == -1)
+	if (mesh_ptex_add(pts, me, NULL, true) == -1)
 		return OPERATOR_CANCELLED;
 
 	return OPERATOR_FINISHED;
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 9ac5066..24d3dfb 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1066,6 +1066,13 @@ typedef struct MeshStatVis {
 	float sharp_min, sharp_max;
 } MeshStatVis;
 
+typedef struct PtexToolSettings {
+	/* TODO(nicholasbishop): for now just expose one resolution
+	 * setting and use for both U and V resolution */
+	int u_logres;
+
+	int pad;
+} PtexToolSettings;
 
 /* *************************************************************** */
 /* Tool Settings */
@@ -1184,6 +1191,8 @@ typedef struct ToolSettings {
 	struct UnifiedPaintSettings unified_paint_settings;
 
 	struct MeshStatVis statvis;
+
+	struct PtexToolSettings ptex_tool_settings;
 } ToolSettings;
 
 /* *************************************************************** */
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 1c133db..cd1bb09 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -2120,6 +2120,12 @@ static void rna_def_tool_settings(BlenderRNA  *brna)
 	RNA_def_property_flag(prop, PROP_NEVER_NULL);
 	RNA_def_property_struct_type(prop, "MeshStatVis");
 	RNA_def_property_ui_text(prop, "Mesh Statistics Visualization", NULL);
+
+	/* Ptex */
+	prop = RNA_def_property(srna, "ptex_tool_settings", PROP_POINTER, PROP_NONE);
+	RNA_def_property_flag(prop, PROP_NEVER_NULL);
+	RNA_def_property_struct_type(prop, "PtexToolSettings");
+	RNA_def_property_ui_text(prop, "Ptex Tool Settings", NULL);
 }
 
 static void rna_def_unified_paint_settings(BlenderRNA  *brna)
@@ -2318,6 +2324,35 @@ static void rna_def_statvis(BlenderRNA  *brna)
 	RNA_def_property_update(prop, 0, "rna_EditMesh_update");
 }
 
+static void rna_def_ptex_tool_settings(BlenderRNA  *brna)
+{
+	StructRNA *srna;
+	PropertyRNA *prop;
+
+	static EnumPropertyItem stat_type[] = {
+		{0, "LOGRES_0", 0, "1x1", ""},
+		{1, "LOGRES_1", 0, "2x2", ""},
+		{2, "LOGRES_2", 0, "4x4", ""},
+		{3, "LOGRES_3", 0, "8x8", ""},
+		{4, "LOGRES_4", 0, "16x16", ""},
+		{5, "LOGRES_5", 0, "32x32", ""},
+		{6, "LOGRES_6", 0, "64x64", ""},
+		{7, "LOGRES_7", 0, "128x128", ""},
+		{8, "LOGRES_8", 0, "256x256", ""},
+		{9, "LOGRES_9", 0, "512x512", ""},
+		{0, NULL, 0, NULL, NULL}};
+
+	srna = RNA_def_struct(brna, "PtexToolSettings", NULL);
+	RNA_def_struct_ui_text(srna, "Ptex Tool Settings", "");
+
+	prop = RNA_def_property(srna, "resolution", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "u_logres");
+	RNA_def_property_enum_items(prop, stat_type);
+	RNA_def_property_ui_text(prop, "Face Resolution",
+							 "Per-face resolution for new layers");
+	RNA_def_property_update(prop, 0, "rna_EditMesh_update");
+}
+
 static void rna_def_unit_settings(BlenderRNA  *brna)
 {
 	StructRNA *srna;
@@ -5852,6 +5887,7 @@ void RNA_def_scene(BlenderRNA *brna)
 	rna_def_tool_settings(brna);
 	rna_def_unified_paint_settings(brna);
 	rna_def_statvis(brna);
+	rna_def_ptex_tool_settings(brna);
 	rna_def_unit_settings(brna);
 	rna_def_scene_image_format_data(brna);
 	rna_def_scene_game_data(brna);




More information about the Bf-blender-cvs mailing list