public void Paint_UV() { Vector3 cPos = uMove.getCursorPostiion(); ICO_MeshDraft = cosaHedra.getMeshDraft(); List<int> tL = ICO_MeshDraft.triangles; List<Vector3> vL = ICO_MeshDraft.vertices; List<Vector2> uvL = ICO_MeshDraft.uv; int numVerts = tL.Count; Vector3 vToLoc; Vector2 uv = new Vector2(0,0); Vector3 vC; Vector3 vIn; Vector3 vUp; Vector3 vRight; for (int i = 0; i< numVerts-2; i+=3) { vC = (vL[tL[i]] + vL[tL[i + 1]] + vL[tL[i + 2]]) / 3f; vToLoc = vC - cPos; if (vToLoc.magnitude < 1.414*fRadius_UV) { for (int k = i; k < i + 3; k++) { vUp = Vector3.up; vIn = vL[tL[k]].normalized; vRight = Vector3.Cross(vUp, vIn); vToLoc = vL[tL[k]] - cPos; vToLoc /= fRadius_UV * 2; uvL[tL[k]] = new Vector2(0.5f + Vector3.Dot(vToLoc, vRight), 0.5f + Vector3.Dot(vToLoc, vUp)); } } } cosaHedra.writeMesh(); }
Stride – triangles – subtly misleading name – should be tvert_idxs
public void Paint_UV() { Vector3 cPos = uMove.getCursorPostiion(); ICO_MeshDraft = cosaHedra.getMeshDraft(); List<int> tL = ICO_MeshDraft.triangles; List<Vector3> vL = ICO_MeshDraft.vertices; List<Vector2> uvL = ICO_MeshDraft.uv; int numVerts = tL.Count; Vector3 vToLoc; Vector2 uv = new Vector2(0,0); Vector3 vC; //uv.x = 0f; //uv.y = 0f; for (int i = 0; i< numVerts-2; i+=3) { vC = (vL[tL[i]] + vL[tL[i + 1]] + vL[tL[i + 2]]) / 3f; vToLoc = vC - cPos; if (vToLoc.magnitude < 2*fRadius_UV) { uvL[tL[i]] = new Vector2(0, 0); uvL[tL[i+1]] = new Vector2(0, 0); uvL[tL[i+2]] = new Vector2(0, 0); } } cosaHedra.writeMesh(); }
Camp of the Saints
CampOfTheSaints
Crow-Falls
Crow-Falls
Decent of Sweden
Descent-Of-Sweden
With Open Gates Intro
WithOpenGatesIntro
With Open Gates
WithOpenGates
Winter Chan
Winter-Chan
What it Has to Be Instrumental
What-It-Has-To-Be