3dsmaxman Napisano 16 Kwiecień 2007 Napisano 16 Kwiecień 2007 Witam! Piszę właśnie konwerter z tekstowego OBJ do binarnego, aby potem móc szybko i ładnie ładować modele za pomocą funkcji w jakimś napisanym przez siebie DLL-u. Tu rodzą się moje pytania, a mianowicie: 1) Czy muszę wyliczać normalne? Wydaje mi się, że tak, ale wolę się upewnić. 2) W jaki sposób zapisuje się "współrzędne" normalnej?
kru Napisano 16 Kwiecień 2007 Napisano 16 Kwiecień 2007 w pliku obj masz normalne vertexow zazwyczaj (vn) jak chcesz obliczyc do face'a to: w przypadku tri'sa np tak: VERTEX3D Face::CountNormal(VERTEX3D a, VERTEX3D b, VERTEX3D c) { // a---P-->b // | / // | / // | / // Q / // | / // V / // c GLfloat Px,Py,Pz,Qx,Qy,Qz; VERTEX3D N; /// Px = b.x - a.x; Py = b.y - a.y; Pz = b.y - a.z; Qx = c.x - a.x; Qy = c.y - a.y; Qz = c.z - a.z; // N.x = ( ( Qz * Py ) - ( Qy * Pz ) ); N.y = ( ( Qx * Pz ) - ( Qz * Px ) ); N.z = ( ( Qy * Px ) - ( Qx * Py ) ); return N; } gdzie VERTEX3D jest zdefiniowany jako: class VERTEX3D { public: GLfloat x; GLfloat y; GLfloat z; } normalna to wektor wiec nie ma wspolrzednych pozdr ;)
SSn4k3 Napisano 16 Kwiecień 2007 Napisano 16 Kwiecień 2007 OpenGL za Ciebie nie policzy normalnych;) Poszukaj tutaj: http://www.gamedev.pl/articles.php Lub na ich forum. Wątpie zeby znalazl sie az taki koder kozak tutaj:) (poza mną:D) Edit: A jednak jest kozak:) Kru:D
3dsmaxman Napisano 17 Kwiecień 2007 Autor Napisano 17 Kwiecień 2007 @up: A ja mam problem, bo mi exporter Max to Obj nie zapisuje vn (choć kazałem mu). A poza tym zapisuje do pliku tekstowego, które jest niewydajny i trudny do odczytania. Wielkie dzięki za rozwianie mych wątpliwości, Kru !
3dsmaxman Napisano 19 Kwiecień 2007 Autor Napisano 19 Kwiecień 2007 Jeszcze jedno pytanie, choć nie związane z normalnymi (ale też z OpenGL :> ) Otóż: mój konwerter Max->Obj (Max2Obj) przypisuje wierzchołkom tekstury trzy współrzędne. Co oznacza ta trzecia? Bo dla mnie (intuicyjnie) taki wierzchołek powinien posiadać dwie współrzędne (ponieważ mapa do tekstury jest zazwyczaj dwuwymiarowa). Z góry dziękuję za odpowiedź!
Rekomendowane odpowiedzi