Я начинал с захардкоженых координат икозахедрона, и потом делил грани пополам, вот чтоб делить грани я юзал Hashtable чтоб хранить связи. типа Hashtable<Vector3,prefab>
на рисунке сверху сгенеренные сферы, перекрывшие друг друга.
Вобщем просто это первый в жизни результат на unity поэтому и похвастался =)
имплементация IEqualityCompare была вобщемто простая.
Используется csharp
using System;
using System.Collections;
public class RealtionHashComparer:IEqualityComparer
{
public new bool Equals (object x, object y)
{
Relation xx=(Relation)x;
Relation yy=(Relation)y;
return ((xx.pointA==yy.pointA && xx.pointB==yy.pointB) || (xx.pointA==yy.pointB && xx.pointB==yy.pointA));
}
public int GetHashCode (object obj)
{
return ((Relation)obj).pointA.GetHashCode()+((Relation)obj).pointB.GetHashCode();
}
}