Zasadniczo mam dwa trójkąty, które wyglądają nieco inaczej (jak na przykład problem z oświetleniem z powodu nieprawidłowych normaliów). Ale nie sądzę, jest to przypadek ...Renderowanie wielokątów w ramce w/normalnych pokazujących dziwne oświetlenie/kolorowanie
Szczegóły
mam prosty sześcian (karton), gdzie każda powierzchnia składa się z 6 wierzchołków stosując bufor wierzchołków (nie używam bufor indeksu w tej chwili).
Oprócz swoich wierzchołków zdefiniowałem normalne wartości dla każdej twarzy.
Wygląda jednak na to, że coś jest nie tak z normalnymi (czego nie sądzę, że jest problem) i/lub oświetleniem.
Każda powierzchnia jest narysowany WebGl.drawArrays pomocą TRIANGLE_STRIP. Obraz przedstawia przednią ścianę sześcianu. Oto jego wierzchołki (zauważ, że pochodzenie jest lewy górny róg przedniej):
0, 1, 0,
0, 0, 0,
1, 0, 0,
1, 0, 0,
1, 1, 0,
0, 1, 0
Oto jego normalne:
0, 0, 1,
0, 0, 1,
0, 0, 1,
0, 0, 1,
0, 0, 1,
0, 0, 1
pytanie
Jakieś pomysły, dlaczego pierwszy trójkąt jest jaśniejszy niż drugi trójkąt?
To najprawdopodobniej nie rozwiąże problemu, ale powinieneś użyć TRIANGLES zamiast TRIANGLE_STRIP, jeśli masz 6 wierzchołków na twarz. Aby użyć TRIANGLE_STRIP potrzebujesz 4 wierzchołki, z twojej tablicy będą to 1., 2., 3. i 5. linia. Spróbuj to naprawić, ponieważ teraz rysujesz 4 trójkąty na twarz zamiast 2. –
Pokaż nam kod odpowiedzialny za rysowanie tablic. Mimo że normalne dane mogą wydawać się poprawne, może się zdarzyć, że dane przekazywane do modułu cieniującego są błędne. Udostępnij trochę więcej kodu, ponieważ mógłbym postawić moje pieniądze na złe, normalne dane. – Elvithari
@Matic. Zastanowię się nad trójkątami. Używam tego, ponieważ chcę, aby moja kostka wyglądała jak ramka krawędziowa przy użyciu LINE_STRIP (bez ukośnych linii). – AlvinfromDiaspar