Exemplo n.º 1
0
    public MeshBuilder Create()
    {
        CircleMesh circleMesh = new CircleMesh();

        circleMesh.radius        = radius;
        circleMesh.direction1    = direction1;
        circleMesh.direction2    = direction2;
        circleMesh.totalVertices = totalPerimeterVertices;

        Vector3 direction3 = Vector3.Cross(direction1, direction2).normalized;

        MeshBuilder upCircle = circleMesh.Create()
                               .Translate(0.5f * height * direction3);

        MeshBuilder downCircle = circleMesh.Create()
                                 .Translate(-0.5f * height * direction3);

        MeshUnion meshUnion = new MeshUnion();

        meshUnion.size          = height;
        meshUnion.totalSegments = totalVerticalSegments;

        MeshBuilder tunnel = meshUnion.Create(upCircle, downCircle);

        return(MeshBuilder.Join(upCircle, downCircle).Join(tunnel));
    }
Exemplo n.º 2
0
    public MeshBuilder Create()
    {
        CircleMesh circleMesh = new CircleMesh();

        circleMesh.radius        = radius;
        circleMesh.direction1    = direction1;
        circleMesh.direction2    = direction2;
        circleMesh.totalVertices = totalPerimeterVertices;

        if ((direction3 - Vector3.up).magnitude < 0.001f)
        {
            direction3 = Vector3.Cross(direction1, direction2).normalized;
        }

        MeshBuilder baseCircle = circleMesh.Create()
                                 .Translate(-0.5f * height * direction3);

        MeshBuilder top = new MeshBuilder();

        top.AddVertice(new Vector3(0f, -0.5f * height, 0f) + height * direction3, "border");

        MeshUnion meshUnion = new MeshUnion();

        meshUnion.size          = height;
        meshUnion.totalSegments = totalVerticalSegments;

        MeshBuilder cone = meshUnion.Create(top, baseCircle);

        return(cone.Join(baseCircle));
    }