-
- Notifications
You must be signed in to change notification settings - Fork 241
Open
Labels
Description
All other primitives have a more or less sensible uvmap, Dodecahedron should have one too. Also, it will have to be constructed in some other way, AddFlatTriangleBand is not very convenient in this case.
ProceduralToolkit/Scripts/MeshDraftPrimitives.cs
Lines 118 to 148 in ff54823
| public static MeshDraft Dodecahedron(float radius) | |
| { | |
| const float magicAngle1 = 52.62263590f; | |
| const float magicAngle2 = 10.81231754f; | |
| const float segmentAngle = 72; | |
| float lowerAngle = 0; | |
| float upperAngle = segmentAngle/2; | |
| var lowerCap = new Vector3[5]; | |
| var lowerRing = new Vector3[5]; | |
| var upperCap = new Vector3[5]; | |
| var upperRing = new Vector3[5]; | |
| for (var i = 0; i < 5; i++) | |
| { | |
| lowerCap[i] = Geometry.PointOnSphere(radius, lowerAngle, -magicAngle1); | |
| lowerRing[i] = Geometry.PointOnSphere(radius, lowerAngle, -magicAngle2); | |
| upperCap[i] = Geometry.PointOnSphere(radius, upperAngle, magicAngle1); | |
| upperRing[i] = Geometry.PointOnSphere(radius, upperAngle, magicAngle2); | |
| lowerAngle += segmentAngle; | |
| upperAngle += segmentAngle; | |
| } | |
| var draft = new MeshDraft {name = "Dodecahedron"} | |
| .AddTriangleFan(upperCap, Vector3.up) | |
| .AddFlatTriangleBand(upperRing, upperCap, false) | |
| .AddFlatTriangleBand(lowerRing, upperRing, false) | |
| .AddFlatTriangleBand(lowerCap, lowerRing, false) | |
| .AddTriangleFan(lowerCap, Vector3.down, true); | |
| return draft; | |
| } |