[Bf-blender-cvs] [01df4818a6e] blender2.7: Fix Cycles curve UVs wrong after recent changes.

Brecht Van Lommel noreply at git.blender.org
Mon Mar 18 19:10:19 CET 2019


Commit: 01df4818a6e1d3b93517e48a617310481abd9339
Author: Brecht Van Lommel
Date:   Mon Mar 18 18:51:24 2019 +0100
Branches: blender2.7
https://developer.blender.org/rB01df4818a6e1d3b93517e48a617310481abd9339

Fix Cycles curve UVs wrong after recent changes.

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

M	intern/cycles/blender/blender_curves.cpp
M	intern/cycles/render/curves.h

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

diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index b5e49bbeeef..35f5db16497 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -254,7 +254,7 @@ static bool ObtainCacheParticleUV(Mesh *mesh,
 					BL::Mesh::tessface_uv_textures_iterator l;
 					b_mesh->tessface_uv_textures.begin(l);
 
-					float3 uv = make_float3(0.0f, 0.0f, 0.0f);
+					float2 uv = make_float2(0.0f, 0.0f);
 					if(b_mesh->tessface_uv_textures.length())
 						b_psys.uv_on_emitter(psmd, *b_pa, pa_no, uv_num, &uv.x);
 					CData->curve_uv.push_back_slow(uv);
@@ -776,14 +776,10 @@ static void ExportCurveSegmentsMotion(Mesh *mesh, ParticleCurveData *CData, int
 static void ExportCurveTriangleUV(ParticleCurveData *CData,
                                   int vert_offset,
                                   int resol,
-                                  float3 *uvdata)
+                                  float2 *uvdata)
 {
 	if(uvdata == NULL)
 		return;
-
-	float time = 0.0f;
-	float prevtime = 0.0f;
-
 	int vertexindex = vert_offset;
 
 	for(int sys = 0; sys < CData->psys_firstcurve.size(); sys++) {
@@ -792,30 +788,20 @@ static void ExportCurveTriangleUV(ParticleCurveData *CData,
 				continue;
 
 			for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
-				time = CData->curvekey_time[curvekey]/CData->curve_length[curve];
-
 				for(int section = 0; section < resol; section++) {
 					uvdata[vertexindex] = CData->curve_uv[curve];
-					uvdata[vertexindex].z = prevtime;
 					vertexindex++;
 					uvdata[vertexindex] = CData->curve_uv[curve];
-					uvdata[vertexindex].z = time;
 					vertexindex++;
 					uvdata[vertexindex] = CData->curve_uv[curve];
-					uvdata[vertexindex].z = prevtime;
 					vertexindex++;
 					uvdata[vertexindex] = CData->curve_uv[curve];
-					uvdata[vertexindex].z = time;
 					vertexindex++;
 					uvdata[vertexindex] = CData->curve_uv[curve];
-					uvdata[vertexindex].z = prevtime;
 					vertexindex++;
 					uvdata[vertexindex] = CData->curve_uv[curve];
-					uvdata[vertexindex].z = time;
 					vertexindex++;
 				}
-
-				prevtime = time;
 			}
 		}
 	}
@@ -1094,9 +1080,9 @@ void BlenderSync::sync_curves(Mesh *mesh,
 					if(active_render)
 						attr_uv = mesh->attributes.add(std, name);
 					else
-						attr_uv = mesh->attributes.add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CORNER);
+						attr_uv = mesh->attributes.add(name, TypeFloat2, ATTR_ELEMENT_CORNER);
 
-					float3 *uv = attr_uv->data_float3();
+					float2 *uv = attr_uv->data_float2();
 
 					ExportCurveTriangleUV(&CData, tri_num * 3, used_res, uv);
 				}
@@ -1104,9 +1090,9 @@ void BlenderSync::sync_curves(Mesh *mesh,
 					if(active_render)
 						attr_uv = mesh->curve_attributes.add(std, name);
 					else
-						attr_uv = mesh->curve_attributes.add(name, TypeDesc::TypePoint,  ATTR_ELEMENT_CURVE);
+						attr_uv = mesh->curve_attributes.add(name, TypeFloat2,  ATTR_ELEMENT_CURVE);
 
-					float3 *uv = attr_uv->data_float3();
+					float2 *uv = attr_uv->data_float2();
 
 					if(uv) {
 						size_t i = 0;
diff --git a/intern/cycles/render/curves.h b/intern/cycles/render/curves.h
index cf75751c58f..9db411bc04b 100644
--- a/intern/cycles/render/curves.h
+++ b/intern/cycles/render/curves.h
@@ -75,7 +75,7 @@ public:
 	array<int> curve_firstkey;
 	array<int> curve_keynum;
 	array<float> curve_length;
-	array<float3> curve_uv;
+	array<float2> curve_uv;
 	array<float3> curve_vcol;
 
 	array<float3> curvekey_co;



More information about the Bf-blender-cvs mailing list