예제 #1
0
    protected virtual void BuildMesh()
    {
        _verts.Clear();
        _tris.Clear();
        _colours.Clear();

        //---

        int vc = _verts.size;

        Vector3 scale = Vector3.one * SCALE;

        // points
        for (int i = 0; i < _verlet._points.Length; ++i)
        {
            Vector3 pos = _verlet._points[i].curr_mat.GetColumn(3);

            //UtilShape.BuildCube(pos, Quaternion.identity, scale * 0.3f, ref _verts, ref _tris);

            UtilShape.BuildSphere(pos, Quaternion.identity, scale * 0.3f, 8, 6,
                                  ref _verts, ref _tris);
        }
        for (int c = vc; c < _verts.size; ++c)
        {
            _colours.Add(col_joint);
        }
        vc = _verts.size;

        // connections
        for (int i = 0; i < _verlet._pos_constraints.Length; ++i)
        {
            Verlet.ConstraintPosition cp = _verlet._pos_constraints[i];
            Vector3 p0 = _verlet.GetPointPos(cp.index_0);
            Vector3 p1 = _verlet.GetPointPos(cp.index_1);

            UtilShape.BuildCylinder(p0, p1, SCALE * 0.2f, ref _verts, ref _tris);

            Debug.DrawLine(transform.position + p0, transform.position + p1, Color.red);
        }
        for (int c = vc; c < _verts.size; ++c)
        {
            _colours.Add(col_stem);
        }
        vc = _verts.size;

        //---

        _mf.mesh.Clear();
        _mf.mesh.vertices  = _verts.ToArray();
        _mf.mesh.triangles = _tris.ToArray();
        _mf.mesh.colors    = _colours.ToArray();
        _mf.mesh.RecalculateBounds();
        _mf.mesh.RecalculateNormals();
    }
예제 #2
0
    protected virtual void BuildMesh()
    {
        _verts.Clear();
        _tris.Clear();
        _colours.Clear();

        //---

        int vc = _verts.size;

        //UtilShape.BuildSphere(Vector3.zero, Quaternion.identity, Vector3.one, 24, 16,
        //	ref _verts, ref _tris);

        for (int i = vc; i < _verts.size; ++i)
        {
            _colours.Add(Color.white);
        }
        vc = _verts.size;

        UtilShape.BuildSphere(new Vector3(0f, 0f, 0f), Quaternion.identity, Vector3.one * 1f,
                              12, 8, ref _verts, ref _tris);

        for (int i = vc; i < _verts.size; ++i)
        {
            _colours.Add(Color.cyan);
        }
        vc = _verts.size;


        //---

        _mf.mesh.Clear();
        _mf.mesh.vertices  = _verts.ToArray();
        _mf.mesh.triangles = _tris.ToArray();
        _mf.mesh.colors    = _colours.ToArray();
        _mf.mesh.RecalculateBounds();
        _mf.mesh.RecalculateNormals();
    }