Wszystko, co się rusza
Otwieramy material editor i w kanał alpha nałożonego na obiekt materiału wrzucamy shader pt Normal Direction.
Od tej pory wszystkie ścianki, których normalne zwrócone są w kierunku przeciwnym do kamery staną się niewidoczne
In: cinema 4D
15 Aug 2010Potrząsanie kamerą zależne od odległości od obiektu – fuj, jak to brzmi!
Dlatego dzisiejszy tytuł jest po angielskiemu.
Kilka dni temu na cinemacefe ktoś zapytał o Xpresso, które umożliwiło by potrząsanie kamerą w chwili, gdy kamera przelatuje blisko obiektu.
Posiedziałem, podumałem – i jest.
Zostawiam tu na wszelaki słuczaj – a nuż się komuś przyda.
Plik jest kompletnie nieudokumentowany, zawiera czyste działające Xpresso, niemniej dla kogoś, kto ma o XPresso jako-takie pojęcie nie powinien stanowić wielkiej zagadki
Pewnego dnia Adobe Premiere zwariowało. Montaż, który był w zasadzie skończony, który po wielokroć już w wersjach poglądowych renderowałem, nagle, ni z tego ni z owego, przestał się renderować.
Znaczy się renderował – do postaci widocznej poniżej
Kiedy minął mi wkurw, zacząłem kombinować. Może to wina formatu? Wypuszczałem video do *wmv – bo to format natywny dla windy i pójdzie nawet na gołym systemie bez jakichkolwiek kodeków. Co prawda wszystkie dotychczasowe poglądówki renderowałem właśnie do *wmv i renderowały się bezproblemowo ale nie zaszkodzi spróbować z innym formatem. Sprobowałem zatem z nieskompresowanym avi, avi zakodowanym fddShow, h264. Bez skutku.
Postanowiłem zatem wciągnąć kompozycję z premierki do aftera.
Wciągam.
Renderuję.
Oglądam.
No obraz jak żyleta.
O co więc kaman? Najpewniej o to, że Adobe Media Encoder, przez którego Premiere mieli video, jest delikatnie mówiąc, niedorobiony. Szczęśliwie AFX ma swój własny silnik renderujący. Pozostaje mieć nadzieję, że nie zunifikują go za szybko.
A najlepiej wcale.
In: Flash
11 Aug 2010Pracując ostatnio nad flashem, który miał reagować na ruch scrollbarem przeglądarki trafiłem na dwa ciekawe babole.
Pierwszy z nich tyczy się ExternalInterface i osadzania flasha SWFobjectem. Babol ten polega na tym, że ni cholery nie da się przesłać funkcją zmiennej z javascriptu do flasha, jeśli ów flash osadzony jest swfobjectem (co z automatu robi np. Dreamweaver). Jeśli flash będzie osadzony typowym dla flasha sposobem osadzania (czyli generowane spod flasha 300 linijek javascript) komunikacja via ExternalInterface przebiega bezproblemowo. Szukałem po sieci rozwiązania tego problemu, ale ponieważ dedlajn gonił, skończyło się skopiowaniem wygenerowanego przez flasha kodu, który zadziałał.
Drugi babol tyczył się przeglądarki, a konkretnie internet explorera. Okazuje się, że IE źle interpretuje (albo nie interpretuje wcale) javascriptowy obiekt “window”, wskutek czego pobranie wartości suwaka przeglądarki przy pomocy window.scrollY jest w produkcie microsoftu niemożliwe. Obejście tego babola jest dość problematyczne. ponieważ zamiast klasycznego
trzeba napisać
I wtedy działa.
Co ciekawe, cała ta historia nie przeszkadza Microsoftowi na umieszczenie na swoich stronach dokumentacji obiektu window. Czyli co? Dokumentujemy coś, czego nie obsługujemy?
No brawo, chłopaki…
Od czasu, gdy udało mi się wyłączyć w Windowsie natywną obsługę tabletu, nie mogłem na ten system zbyt wielu złych słów powiedzieć.
Do czasu.
Do czasu, gdy nagle ni z tego ni z owego wraz ze startem systemu przestał się ładować sterownik do tabletu…
Próby wyłączania i ponownego podłączania urządzenia nie przynosiły rezultatu. Szukanie pomocy na forum Wacoma również nie przyniosło rezultatu (“inżynierowie wiedzą o problemie i pracują nad rozwiązaniem”). Cofanie automatycznych aktualizacji systemu (które to aktualizacje miały być rzekomo przyczyną problemów ze sterownikami) również nic nie dało.
Rozwiązanie znalazłem dopiero na forum poświęconym windowsowi 7.
Problem ze sterownikiem polega na tym, że się nie ładuje wraz ze startem systemu. Znaczy się, ładuje, tylko mu to ładowanie nie do końca wychodzi. Nie wychodzi, ponieważ jest, nazwijmy rzecz po imieniu, spieprzony. Rozwiązaniem jest powiedzenie windowsowi “jeśli nie uda się załadować sterownika do Wacoma, próbuj do skutku”.
Oto, jak to powiedzieć w języku dla Windowsa zrozumiałym:
Wciąganie plików PSD przez Adobe Premiere to bardzo przydatna opcja. Zmiany w plikach źródłowych są przez “premierkę” aktualizowane automatycznie a nie, jak to ma miejsce w AFX, przy pomocy komendy reload footage. Wszystko cacy, milusio i fajniusio.
Jedno “Ale”.
Jeśli w wciągniętym pliku PSD są jakieś niewidoczne warstwy, nie są one “obcinane” przez premierkę. Innymi słowy to, że czegoś nie widać nie oznacza, że program nie trzyma tego w pamięci. Otóż trzyma. Efekt tego trzymania jest taki, że przy kilkunastu plikach *psd w rozdzielczości fullHD można spodziewać znacznego spowolnienia programu.
Zatem, zanim wciągniesz cokolwiek do premierki, ogól to ze wszystkich niewidocznych [a więc niepotrzebnych] warstw. To się opłaci. Naprawdę.
In: cinema 4D
30 Jun 2010Zupełnie przypadkiem natknąłem się dziś na opcję, za której znajomość dałbym dwa lata temu… nie wiem co, ale na pewno dużo by tego było ;]
Swego czasu pracowałem trochę z realflow’em. RF na to do siebie, że generuje siatki złożone z milionów wielokątów – standardowa siatka ma 4-6 milionów a bywa że i więcej. Manipulowanie takim obiektem w viewporcie to dla OpenGL’a zabójstwo; odświeżanie viewportu odbywa się z częstotliwością jednej, dwóch klatek na sekundę – generalnie mordęga jest z tym straszna. Aby dało się w miarę normalnie pracować, traktuje się taki obiekt deformerem typu polygon reduction, deformer ten ma jednak tą wadę, że działa tylko na tym obiekcie, do którego został przypisany.
Aby zmienić globalny level of detail wchodzimy w ustawienia dokumentu (ctrl+d) i tam zmieniamy pozycję… Level of Detail. Wprowadzone tam wartości zmienią jakość wyświetlania wszystkich obiektów na scenie. Co ciekawe, jakość wyświetlania można podbić powyżej 100%, wskutek czego obiekty o małym poziomie detalu wyświetlane będą w wyższej rozdzielczości
Zmieniając Level of Detail warto pamiętać o jednym – zmiany mają miejsce tylko w viewporcie. W trakcie renderingu zostaną użyte wartości z zakładki render settings.
In: cinema 4D
15 Jun 2010Załóżmy że mamy kulę z aktywnym kanałem reflection umieszczoną na podłodze z aktywnym kanałem reflection i obiekt typu sky z teksturą, która w kanale reflection ma się odbijać. Załóżmy, że chcemy aby podłoga pokazywała tylko odbicie kuli, zaś w kuli odbijało się zarówno niebo, jak i podłoga.
Najprościej taki efekt osiągnąć przy pomocy nadanego niebu compositing tagowi, w którego zakładce exclude umieszczamy wszystkie obiekty, które mają być “niewidoczne” dla nieba. Dzięki temu w podłodze będzie odbijała się nasza kula, zaś w kuli zobaczymy zarówno odbicie nieba, jak i podłogi.
Dawno temu pisałem o ”bladym” wideo, które wcale nie było blade, tylko odtwarzający je player quicktime “specyficznie” je odtwarzał. Dziś okazało się, że quicktime nie BYŁ “specyficzny”, ale nadal JEST.
O tym, dlaczego QT jest nic nie warty, wpis dzisiejszy wam opowie.
Wypuściłem sobie render. Anty aliasing na full, Global Illumination na full, czas rendrowania również na full. Poczekałem sobie.
Odpalam film, oglądam i widzę, że w pewnych momentach, pomimo maksymalnego antyalisingu tekstura jest zwyczajnie “zębata”. Zaczynam więc zmieniać ustawienia, renderować ponownie, szukać odpowiedzi w internecie, renderować ponownie, zmieniać samplowanie tekstur, renderować ponownie…
Narenderowałem się co nie miara, aż przyszło mi do głowy wczytać film do AFX i wypuscić jako *wmv. Jakież było moje zdziwienie, gdy okazało się, że już wewnątrz AFX film mój stracił wszystkie “zęby”! Wyplułem to do wmv, h264, avi i za każdym razem render był gładki jak dupka niemowlęcia
Uzbrojony w doświadczenie postanowiłem odpalić wszystkie “zębate” rendery w playerach innych, niż quicktime. Co się okazało? Okazało się, że film był od samego początku miód malina gładziusieńki, tylko odpalałem go w lipnym odtwarzaczu od apple! Oczywiście, można na to spojrzeć z tej strony, że gdyby nie lipny quicktime, długo bym się pewnie nie dowiedział tego, czego dowiedziałem się szukając rozwiązania zębatego problemu. Koniec końców prawda jest jednak taka, że QuickTime po raz kolejny okazał się psu na budę.
“The stuff, that just works”, taka ich mać…
In: cinema 4D
10 Apr 2010W trakcie prac nad ostatnią animacją potknąłem się o problem, który napsuł mi sporo krwi. W zasadzie nie był to tyle problem, ile moja niewiedza a w zasadzie zapominalskość; koniec końców finał był taki, że spędziłem nad tematem o kilka godzin więcej, niż planowałem.
Założenie było proste – wyłaniający się z ciemności kapsel carlsberg’a.
Pozornie banalne – do czasu, gdy oświetlałem scenę zwykłymi światłami i mapami HDRI wrzuconymi w kanał illumination. Sprawy zaczęły się komplikować, gdy w grę weszło Global Illumination. Rychło okazało się, że NIE DA SIĘ animować GI, jako takiego. GI ustawia się raz i wedle tych ustawień program renderuje scenę. Człowiek nie jest jednak z tych, co się od razu poddają – więc zacząłem kombinować, że skoro nie da się animować GI jako takiego, to może da się animować właściwości materiału wrzuconego w kanał luminance. Da się? Pewnie że da! Szybciorem skrobnąłem malutkie eXpresso, którym kontrolowałem wszystkie istotne materiały w scenie i zadowolony renderuję.
Jakież było moje zdziwienie, kiedy finalny render wyszedł dużo ciemniejszy od renderów testowych. Zaczęło się kombinowanie: a może ustawienia kanału color, a może tryby mieszania, a może brightness, a może światła. Kawał czasu tak kombinowałem aż się w końcu zreflektowałem, że używam algorytmu camera animation do sceny, której animowana jest nie tylko kamera, ale i źródła światła. Zmieniłem algorytm GI na IR+QMC(full animation) i animacja policzyła się jak bajka. Liczyła się, co prawda, trzykrotnie dłużej, ale wyliczyła się dobrze
Pierwszy filmik renderowany jest algorytmem camera animation. Nie widać na nim w zasadzie nic, poza frontem kapsla. Drugi filmik, renderowany przy pomocy algorytmu IR+QMC(full animation) pozwala dostrzec fragmenty “korony” kapsla oraz kawałek zielonego tła, na którym się znajduje.
Kompresja może zjadać nieco detali, ale w docelowym renderze różnica jest ZAJEBISTA.
Z całej tej historii morał płynie taki:
- warto uczyć się eXpresso – bo dzięki niemu można animować X parametrów za pomocą jednego suwaka
- Do scen z animowanymi światłami należy używać algorytmu IR+QMC (full animation). Komputera nie da się oszukać. “Cwaniakowanie” skończy się niepotrzebnymi godzinami spędzonymi na jałowych renderach. Czas ten lepiej poświęcić na porządne policzenie sceny. Pozornie trwa to dłużej, w ostatecznym rozrachunku okaże się, że jednak krócej.