Entries for tag "engine", ordered from most recent. Entry count: 39.
# Encje specjalne
Wed
05
Sep 2007
Ciąg dalszy prac nad silnikiem: Napisałem kilka rodzajów encji specjalnych, czyli innych niż model wczytywany z pliku.
Pierwszy z nich to Quad, czyli oteksturowany prostokąt. Pośród ustawień ma liczbę stopni swobody - 0, 1, 2. Te dwa ostatnie tryby czynią z niego Billboard, czyli obiekt zwrócony zawsze w pewnym sensie przodem do kamery.
Drugi to obiekt tekstowy. Ten również ma liczbę stopni swobody, a ponadto alignację, automatyczne dzielenie na wiersze, podkreślenia i wszystko to, co mój zwyczajny tekst 2D. Do tego oczywiście kolor i półprzezroczystość.
Trzeci to pasek - wąski, podłużny, pokryty teksturą (opcjonalnie animowaną) i rysowany tak, żeby rozciągając się wzdłuż ścieżki wyznaczonej przez ciąg punktów wyglądał możliwie dobrze z punktu widzenia kamery. Klasy pochodne implementują różne widoczne poniżej kształty: łamana, elipsa, funkcja parametryczna oraz krzywa (dostępne są krzywe kwadratowe, Beziera i B-spline).
Zostały jeszcze efekty cząsteczkowe i cała część Indoor będzie gotowa :D
Comments | #rendering #productions #engine #gallery Share
# The Final Quest 7 - Co napisałem
Mon
03
Sep 2007
Zapomniałem informować o postępach w pracy, a ta idzie całkiem nieźle. 5.5 tygodnia temu z powodu "zamotania się" kodu postanowiłem napisać TFQ od nowa. Na szczęście nie wszystko - jedynie najwyższą warstwę, sam silnik.
W telegraficznym skrócie: Napisałem od nowa światła, cienie (Shadow Mapping) i materiały. Z nowych rzeczy, pojawił się podział przestrzeni (swobodne drzewo ósemkowe - Octree), pełne cienie dla świateł punktowych (na teksturze sześciennej - Cube) czy materiały półprzezroczyste (wprawdzie nie podlegają oświetleniu, ale grunt że są). Odkomentowałem też postprocessing (efekty dokładnie te same co wcześniej), a także zintegrowałem z tym wszystkim animację szkieletową. Udało się ukończyć serce silnika (czyli to miejsce, gdzie spotykają się i łączą dane od silnika, obiektu, materiału, światła, kamery i inne) zanim kod zbytnio się zamotał. Mam też własny format modeli (QMSH) i map (QMAP). Mój eksporter w Blenderze zapisuje siatkę do tekstowego formatu pośredniego, a specjalne konsolowe narzędzie (Tools) przetwarza ją do formatu docelowego, wyliczając przy tym normalne i tangenty (w tym pomaga mi NvMeshMender).
(Prawa autorskie do modelu kury posiada Krzysiek K. :)
Comments | #rendering #gallery #engine #productions Share
# Problem silnika
Fri
03
Aug 2007
Kiedy człowiek uczy się Direct3D, wszystko wydaje się takie proste. Kiedy chce przejść na wyższy poziom abstrakcji, wszystko się komplikuje. Chciałoby się zamknąć abstrakcyjne pojęcia w eleganckie klasy, ale w końcu ich dane muszą się spotkać w jednym miejscu, aby ustawić (w moim przypadku także skompilować) odpowiedni shader, jego stałe oraz inne ustawienia Direct3D. Te dane pochodzą z różnych miejsc:
Jak to zrealizować w kodzie? U siebie dotychczas miałem tak, że kompletowana była struktura RENDER_DESC. To do obiektu trafiały pozostałe dane, a obiekt dodawał swoje dane i wysyłał strukturę do obiektu klasy ShaderManager. W Sieci znalazłem z kolei taki pomysł, w którym to materiał dostaje dane, uzupełnia je swoimi i wysyła do ustawienia. No i co tu zrobić? :)

