[Bf-blender-cvs] [656e7a9] cycles-ptex-12: WIP add Ptex UVs to Cycles mesh

Nicholas Bishop noreply at git.blender.org
Mon Jan 26 02:04:48 CET 2015


Commit: 656e7a911ee2a4f1b44df6761376394c82840d49
Author: Nicholas Bishop
Date:   Mon Jan 19 16:03:04 2015 +0100
Branches: cycles-ptex-12
https://developer.blender.org/rB656e7a911ee2a4f1b44df6761376394c82840d49

WIP add Ptex UVs to Cycles mesh

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

M	intern/cycles/blender/blender_mesh.cpp

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

diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 8805443..19d03c3 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -355,6 +355,38 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector<
 		nverts[fi] = n;
 	}
 
+	// create ptex face-id attributes */
+	{
+		Attribute *face_id_attr = mesh->attributes.add(ATTR_STD_PTEX_UV);
+		mesh->attributes.reserve();
+
+		float3 (*dst)[3] = (float3(*)[3])face_id_attr->data_float3();
+		size_t cur_tri = 0;
+		size_t cur_tessface = 0;
+
+		const int pattern[2][3] = {
+			{0, 1, 2},
+			{0, 2, 3}
+		};
+
+		for (b_mesh.tessfaces.begin(f); f != b_mesh.tessfaces.end(); ++f) {
+			BL::PtexTessFace ptex = f->ptex_tess_face();
+			const int num_triangles = (nverts[cur_tessface] == 4) ? 2 : 1;
+
+			for (int i = 0; i < num_triangles; i++) {
+				for (int j = 0; j < 3; j++) {
+					BL::PtexLoop corner = ptex.corners[pattern[i][j]];
+					dst[cur_tri][j] = make_float3(corner.uv()[0],
+												  corner.uv()[1],
+												  corner.id());
+				}
+				cur_tri++;
+			}
+
+			cur_tessface++;
+		}
+	}
+
 	/* create vertex color attributes */
 	{
 		BL::Mesh::tessface_vertex_colors_iterator l;




More information about the Bf-blender-cvs mailing list