piątek, 13 kwietnia 2012

Koniec (?) projektu z blendera ;)

Oto i sam Pan Raptor ;)
W końcu skończyłem swój projekt na kurs Blendera (jeden z dwóch więksszych) :)

Tekstura sux i jeszcze mógłbym trochę rzeczy dorobić ale mi się już nie chce i czasu też nie mam za bardzo (hmm ale może jeszcze kiedyś mnie najdzie wena - chętnie bym w sumie urozmaicił środowisko.

Po lewej - sam dinozaur, a poniżej - w środowisku naturalnym z lekkim postprocessingiem w Photoshopie (Compositor z Blendera niestety nie dał rady bo nie mogłem pozbyć się białej otoczki z kanału alpha).

Oto i efekt końcowy - welociraptor w środowisku w którym go w ogóle nie powinno być :P

piątek, 6 kwietnia 2012

Projekt: Sphere Marching

Pierwszy test - kolorowanie po z oraz ilości kroków
Na kurs języka C++ piszę sobie projekcik - renderer oparty o ray marching, a dokładniej o technikę sphere tracing i distance fields. Technika to umożliwia m.in. proste renderowanie fraktali i CSG oraz niezwykle tanie do policzenia Ambient Occlusion.

Póki co dopiero zaczynam eksperymenty i muszę powiedzieć, że jest to bardzo rozwijające, tym bardziej, że wszystko piszę od zera sam (łącznie z operacjami wektorowymi) więc dużo się uczę.

Obecnie zaimplementowałem prymitywy: kulę, sześcian oraz torus, wraz z możliwością ich dodawania/usuwania/znajdowania części wspólnej. Mam też liczenie normalnych i teoretyczną obsługę AO oraz eksperymentuje z cieniowaniem Phonga.

Jak dogłębniej zapoznam się z tematem na pewno opiszę tą technikę od zera. Póki co - kilka ujęć WIP:
Oświetlenie Blinn-Phong + małe AO
CSG i normalne



poniedziałek, 2 kwietnia 2012

Blender - projekt

Model Welociraptora WIP
Test trawki :)
Obecnie pracuję nad swoim pierwszym, większym projektem w Blenderze w związku z tym, że mam na studiach taki kurs - postanowiłem wymodelować welociraptora (aczkolwiek w niepoprawnej wersji "klasycznej" - tj. bez piór) w jakiejś ładnej (również niepoprawnej - bo z trawką) scenerii, a docelowo jak starczy mi czasu to będą dwa raptory polujące na hadrozaura (a powinien być protoceratops...).

Wrzucam więc kilka obrazków WIP :)

A to stan (prawie) najnowszy - chcę dodać coś w tle, zrobić lepszy blending nieba i dodać inne szczegóły (drzewka, paprotki etc)



Programowanie na żywo i podróże w czasie

...and when I change the code I change his future!
Ostatnio zainteresował mnie parę kwestii związanych z wytwarzaniem oprogramowania, głównie gier i innych wizualnych aplikacji - a mianowicie możliwość zmieniania kodu w locie i obserwowanie jego wyników w czasie rzeczywistym a także - móc podróżować w czasie by łatwiej było debugować i eksperymentować (back-in-time debugging) - chyba każdy marzył by móc cofnąć wykonanie programu i podejrzeć zawartość zmiennych zanim nastąpił crash.

Jeśli myślisz, że to nierealne to obejrzyj ten niesamowity wykład Bret Victora - coś genialnego! Zastanawiam się czy byłbym w stanie stworzyć coś podobnego, ale nie w JS...

W każdym razie wydaje mi się to niezwykle interesujący kierunek rozwoju oferujący niesamowite możliwości i nie mogę się doczekać by rozwinął się w coś większego i wspanialszego - byłoby to z korzyścią dla wydajności jak i zwiększenia przyjemności z tworzenia.

Polecam zajrzeć również na stronę Breta Victora http://worrydream.com/ (fajne i ciekawe rzeczy!).

Przy okazji, m.in. Google pracuje nad Back-in-Time debugger



piątek, 27 stycznia 2012

2 ciekawe kursy online

Oprócz kursów ze Stanforda (o których tutaj pisałem) pojawiły się dwa - moim zdaniem bardzo ciekawe - kursy online trwające 7 tygodni:

CS 373: PROGRAMMING A ROBOTIC CAR
CS 101: BUILDING A SEARCH ENGINE

Prowadzi je Sebastian Thrun oraz David Evans, i chyba będą darmowe więc warto się zapisać ;)
Zapisy na kurs odbywają się tutaj.

piątek, 20 stycznia 2012

Atraktory, czyli chaos na ekranie

Atraktor De Jong
Dawno temu, na początku 2 klasy technikum zainteresowały mnie atraktory - w bardzo prosty sposób można było uzyskać nietrywialne i ładne chaotyczne kształty. Wystarczyło zaimplementować jakiś wzorek, ustawić punkt początkowy i parametry, a następnie iteracyjnie wyznaczać i rysować punkty :)
Nawet z przyjacielem zrobiliśmy program umożliwiający interakcje z fraktalami i atraktorami (obracanie, przesuwanie, animowanie itd).

Mam zamiar powrócić do tego tematu i podejść do tego z wiedzą, która od tamtej pory nabyłem a tymczasem wrzucam kilka wzorów skopiowane z mojej starej aplikacji ;)

czwartek, 19 stycznia 2012

Bezpośrednia konwersja wielomianu interpolacyjnego w postaci Newtona na postać Beziera

Jednym z zadań jakie miałem do zrobienia wraz z przyjacielem  na pracownię (a potem była na ćwiczeniach) z analizy numerycznej dotyczyła konwersji wielomianu w postaci Newtona na postać Beziera. Ciężko coś znaleźć na ten temat w internecie i trochę ciężko było, dlatego postanowiłem napisać tego posta ;)
Napisaliśmy konwersję bezpośrednią jak i pośrednią (z wykorzystaniem bazy potęgowej) - opiszę w tym poście tylko tą pierwszą. Ładnie sformatowany pdf (który zawiera również kod) można pobrać tutaj.

Opis problematyki

Niech dany będzie wielomian interpolacyjny w postaci Newtona $L_n$, przy czym $b_k$ oznacza stałe współczynniki a $p_k$ iloraz różnicowy. Poszukujemy jego zapisu w postaci Béziera $B_n$. Wprowadźmy oznaczenia:
\begin{align*}
L_n(x) = \sum_{k=0}^{n}b_k p_k(x) \\
B_n(x) = \sum^n_{k=0}c_kB^n_k(x)
\end{align*}
Chcemy by:
\begin{equation} \label{eq:rownosc}
L_n(x) = B_n(x)
\end{equation}
Zatem problem sprowadza się to do problemu dobrania takich stałych $c_k$, by ta równość zachodziła.