1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
CTexture dbgtxt=null;
List<VertexUV> LVV = new List<VertexUV>();
foreach (var icc in CUBES)
{
foreach (TFace gh_1 in icc.FACES)
{
//if (gh_2 != null)
if (gh_1 != null)
{
dbgtxt = gh_1.Texture;
foreach (var gh_2 in gh_1.lvtx)
{
int[] vn = new int[3];
for (int i = 0; i < 3; i++)
{
//vn[i] = dd.AppendVertex(new Vector3d(gh_2.points[i].X, gh_2.points[i].Y, gh_2.points[i].Z));
LVV.Add(new VertexUV(gh_2.points[i],gh_2.uv[i].U,gh_2.uv[i].V));
n0++;
}
//dd.AppendTriangle(vn[0], vn[1], vn[2]);
n1++;
}
}
}
}
List<Tuple<int, float, float>> Indices = new List<Tuple<int,float,float>>();
List<VertexUV> deja = new List<VertexUV>();
foreach(var icc in LVV)
{
var ind = deja.FindIndex(xx => (xx.points.X == icc.points.X) && (xx.points.Y == icc.points.Y) && (xx.points.Z == icc.points.Z));
if (ind==-1)
{
int indx=deja.Count();
deja.Add(icc);
Indices.Add(Tuple.Create(indx,icc.uvs.U,icc.uvs.V));
}
else
{
Indices.Add(Tuple.Create(ind, icc.uvs.U, icc.uvs.V));
}
}
foreach(var icc in deja)
{
dd.AppendVertex(new Vector3d(icc.points.X, icc.points.Y, icc.points.Z));
///dd.AppendTriangle()
}
for (int _i = 0;_i < Indices.Count/3;_i++)
{
int i = _i * 3;
dd.AppendTriangle(Indices[(i)+0].Item1, Indices[(i)+1].Item1, Indices[(i)+2].Item1);
} |
Partager