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.
|
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; |
|
} |
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