I am Lord Opublikowano 2 Grudnia 2013 Udostępnij Opublikowano 2 Grudnia 2013 Importowanie modeli 3D Przedstawiam wam mój sposób na bezbłędne importowanie modeli z blendera do GMSa. Importowany model będzie miał poprawną geometrię, informacje o wektorach normalnych wierzchołków i UV mapę. Potrzebne będzie narzędzie GM Model Fix i oczywiście blender. To nie jest tutorial modelowania więc przygotowałem swoje 3 modele, które sobie ściągniecie tutaj. Są to modele Podłogi, ściany i sufitu. Textury pochodzą z pierwszej części Heretic 1. Blender: - ładujemy plik z którymś modelem .blend - przełączamy się w Object Mode [tab] i jeżeli coś jest zaznaczone to odznaczamy wszystko przyciskiem [A] , teraz [PPM] zaznaczamy model. - przechodzimy do File > Export > Wavefront .obj - i zaznaczamy te opcje: - za pomocą kolejnych ustawień można filpnąć lub zeskalować model. Ważne tutaj jest pole UP, oś którą tutaj ustawiasz powinna zgadzać się z UP vectorem zdefiniowanym w ustawieniach perspektywy w twojej grze. UP vector są to 3 ostatnie parametry funkcji d3d_set_projection( xF, yF, zF, xT, yT, zT, UPx, UPy, UPz ); w moim przykładzie ustawiłem go na 0, 0, 1 więc w blenderze w polu UP ustawiam dodatnią oś Z2. GM Model Fix Za pomocą tego programu przekonwertujesz .obj na GMowy format .d3d - W File otwieramy zapisany z blendera plik .obj - I powinien się pojawić twój model z nałożoną przykładową texturką z tego programu model ściany Moje modele są dobrze zrobione więc się tam pojawią ale gdybyś wczytywał swój i się nie pojawi to są 3 znane mi przyczyny:Model jest zbyt mały Model ma niepoprawne Face Normale. Można je podejrzeć w blenderze w Edit mode w panelu pod przyciskiem [N] ( ustaw skalę bo nie będzie ich widać )Face Normale muszą być skierowane na zewnątrz ( chyba że robisz model na którego patrzy się od wewnątrz np. model jakiegoś pomieszczenia ) Model nie posiada siatki UV. Jak nie wiesz jak ją zrobić to zapoznaj się z tutorialami blendera. Przy skomplikowanych modelach stworzenie dobrej siatki może być czasochłonne i trudne. - zapisujemy plik File > save to GM model, klikamy ALL3. Game Maker Studio - Teraz przechodzimy do GMS i dodajemy w included files nasze modele w formacie .d3d. Oraz w sprites textury które są dostępne w paczce z plikami .blend Ja te sprity ładuję jako kolejne subimage, jeśli maja tą samą rozdzielczość. Przy ładowaniu textur najprawdopodobniej będzie trzeba je flipnąć w pionie. -Trzeba jeszcze stworzyć sobie jakiś wygodny system ładowania zasobów ja przeważnie robię to tak: Tworzę nowy room o nazwie ladowanie, ten room zawsze jest pierwszy i w nim mam obiekt który ładuje zasoby w create:GML /// Wczytywanie zasobw gry globalvar gModel, gModelCnt, gTex, gTexCnt; gModelCnt = 3; // ilosc modeligTexCnt = sprite_get_number(sTex); // ilosc texturgTex[gTexCnt] = 0; // tablica z indexami statycznych texturgModel[gModelCnt] = 0; // tablica z indexami modeli// MODELEfor( i = 0; i < gModelCnt; i++; ) { gModel = d3d_model_create(); // inicjowanie} // Wczytywanie zasobów modeli z plików, nazwa musi się zgadać z tym co masz w include filesd3d_model_load( gModel[0], "Ceil10x10.d3d" );d3d_model_load( gModel[1], "Wall10x10.d3d" );d3d_model_load( gModel[2], "Floor10x10.d3d" );// TEXTURYfor( i = 0; i < gTexCnt; i++; ) { gTex = sprite_get_texture( sTex, i ); // konwersja spritow na textury}room_goto_next(); Gra po załadowaniu modeli i textur do pamięci przejdzie do następnego rooma. Zakładam że masz już działającą kamerę i widok 3D więc nie będę się o tym rozpisywał. Napiszę tylko jak wyświetlić model:GML d3d_model_draw( gModel[0], 0, 0, 0, gTex[0] ); d3d_model_draw( gModel[1], 0, 0, 0, gTex[1] ); d3d_model_draw( gModel[2], 0, 0, 0, gTex[2] ); itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kurano Opublikowano 2 Grudnia 2013 Udostępnij Opublikowano 2 Grudnia 2013 Dobrze się spisałeś, polecam bo warto ;-) Pamiętaj Huder Metal rządzi \m/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
maciek012 Opublikowano 5 Grudnia 2013 Udostępnij Opublikowano 5 Grudnia 2013 @HuderLord, Coś Ci nie wyszło z linkiem do przykładu ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 5 Grudnia 2013 Autor Udostępnij Opublikowano 5 Grudnia 2013 No patrz a się zastanawiałem dlaczego ten plik ma 0 wyświetleń xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 5 Grudnia 2013 Udostępnij Opublikowano 5 Grudnia 2013 Pro, na pewno skorzystam jak będe robił gre 3D. 5/5 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 14 Grudnia 2013 Autor Udostępnij Opublikowano 14 Grudnia 2013 Uwaga, uwaga wczoraj pojawiła się genialna alternatywa: http://gmc.yoyogames.com/index.php?showtopic=603723 Kolo zrobił addon do Blendera który bezpośrednio generuje skrypt dla GMa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się