Beispiel #1
0
        public void GetArraysforVBO(out PrimitiveType primitives, out VertexClass[] vertices, out uint[] indices)
        {
            primitives = PrimitiveMode;

            vertices = new VertexClass[VertexArray.Length];
            for (uint i = 0; i < VertexArray.Length; i++)
            {
                //vertices[i].Normal = VertexArray[i].Normal;
                vertices[i].Position = new Vector3Class(VertexArray[i].Position);
            }

            indices = IndexArray;
        }
Beispiel #2
0
    }     // FinalizeAsset()

    #region Util Functions
    void UnifyVerts(ClassImportedModel impModel)
    {
        int i, j;

        int[]              polyVerts = impModel.GetPolyVerts();
        int[]              uvIndex   = impModel.GetUVIndex();
        Vector3[]          verts     = impModel.GetVerts();
        Vector3[]          norms     = impModel.GetNorms();
        Vector2[]          uvs       = impModel.GetUVs();
        List <VertexClass> vList     = new List <VertexClass>();
        VertexClass        vc;


        for (i = 0; i < polyVerts.Length; i++)
        {
            vc     = new VertexClass();
            vc.pos = verts[polyVerts[i]];
            vc.uv  = uvs[uvIndex[i]];

            if (norms.Length == verts.Length)
            {
                vc.norm = norms[polyVerts[i]];
            }             // if
            else
            {
                vc.norm = norms[i];                 //HERE
            }

            if (vList.Count < 1)
            {
                polyVerts[i] = i;
                vList.Add(vc);
                continue;
            }             // if

            for (j = 0; j < vList.Count; j++)
            {
                if (vList[j].pos == vc.pos &&
                    vList[j].uv == vc.uv &&
                    vList[j].norm == vc.norm)
                {
                    polyVerts[i] = j;
                    break;
                }

                if (j == vList.Count - 1)
                {
                    polyVerts[i] = i;
                    vList.Add(vc);
                } //if
            }     // for
        }         // for

        verts = new Vector3[vList.Count];
        norms = new Vector3[vList.Count];
        uvs   = new Vector2[vList.Count];

        for (i = 0; i < verts.Length; i++)
        {
            verts[i] = vList[i].pos;
            norms[i] = vList[i].norm;
            uvs[i]   = vList[i].uv;
        }         // for

        impModel.SetVerts(verts);
        impModel.SetNorms(norms);
        impModel.SetUVs(uvs);
        impModel.SetPolyVerts(polyVerts);
        return;
    }     // UnifyVerts()
	} // FinalizeAsset()
	
	#region Util Functions
	void UnifyVerts(ClassImportedModel impModel)
	{
		int i,j;
		int[] polyVerts = impModel.GetPolyVerts();
		int[] uvIndex = impModel.GetUVIndex();
		Vector3[] verts = impModel.GetVerts();
		Vector3[] norms = impModel.GetNorms();
		Vector2[] uvs = impModel.GetUVs();
		List<VertexClass> vList = new List<VertexClass>();
		VertexClass vc;
		
		
		for(i=0;i<polyVerts.Length;i++)
		{
			vc = new VertexClass();
			vc.pos = verts[polyVerts[i]];
			vc.uv = uvs[uvIndex[i]];
			
			if(norms.Length == verts.Length)
			{
				vc.norm = norms[polyVerts[i]];
			} // if
			else
			{
				vc.norm = norms[i]; //HERE
			}
			
			if(vList.Count<1)
			{
				polyVerts[i] = i;
				vList.Add(vc);
				continue;
			} // if
			
			for(j = 0; j<vList.Count; j++)
			{
				if(vList[j].pos == vc.pos
					&& vList[j].uv == vc.uv
					&& vList[j].norm == vc.norm)
				{
					polyVerts[i] = j;
					break;
				}
				
				if(j==vList.Count-1)
				{
					polyVerts[i] = i;
					vList.Add(vc);
				} //if
			} // for
		} // for
		
		verts = new Vector3[vList.Count];
		norms = new Vector3[vList.Count];
		uvs = new Vector2[vList.Count];
		
		for(i=0;i<verts.Length;i++)
		{
			verts[i] = vList[i].pos;
			norms[i] = vList[i].norm;
			uvs[i] = vList[i].uv;
		} // for
		
		impModel.SetVerts(verts);
		impModel.SetNorms(norms);
		impModel.SetUVs(uvs);
		impModel.SetPolyVerts(polyVerts);
		return;
	} // UnifyVerts()