# Silnikologia Teoretyczna
Thu
26
Jul 2007
Wieści z pierwszej linii frontu (walki o lepszy silnik): Doszedłem na razie do tego, że do studiowania silnikologii podejść można z trzech stron. Po pierwsze, można czytać teksty. Większość rzeczy i tak pewnie trzeba będzie wymyślić samemu, a z tekstów najwięcej pomogą artykuły i rozdziały książek na temat konkretnych rzeczy (np. renderwowania terenu albo podział przestrzeni), ale udało mi się dowiedzieć o kilku książkach ogólnie na temat. Nauczyłem się rozróżniać, że "3D Game Engine Programming", "3D Game Engine Design" i "3D Game Engine Architecture" to trzy różne ksiażki. Na początek dobre i tyle :)
Po drugie, można analizować kody istniejących silników np. Ogre3D albo Irrlicht. To trudne, ale moża uda się podpatrzeć jakieś ciekawe rozwiązania.
Po trzecie, nieuchronnie trzeba będzie zaprojektować swój silnik. Najlepiej chyba wyjść od ogólnego celu i założeń, potem wypisać funkcje jakie ma posiadać, a potem zastanowić się nad szczegółami wewnętrznymi, czyli jak to zrealizować. Co do tych ostatnich, najtrudniejsze problemy to moim zdaniem:
# The Final Quest 7
Sun
22
Jul 2007
Animacja szkieletowa już (prawie) działa, ale kod się odrobinę zamotał i chyba najwyższy czas wziąć się za studiowanie literatury tudzież inne poważne przygotowania do mojej pracy magisterskiej, a innymi słowy za zaprojektowanie i napisanie siódmego już (i - za każdym razem sobie to obiecuję - ostatniego) podejścia do mojego silnika. Wyjdzie mi pewnie że nie jest tak źle i trzeba tylko trochę zmienić a potem pisać dalej, ale to się okaże.
Mówią, że podstawą jest abstrakcja. Ale jak tu uogólnić rzeczy takie jak efekty postprocessingu typu Heat Haze czy Bloom, kiedy każdy z nich działa w zupełnie inny sposób i wymaga innej obsługi? Jak sortować obiekty wg materiału, tekstury czy shadera, jeśli każdy powinien sam siebie odrysować i ukryć w sobie sposób, w jaki to robi? Jak rozdzielić parametry obiektów, materiałów i świateł, kiedy one i tak muszą się razem spotkać w chwili kompilowania i ustawiania shadera? Na te wszystkie pytania znam jakieś odpowiedzi, ale niezbyt mnie one zadowalają. Macie może jakieś dobre materiały na ten temat?
Comments | #rendering #engine #productions Share
# Blender - ale dół
Sat
14
Jul 2007
Dwa tygodnie nauki Blendera, przypominanie sobie Pythona, pisanie eksportera - tyle roboty na marne. Dziś skończyłem pisać wczytywanie statycznych siatek i wszystko zadziałało OK. Że Blender zwraca jakieś dziwne wektory normalne to zniosłem - policzyłem je sobie sam używając NVMeshMender - razem z wektorami Tangent i Binormal, których Blender w ogóle nie ma, bo nie używa Tangent Space, a Normal Mapping obsługuje tylko w Model Space. Zacząłem więc ochoczo pisać eksport szkieletu o oto co się okazało...
Blender zwraca do skryptu jakieś losowe liczby zamiast pozycji kości! Tego sobie już sam nie wyczaruję. Sprawdziłem to wiele razy, wyizolowałem ten bład i przygotowałem skrypt testowy: HorribleBlenderArmatureBug.py. Testowałem na wersji Blender 2.44, ale kiedy znalazłem na Google ten temat forum, zwątpiłem czy użycie wcześniejszej wersji rozwiąże problem. Najwidoczniej ludzie borykali się z tym już w 2005 roku, a jako odpowiedź można przeczytać że "być może komuś jednak udało się poprawnie wyeksportować animację" oraz żeby spróbować innych programów do modelowania.
Chciałbym żeby to był mój błąd, ale niestety nic na to nie wskazuje. Blender zyskuje więc dla mnie nowy, trzeci przydomek - "Niedorobione Oprogramowanie" (kto pamięta drugi? :)
Comments | #rendering #graphics #scripts #engine Share
# Modelarstwo
Tue
03
Jul 2007
Było już materiałoznawstwo, teraz czas na modelarstwo :) czyli muszę wreszcie wczytać jakiś model (siatkę). Zupełnie zielony w temacie nie jestem, bo wczytywałem już w życiu formaty OBJ, MD2 i 3DS. Animacji szkieletowej, to przyznaję, jeszcze nie robiłem. Teraz chciałbym napisać to porządnie.
Jak radzicie się do tego zabrać? Wczytywać gotowy format (najfajniejszy jest chyba MD5) czy zaprojektować własny? Napisać do własnego formatu konwersję z innych formatów, czy bezpośredni eksport z programu graficznego? Który program do modelowania jest dobry? Znam mniej więcej Blender, niczego komercyjnego nie chciałbym piracić. Milkshape się bawiłem, ale nie przypadł mi do gustu - poza tym skończył mi się okres próbny. Dziś odkryłem darmowy Anim8or - co o nim myślicie? Czekam na komentarze.
# FreeForm Engine
Tue
26
Jun 2007
Adam Cichocki z Gdańska, podobnie jak ja ma przyjemność jako pracę magisterską pisać silnik graficzny. Tyle, że mnie został jeszcze rok, a on kończy studia już teraz. To niejedyna różnica. Otóż nie mając swojej strony WWW czy bloga, nie siedząc dotychczas na IRC-u i ogólnie nie będąc znany (przynajmniej nam na Warsztacie) zjawia się nagle prezentując na forum gamedev.net zrzuty ekranu i filmy ze swojego ukończonego silnika - FreeForm Engine. Silnika naprawdę niesamowitego! Warto pobrać i obejrzeć przygotowany przez niego materiał video (zajmuje 210 MB, trwa 10 minut), żeby na własne oczy przekonać się, że on zaimplementował tam chyba wszystkie najlepsze znane ludzkości efekty :)