예제 #1
0
        public static void GenerateTorus(Mesh mesh,
                                         float majorRadius, int numMajorSegments,
                                         float minorRadius, int numMinorSegments,
                                         float minorStartAngle  = 0f,
                                         float maxMinorArcAngle = 360f,
                                         bool shadeFlat         = false)
        {
            Vecs verts; Ints indices; Vecs normals; Vec2s uvs;

            borrowGeneratorResources(out verts, out indices, out normals, out uvs);

            TorusSupport.AddIndices(indices, verts.Count,
                                    numMajorSegments,
                                    numMinorSegments,
                                    maxMinorArcAngle);
            TorusSupport.AddVerts(verts, normals, uvs,
                                  majorRadius, numMajorSegments,
                                  minorRadius, numMinorSegments,
                                  minorStartAngle: minorStartAngle,
                                  maxMinorArcAngle: maxMinorArcAngle);



            apply(mesh, verts, indices, normals, uvs: uvs);

            returnGeneratorResources(verts, indices, normals, uvs);

            if (shadeFlat)
            {
                Meshing.PolyMesh.RoundTrip(mesh);
            }
        }
예제 #2
0
        public static void GenerateTorus(Mesh mesh,
                                         float majorRadius, int numMajorSegments,
                                         float minorRadius, int numMinorSegments)
        {
            Vecs verts; Ints indices; Vecs normals;

            borrowGeneratorResources(out verts, out indices, out normals);

            TorusSupport.AddIndices(indices, verts.Count, numMajorSegments, numMinorSegments);
            TorusSupport.AddVerts(verts, normals, majorRadius, numMajorSegments, minorRadius, numMinorSegments);

            apply(mesh, verts, indices, normals);
            returnGeneratorResources(verts, indices, normals);
        }
예제 #3
0
 public static void GenerateTorus(float majorRadius, int numMajorSegments, float minorRadius, int numMinorSegments,
                                  List <Vector3> outVerts, List <int> outIndices, List <Vector3> outNormals)
 {
     TorusSupport.AddIndices(outIndices, outVerts.Count, numMajorSegments, numMinorSegments);
     TorusSupport.AddVerts(outVerts, outNormals, majorRadius, numMajorSegments, minorRadius, numMinorSegments);
 }