April 2009

Uwaga! Informacje na tej stronie mają ponad 3 lata. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

21:25
Thu
23
Apr 2009

Krzywe i gówienko na kole

Matematycy mają mądre nazwy na różnego rodzaju krzywe. Czytałem sobie o nich ostatnio na Wikipedii. Nie chodzi mi tu o dobrze znane programistom grafiki krzywe Beziera czy B-spline.

Na przykład taka krzywa Lissajous powstaje przez wykreślenie w 2D albo 3D śladu ruchu punktu wg funkcji sinus, z określoną amplitudą, okresem i fazą w każdej osi. Dawno temu napisałem wygaszacz ekranu rysujący coś takiego - ProgrameX Linear Screensaver - nie wiedząc nawet, że to się tak nazywa.

Przykładowy zrzut ekranu

Z kolei Roulette to ogólna klasa krzywych wykreślanych przez punkt przyczepiony do jakiejś figury, która "toczy się" wzdłuż innej figury. Na przykład jeśli okrąg toczy się po prostej, to jakiś punkt skojarzony z tym okręgiem tworzy Trochoid. Jeśli ten punkt leży na tym okręgu, to jest przypadek szczególny - cykloida (Cycloid). Skojarzenie nazwy z cyklistami zapewne nie jest przypadkowe - krzywa przypomina kształt, jaki zakreśla w powietrzu gówienko przylepione do koła jadącego roweru :)


Źródło: Wikipedia

Jeśli okrąg porusza się po wewnętrznej stronie większego okręgu, powstaje hipotrochoida (Hypotrochoid). Jej szczególnym przypadkiem (punkt leży na okręgu) jest hipocykloida (Hypocycloid), a z kolei jej przykładem jest czteroramienna gwiazdka - Astroid. Podobnie, okrąg poruszający się po zewnętrznej stronie większego okręgu tworzy epitrochoidę (Epitrochoid), której szczególnym przypadkiem (punkt na okręgu) jest epicykloida (Epicycloid), której przykładem z kolei może być przypominająca kształtem serce kardioida (Cardioid).


Źródło: Wikipedia

Comments (0) | Tags: math | Author: Adam Sawicki | Share

22:06
Tue
21
Apr 2009

Limit 2 GB pamięci

Jest takie ograniczenie, które wraz z postępem zaczyna coraz bardziej doskwierać. Otóż teoretycznie pisząc 32-bitowy kod mamy 32-bitowe adresy, czyli możemy zaadresować do 4 GB pamięci RAM. W praktyce jest gorzej. 32-bitowy proces w 32-bitowym Windowsie ma do dyspozycji tylko 2 GB pamięci, co za pomocą specjalnych zabiegów w starcie systemu i w kompilowaniu programu można zwiększyć do 3 GB. Więcej informacji tutaj: [1], [2].

Oprócz samej ilości pamięci jest jeszcze inny problem. O ile mi wiadomo, to kiedy program przetwarza gigabajty danych wykonując miliony alokacji może się zdarzyć tak, że mimo nie zajmowania dużo pamięci alokacja dużego bloku (np. 16 MB) może się nie udać, bo z powodu fragmentacji zabrakło tak dużego wolnego bloku w 2-gigabajtowej przestrzeni adresowej.

Comments (0) | Tags: windows | Author: Adam Sawicki | Share

23:55
Tue
14
Apr 2009

GDC 2009 i Breakpoint 2009

Wróciłem z urlopu. Chciałem życzyć wszystkim wesołych Świąt Wielkanocnych, ale chyba już za późno :) Poza tym jutro kończę 25 lat. Życzeń mi nie składajcie - to dla mnie smutny dzień, jestem już taki stary...

Wielu blogerów wrzuca luźne linki do ciekawych materiałów, więc ja też czasem będę tak robił. Szczególnie, że ostatnio miały miejsce dwa ważne wydarzenia. Pierwsze to GDC 2009 - Game Developers Conference (konferencja twórców gier w USA). Prezentacje z wygłoszonych referatów można znaleźć m.in. na: gdconf.com (rozwiń "GDC 2009"), nvidia.com, khronos.org, geeks3d.com, intel.com.

