All blog entries, ordered from most recent. Entry count: 1198.
# 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
# Zlib i jego interfejs
Tue
28
Aug 2007
Zlib to biblioteka do kompresji danych. Zdawało by się, że jest prosta - jej zasadniczą funkcjonaloność, czyli kompresję albo dekompresję kawałka pamięci wykonuje się używając jednej prostej funkcji. Okazuje się jednak, że poprawne używanie tej funkcji jest nie lada sztuką, a jej objaśnienie wypełnia całkiem niekrótki artykuł (ze względu na różne przypadki szczególne i tak nie do końca). Choć taki a nie inny wygląd tej funkcji ma swoje uzasadnienie w sposobie, w jaki działa, to wg mnie możnaby go podawać jako książkowy przykład jak *nie* należy projektować interfejsu biblioteki.
Jeśli ktoś, zamiast usiłować zrozumieć zasadę działania funkcji inflate i deflate, chce zobaczyć jak obudować te funkcje w wygodne klasy strumieni, może podpatrzeć kod modułu ZlibUtils z mojej biblioteki CommonLib 6.1. Szczegóły:
Comments | #c++ #libraries Share
# Równomierne losowanie punktów z okręgu
Sun
26
Aug 2007
Jak losować punkty należące do okręgu, rozłożone równomiernie? W programowaniu mamy najczęściej dostępny generator liczb o rozkładzie równomiernym. Losowanie punktów z kwadratu jest z jego użyciem napisać prosto. Jak losować punkty z okregu?
Pierwszy pomysł polega na normalnym losowaniu punktów we współrzędnych kartezjańskich z kwadratu opisanego na tym okręgu i odrzucaniu tych, które leżą poza okręgiem. To niefajny pomysł - za dużo niepotrzebnego liczenia.
Drugi pomysł polega na losowaniu punktów we współrzędnych biegunowych - odległości od środka i kąta. To lepsze, ale pojawia się tu jeden kruczek. Losowane w ten sposób punkty mają tendencję do skupiania się w środku, bo dla małych wartości promienia punkty leżą blisko siebie niezależnie, jaki wylosował się kąt - tym bliżej, im mniejszy promień. Jak temu zaradzić?
Prawdopodobieństwo wylosowania danego promienia powinno być nie równomierne, ale propocjonalne do pola koła, które on wyznacza. Ponieważ pole jest zależne od promienia kwadratowo, wystarczy wylosowany promień (w zakresie 0..1, jeszcze przed przeskalowaniem) SPIERWIASTKOWAĆ.
Dla punktów 3D należących do kuli powinno być analogicznie.
Comments | #math #algorithms #rendering Share
# Kupiłem Office 2007
Fri
24
Aug 2007
Kupiłem Office 2007 i was też do tego zachęcam. Dlaczego? Microsoft z okazji jubileuszu 15 lat działalności w Polsce zorganizował promocję. Do kupienia w sklepach komputerowych jest pakiet Office 2007 w wersji polskiej, przeznaczony do użytku niekomercyjnego, który można zainstalować jednocześnie nawet na 3 komputerach. W jego skład wchodzi Word, Excel, PowerPoint i OneNote.
Office 2007 ma - jeśli ktoś jeszcze o tym nie wie - zupełnie nowy, rewolucyjny interfejs użytkownika. Potwierdzam, że jest bardzo wygodny, intuicyjny i użyteczny. Co jeszcze podoba mi się w nowym Office, to rozbudowane motywy do całych dokumentów, nagłówków, tabel i wszelkich elementów. Dzięki nim nawet nie mając talentu graficznego można dobrać ładne kolory, czcionki i inne parametry formatowania.
Warto wydać 200 zł na taki nowy, porządny pakiet biurowy w wersji polskiej. To w końcu mniej, niż kosztuje gra na konsolę. Taką grę przechodzi się w kilkanaście godzin, a Office może służyć całej rodzinie przez długie lata.
Screen z Worda, który sam zrobiłem i w którym chciałem pokazać niektóre nowe możliwości:
Comments | #software #shopping Share
# Ratujmy cenne artykuły
Fri
24
Aug 2007
Nic w Sieci nie jest wieczne - przyznają to nawet ci, dla których cały komputer sprowadza się do okna przeglądarki WWW i najchętniej wszystko robiliby online. Tym bardziej, kiedy z Sieci znika cenny artykuł. Pośród internetowego śmietnika niektóre materiały są bardzo wartościowe. Dwa z nich zachowałem na swoim dysku i zrobiłem ich mirror.
Comments | #literature #teaching #web Share
# Processing
Thu
23
Aug 2007
Processing 1.0 (BETA) - pod tą dziwną nazwą kryje się ciekawa zabawka - prosty język programowania oraz proste IDE, w którym można eksperymentować z grafiką 2D i 3D pisząc efekty, animacje i proste gry. Jest napisane jest w Javie i do Javy kompiluje napisany kod. Sam język też jest podobny do Javy. Pozwala na eksport swojego dzieła do apletu lub aplikacji Java. W porównaniu z Evaldraw wypada moim zdaniem na plus, bo choć wydajność jest dużo gorsza, to całe środowisko jest wygodniejsze w obsłudze, prostsze w użyciu, lepiej dopracowane i lepiej udokumentowane. Oto co udało mi się stworzyć:
Comments | #tools #rendering #java Share
# Stopnie, radiany czy...
Thu
23
Aug 2007
W szkole uczą mierzyć kąt w stopniach. Początkujący programiści kiedy widzą, że funkcje sinus i cosinus przyjmują kąt w radianach, wszędzie piszą coś takiego jak DegToRad(90.0f). Potem orientują się, że wcale nie gorszy jest zapis PI/2.0f i zaczynają używać radianów.
Radiany w przeciwieńswie do stopni mają uzasadnienie matematyczne, ale na dobrą sprawę chyba nie używamy go zbyt często. Dlatego, choć musimy używać radianów, bo na radianach operują funkcje sin, cos, tan czy atan2, to właściwie równie dobrze miara kąta mogłaby być taka, że kąt prosty, półpełny czy pełny wynosiłby 1. Byłoby wygodniej, a niczego by to w programowaniu nie zmieniło.
# BioShock
Tue
21
Aug 2007
Wczoraj ukazało się demo nowej, długo zapowiadanej gry FPP - BioShock. Można je pobrać na przykład stąd: BioShock_PC_Demo.zip. Plik zajmuje 1.85 GB. Po rozpakowaniu trzeba grę zainstalować. Potem jeszcze uaktualnić sterowniki do karty graficznej (u mnie przed aktualizacją gra się wysypywała, aktualizacja pomogła), sprawdzić wymagania sprzętowe (a te są wysokie - dlatego lepiej to zrobić przed ściąganiem pliku :) i już można odpalić demo, by przejść pierwszą mapę.
Naprawdę warto, bo gra jest zrobiona z ogromnym rozmachem, ma klimat (trochę postapokaliptyczny jak w Fallout, ale jednak bardzo oryginalny), ciekawą fabułę, bardzo interesującą mechanikę gry (już w demie można, oprócz strzelania z pistoletu czy karabinu razić prądem i wypuszczać kule ognia) oraz przede wszystkim bardzo, bardzo efektowną grafikę. Wbrew obawom działa całkiem płynnie nawet na jednoprocesorowej maszynie takiej jak moja. Nie gustuję w strzelankach i pełnej wersji zapewne nie kupię, ale demo naprawdę polecam.