Napisano 8 Sierpie艅 200717 l Witam, chcialem dowiedziec sie czy zna ktos jakis tutorial w ktorym wyt艂umaczone bedzie wczytanie oraz uzycie pliku obj lub jakiegos innego (wraz ze szkieletem i wsp贸艂rz臋dnymi tekstur) dla OpenGL. Je偶eli znacie jakis tutorial wklejcie linka bo niestety teraz mam dosc a wszystko co znajduje albo jest nieaktualne albo w conajmniej dziwnych j臋zykach.
Napisano 9 Sierpie艅 200717 l nie wiem czy o to ci chodzi ale tu jest plugin dla max'a 8 (jest tez dla innych wersji) ktory umozliwia export obiektu jako kod jezyka C 聽 http://www.maxplugins.de/r6_files/mcgrath/EsmexportR6.zip
Napisano 11 Maj 200817 l zacytuj臋 przedpremierowy fragment mojej pracy in偶ynierskiej: 聽 Przede wszystkim s膮 nam potrzebne dwa pliki glm.h, glm.cpp, kt贸re nale偶y do艂膮czy膰 do naszego projektu. W plikach tych s膮 zawarte funkcje kt贸re przetwarzaj膮 informacje zawarte w obiekcie OBJ. W pliku OpenGla trzeba wklei膰 nast臋puj膮c膮 funkcj臋: void LoadModel (char *objmodel){ glFrontFace(GL_CCW); // spos贸b wy艣wietlania 艣cianek GL_CW lub GL_CCW if (!objmodel_ptr) { objmodel_ptr = glmReadOBJ(objmodel); if (!objmodel_ptr) exit(0); glmUnitize(objmodel_ptr); glmFacetNormals(objmodel_ptr); glmVertexNormals(objmodel_ptr, 90.0); } glmDraw(objmodel_ptr , GLM_SMOOTH | GLM_MATERIAL | GLM_TEXTURE ); /* w zale偶no艣ci jaki spos贸b mapowania tekstur wybieramy, komentujemy t臋 lini臋 albo nast臋pn膮 */ // glmLinearTexture(objmodel_ptr); glmSpheremapTexture(objmodel_ptr); } Poprzez wywo艂anie funkcji w postaci: LoadModel("obj/NazwaObiektu.obj"); wy艣wietlamy model. Funkcja ta nie powinna by膰 wywo艂ywana w funkcji Display w g艂贸wnym programie. W zmiennych globalnych trzeba jeszcze doda膰: GLMmodel* objmodel_ptr; Te dwa pliki biblioteczne zawieraj膮 r贸wnie偶 funkcj臋 czytaj膮ca i wy艣wietlaj膮ca bitmap臋 w formacie PPM. Wywo艂uje si臋 ja w taki sposob: Texture = glmReadPPM("tex/NazwaTekstury.ppm", &width, &height); 聽 Wi臋cej mo偶na przeczyta膰 na stronie i z tej strony z jakiego艣 przyk艂adu scignij sobie glm.h, glm.cpp: http://www.xmission.com/~nate/
Napisano 18 Stycze艅 200916 l Cze艣膰 聽 Mam ma艂y problem.... jak wpisuj臋 linijk臋 kodu: 聽 Texture = glmReadPPM("Data/Tekstury/Drewno.ppm", &width, &height); 聽 to mi wyrzuca, 偶e funkcja niezadeklarowana.... co ja mam z tym zrobi膰, jak i gdzie j膮 zadeklarowa膰?? 聽 z g贸ry dzi臋kuj臋 za pomoc
Napisano 18 Stycze艅 200916 l Prawdopodobnie musisz zainkludowac plik naglowkowy z daklaracja tej funkcji (glm.h).
Napisano 18 Stycze艅 200916 l Dzi臋ki ju偶 znalaz艂am funkcja nazywa si臋 GLM_TEXTURE. Teraz mam problem z szeroko艣ci膮 i wysoko艣ci膮... W pliku dlm.cpp jest co艣 takiego: glmReadPPM(char* filename, int* width, int* height) ale jak wywo艂uj臋 funkcj臋 ta jak by艂o wy偶ej, tzn. GLM_TEXTURE = glmReadPPM("Data/Tekstury/Drewno.ppm", &width, &height); to si臋 czepia, 偶e width i height s膮 niezadeklarowane... Czy musz臋 co艣 doda膰 do zmiennych globalnych?? Je艣li tak to co?? Z g贸ry dzi臋kuj臋 za pomoc
Napisano 18 Stycze艅 200916 l Zakladam ze masz je gdzies zadeklarowane. Jestes pewien ze width i height sa widoczne w miejscu wywolania funkcji?
Napisano 19 Stycze艅 200916 l Tak, trzeba zalinkowa膰 plik glm.h aby poszlo. Zmienne width i height trzeba poda膰 w zmiennych globalnych jako: 聽 static GLint width , height; 聽 warto艣ci tych zmiennych pobierane s膮 z zalinkowanych plik贸w *.ppm 聽 lepiej dla pewno艣ci zerknij sobie na kod 藕rodlowy: http://aseweryn.nazwa.pl/praca_inz/kod_zrodlowy/zj_Fresnela.rar 聽 rozzipuj to i zerkinj sobie na plik amain_f.cpp 聽 Ten myk z czytaniem pliku .obj zostal wykorzystany do prezentacji shaderow w GLSL na wlasnor臋cznie wykonanych obiektach. Aha, tutaj zostala wykorzystana tekstura sze艣cienna (mapowanie srodowiska). Przy zwyk艂ych teksturach te偶 powinno p贸j艣膰.
Napisano 21 Stycze艅 200916 l Wielkie dzi臋ki!! Mam jeszcze pytanie jak wyeksportowa膰 plik ppm z Max'a.... Ja ma tylko mtl.... a jak si臋 nie da to, w funkcji wczytuj膮cej mtl jast tak: glmReadMTL(GLMmodel* model, char* name) to co ja mam zrobi膰 z tym model ?? z g贸ry dzi臋kuj臋
Napisano 21 Stycze艅 200916 l Ja pliki .ppm zapisywa艂am ze zwyk艂ych bitmap w GIMPie. Obiekt eksportowa艂am bez tekstur z Lightwave3D, wi臋 Ci z MAXem nie pomog臋. 聽 Niestety w tym sposobie 艂adowania modeli mozna tylko mapowa膰 planarnie albo sferycznie i nie ma UV, zreszt膮 inne mapowanie nie by艂o mi potrzebne. 聽 I taka ma艂a dygresja, mo偶e nie zwi膮zana z tematem w膮tku. Kiedy艣 dawno temu by艂a przegl膮darka do plik贸w 3D i chyba sie nazywa艂a 3DEksplorer, mog艂a ona zapisywa膰 obiekty jako kod C++/OpenGL w postaci klasy. Nie uda艂o mi si臋 jednak obczai膰 jak to za艂adowa膰 do OpenGLa.
Napisano 22 Stycze艅 200916 l Ta przegladarka nazywa sie dokladnie - Deep Exploration i exportuje do kodu c++ praktycznie wszystkie informacje zwiazane z modelem - liste vertexow, normalne, indexy, materialy. Wygenerowany kod posiada gotowa funkcje renderujaca listy opengl i wystarczy miec zainicjowany kontekst opengla zeby go uzyc.
Napisano 8 Luty 200916 l Kolejne pytanie: Dlaczego napisana przeze mnie aplikacja si臋 zamyka?? -.-' Poradzi艂am sobie z tymi teksturami i przy kompilacji nie wyskakuj膮 ju偶 偶adne b艂臋dy, ale kiedy uruchamiam aplikacj臋 to si臋 od razu zamyka... Domy艣lam si臋, 偶e to ma zwi膮zek z tymi teksturami, 偶e si臋 nie 艂aduj膮 i nast臋puje wyj艣cie, ale nie wiem dlaczego... Jak kto艣 ma jakie艣 rady to bardzo prosz臋 o pomoc. Z g贸ry dzi臋kuj臋!!
Napisano 8 Luty 200916 l Dodaj do kodu messageboxa w miejscach sprawdzania bledow albo zapodaj kawalek kodu odpowiedzialnego za zdarzenia.
Napisano 9 Luty 200916 l Je艣li pisa艂e艣 w Dev-C++ to czasami pomaga komenda na ko艅cu programu: 聽 getchar();
Napisano 9 Luty 200916 l Mam jeszcze jedno pytanie: Jak 艂aduje modele bez tekstur to one s膮 jakby p艂askie... Nie wida膰 "g艂臋boko艣ci".... Czy wiecie mo偶e dlaczego??
Napisano 9 Luty 200916 l Pewnie dlatego ze nie wlaczyles swiatla. Po jego wlaczeniu dodatkowo musisz przekazac normalne dla kazdego face`a. Edytowane 10 Luty 200916 l przez Ziper
Napisano 10 Luty 200916 l W tej funkcji masz ju偶 znormalizowany obiekt: void LoadModel (char *objmodel){ glFrontFace(GL_CCW); // spos贸b wy艣wietlania 艣cianek GL_CW lub GL_CCW if (!objmodel_ptr) { objmodel_ptr = glmReadOBJ(objmodel); if (!objmodel_ptr) exit(0); glmUnitize(objmodel_ptr); glmFacetNormals(objmodel_ptr); // tutaj normalne face贸w glmVertexNormals(objmodel_ptr, 90.0); // normalne wierzcho艂k贸w } glmDraw(objmodel_ptr , GLM_SMOOTH | GLM_MATERIAL ); } 聽 Tak jak m贸j przedm贸wca powiem, 偶e powiniene艣 tylko 艣wiat艂a w艂aczy膰, w odpowiednim miejscu instrukcj膮: 聽 glEnable(GL_LIGHTING); // w艂膮czenie o艣wietlenia glEnable(GL_LIGHT0); // w艂膮czenie konkretnego 艣wiat艂a (z tego co pami臋tam z wyk艂ad贸w to chyba do 贸艣miu jednocze艣nie mo偶na) 聽 Mo偶e masz normalne odwr贸cone do wewn膮trz obiektu i zamiast glFrontFace(GL_CCW); powinno by膰 glFrontFace(GL_CW);. Ale w takim wypadku zobaczysz wn臋trze obiektu, wi臋c jest ma艂o prawdopodobne, 偶e to jest przyczyn膮. 聽 Obstawiam swiat艂a ;)
Napisano 22 Luty 200916 l Wiecie mo偶e dlaczego jak 艂aduj臋 pliki obj to mnie si臋 program wy艂膮cza?? W innej aplikacji mi dzia艂a, a w drugiej nie chce?? Wszystko robi臋 tak samo z t膮 tylko r贸偶nic膮, 偶e w tym co si臋 wy艂膮cza 艂aduj臋 pliki bmp, ale nie na te obj tylko na zwyk艂e sze艣ciany?
Napisano 24 Luty 200916 l Niestety dalej ci nie pomog臋, mo偶e popytaj wi臋kszych "wymiataczy" w programowaniu.
Je艣li chcesz doda膰 odpowied藕, zaloguj si臋 lub zarejestruj nowe konto