Drugie ciekawe wydarzenie to Breakpoint 2009 - impreza demoscenowa, która tradycyjnie odbywa się w Niemeczech w okresie Wielkanocy. Dema i inne produkcje pokazane na imprezie można już pobrać ze strony breakpoint.untergrund.net lub wygodniej, z anonimowego ftp.untergrund.net.

Comments (0) | Tags: demoscene events | Author: Adam Sawicki | Share

20:30
Sun
05
Apr 2009

Renderowanie kryształka i AntTweakBar

Klejnoty, kryształy i wszelkie błyskotki to bardzo ładne obiekty, więc ciekawie jest próbować je wyrenderować :) Dawno temu przeczytałem artykuł "A Simple Method for Rendering Gemstones" (Thorsten Scheuermann, książka Game Programming Gems, tom 5). Potem wróciłem do tego tematu i trafiłem na artykuł Graphics Gems Revisited (Stephane Guy, Cyril Soler). Artykuł jest trudny i oparty na modelu fizycznym. Przy okazji z Wikipedii dowiedziałem się, że brylant to nie po prostu oszlifowany diament, ale w jubilerstwie istnieje cała obszerna sztuka nadawaniu klejnotom takiego szlifu, aby otrzymać jak najlepszą brylancję.

Jakiś czas temu spróbowałem opracować swoją, prostą metodę renderowania kryształka. Metoda opiera się na teksturze sześciennej, do której na początku jeden raz renderuję głębokość geometrii kryształka z punktu widzenia jego środka. Potem dzięki niej, podczas właściwego renderowania, w pixel shaderze liczę (bardzo) przybliżone odbicia promienia światła wewnątrz modelu, a na podstawie kąta i odległości tego odbicia obliczam końcowy kolor.

Gemstone Rendering

Ale nie tylko o tym chcę dzisiaj napisać. Chciałbym polecić wszystkim bibliotekę AntTweakBar. O jej istnieniu dowiedziałem się z wykładu Koshmaara na tegorocznej konferencji IGK'6-2009. Jest darmowa, banalnie prosta w użyciu, współpracuje z DirectX i OpenGL, a jej funkcja to zapewnienie arkusza właściwości (property grid) wewnątrz gry. Umożliwia edycję różnego typu danych, od bool, int, float, string, aż po enum, wektor i kwaternion. Napisanie samemu czegoś takiego to by był ogrom pracy. Przygotowałem mały filmik:

Modele kryształów pochodzą ze strony 3D Lapidary. Przy okazji do listy formatów modeli, które zdarzyło mi się w życiu wczytywać, dołączył DXF :)

Comments (1) | Tags: literature rendering libraries gui | Author: Adam Sawicki | Share

16:03
Sat
04
Apr 2009

IGK 2009 #5 - Nasza gra z Compo

Podczas konferencji IGK-6'2009, tradycyjnie już, odbył się konkurs Compo. Zadaniem uczestników w 3-4 osobowych drużynach było w ciągu 8 godzin napisać grę na zadany temat. W tym roku tematem, ku mojej radości, była "gra psychodeliczna". Wyniki są już dostępne na stronie konferencji, a archiwum z pracami na stronie Compo.

Nasza drużyna (Rzeźnicy Inc. w składzie: ayufan, gemGreg, ja, Krzysiek K.) zajęła pierwsze miejsce. Naszą grę - Psycho - udostępniłem osobno do pobrania z mojej strony. Krzysiek K. pracuje teraz nad nową, poprawioną i rozszerzoną wersją.

Psycho

Comments (0) | Tags: warsztat productions igk compo | Author: Adam Sawicki | Share

STAT NO AD [Stat] [Admin] [STAT NO AD] [pub] [Mirror] Copyright © 2004-2017 Adam Sawicki
Copyright © 2004-2017 Adam Sawicki