Üçgen indekslerin bir listesi verildiğinde, bir geometri gölgelendiricisinin bitişiğindeki bir indeks listesine nasıl dönüştürülür?
Burada kesinlikle endekslerden bahsettiğimizi unutmayın - köşeler var, ancak yalnızca endekslere odaklanacağız, çünkü bunları kayan nokta karşılaştırmaları ve epsilonslarına girmek zorunda kalmadan yinelenen köşeleri eşleştirmek için kullanabiliriz - bu iş zaten yapıldı.
Listedeki herhangi bir üçgen için {0, 1}, {1, 2} ve {2, 0} (veya {n, n + 1}, {n + 1, n + 2}, { n + 2, n} isterseniz) kenarlarından oluşturur; endeks listesi iyi biçimlendirilmiştir ve sarım sırasına düzgün bir şekilde uyar.
Böyle bir kenar için, tüm listeyi bu endekslerden ikisini kullanan başka bir üçgen için arayabileceğimizi ve bu üçgenin üçüncü dizininin o kenar için bitişik üçgeni tamamlamak için kullanılacak olan olduğunu biliyorum.
Bitişik listede her orijinal üçgenin 6 indeksle temsil edildiğini, orijinal indekslerin 0, 2, 4 yuvalarına girdiğini biliyorum; bitişikliği tamamlamak için yeni indeksler 1, 3, 5 numaralı yuvalara gider. {0, 1} kenarı için tamamlanacak dizin yuva 1'e, {1, 2} kenarı için tamamlanacak dizin yuva 3'e gider, endeks {2, 1} kenarı için tamamlamak yuva 5'e gider.
Ne denedim?
Kaba zorlamayı denedim ve evet, bu işe yarayacak, ama daha zarif bir yaklaşım peşindeyim.
Eric Lengyel'in kenar listesi oluşturucusunu denedim, ancak (1) orijinal üçgen düzenine saygı duymuyor, (2) sargı düzenine saygı duymuyor, (3) nereye gidileceği çamur kadar net sonra kenar listesini oluşturduktan sonra, ve (4) Ben "üçgenIndex" karşı "faceIndex" gibi bariz göze çarpan hataları olan bir örnek kod şüphesi var - yazar bile kodu derlemek mi, doğrula?
Peki - buradan herhangi bir öneri veya işaretçi var mı?