Mam problem z rzutem perspektywicznym w grafice 3D.
Mam jakąs bryłę w reprezentacji brzegowej, zbudowaną z trójkątów.
Na razie robię ten widok bez żadnego przycinania niewidocznych rzeczy :P
Mam dwa punkty na ekranie: kamerę i środek obrazu. Kamera - czyli skąd patrzymy, środek obrazu - czyli na co patrzymy.
Na początek robię przekształcenia, aby środek obrazu był w punkcie (0,0,0), a kamera na osi Z po ujemnej stronie.
Sprawdzam i po tych przekształceniach kamera ma faktycznie współrzędne (0,0,z) gdzie z<0.
Mam tę macierz przekształceń i teraz kazdy wierzchołek bryły mnożę przez tą macierz.
Następnie rzutuję perspektywicznie tą bryłę na grafikę 2D.
Czyli:
x *= (Math.abs(kam.z) / (Math.abs(kam.z)+bryla.wierzcholki[i].z));
y *= (Math.abs(kam.z) / (Math.abs(kam.z)+bryla.wierzcholki[i].z));
I rysuję bryłę, gdzie jej wierzchołki mają te współrzędne x,y.
Czy nie powinno być tak, że bryła jest teraz w całości widoczna, tzn. tak jakbysmy patrzyli z kamery?
Bo moja bryła jest w lewym górnym rogu, ponad połowa jest zakryta za panelem. I w dodatku jest strasznie mała.
A może trzeba potem jeszcze zrobić jakieś przekształcenia?
Z góry dziękuję za pomoc.