Ejemplo n.º 1
0
    private void SubdivideYOnly(ref List <CubemapSkyboxVertex> destArray, ref CubemapSkyboxVertex v1,
                                ref CubemapSkyboxVertex v2,
                                ref CubemapSkyboxVertex v3)
    {
        float d12 = Mathf.Abs(v2.y - v1.y);
        float d23 = Mathf.Abs(v2.y - v3.y);
        float d31 = Mathf.Abs(v3.y - v1.y);

        CubemapSkyboxVertex top, va, vb;

        if (d12 < d23 && d12 < d31)
        {
            top = v3;
            va  = v1;
            vb  = v2;
        }
        else if (d23 < d12 && d23 < d31)
        {
            top = v1;
            va  = v2;
            vb  = v3;
        }
        else
        {
            top = v2;
            va  = v3;
            vb  = v1;
        }

        CubemapSkyboxVertex v12 = SubDivVert(ref top, ref va);
        CubemapSkyboxVertex v13 = SubDivVert(ref top, ref vb);

        destArray.Add(top);
        destArray.Add(v12);
        destArray.Add(v13);

        Vector3 a = new Vector3(v13.x - va.x, v13.y - va.y, v13.z - va.z);
        Vector3 b = new Vector3(v12.x - vb.x, v12.y - vb.y, v12.z - vb.z);

        if (a.sqrMagnitude > b.sqrMagnitude)
        {
            destArray.Add(v12);
            destArray.Add(va);
            destArray.Add(vb);

            destArray.Add(v13);
            destArray.Add(v12);
            destArray.Add(vb);
        }
        else
        {
            destArray.Add(v13);
            destArray.Add(v12);
            destArray.Add(va);

            destArray.Add(v13);
            destArray.Add(va);
            destArray.Add(vb);
        }
    }
Ejemplo n.º 2
0
    private CubemapSkyboxVertex SubDivVert(ref CubemapSkyboxVertex v1, ref CubemapSkyboxVertex v2)
    {
        CubemapSkyboxVertex res;

        Vector3 p1 = new Vector3(v1.x, v1.y, v1.z);
        Vector3 p2 = new Vector3(v2.x, v2.y, v2.z);

        Vector3 h = Vector3.Normalize(Vector3.Lerp(p1, p2, 0.5f));

        res.x     = res.tu = h.x;
        res.y     = res.tv = h.y;
        res.z     = res.tw = h.z;
        res.color = Color.white;
        return(res);
    }
Ejemplo n.º 3
0
    private void Subdivide(ref List <CubemapSkyboxVertex> destArray, ref CubemapSkyboxVertex v1,
                           ref CubemapSkyboxVertex v2,
                           ref CubemapSkyboxVertex v3)
    {
        CubemapSkyboxVertex v12 = SubDivVert(ref v1, ref v2);
        CubemapSkyboxVertex v23 = SubDivVert(ref v2, ref v3);
        CubemapSkyboxVertex v13 = SubDivVert(ref v1, ref v3);

        destArray.Add(v1);
        destArray.Add(v12);
        destArray.Add(v13);

        destArray.Add(v12);
        destArray.Add(v2);
        destArray.Add(v23);

        destArray.Add(v23);
        destArray.Add(v13);
        destArray.Add(v12);

        destArray.Add(v3);
        destArray.Add(v13);
        destArray.Add(v23);
    }