Aktualności Forum Giełda Sprzęt Programy Strefa Gier Graffiti Publicystyka Teleport
  • Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

12.09.2016 11:32, autor: Piotr "jubi" Zgodziński
http://www.zgodzinski.com
odsłon: 2606, wersja PDF

30 lat temu raytracing, czyli tworzenie realistycznych trójwymiarowych obrazów za pomocą komputera, był domeną wielkich maszyn typu mainframe i nikomu nie śniło się, że takie dzieła będzie można stworzyć w domu - wymagało to bowiem dostępu do dużej mocy obliczeniowej i potężnej palety kolorów. Te dwie cechy wśród komputerów domowych upowszechniła dopiero Amiga i po 1985 roku kolejne programy do raytracingu zaczęły pojawiać się jak grzyby po deszczu. Dziś moc i ilość pamięci ówczesnych Amig może wydawać się śmiesznie mała, ale trzeba pamiętać, że wielu wtedy właśnie, dzięki Amidze, stawiało pierwsze kroki w grafice 3D, czekając godzinami na koniec skomplikowanych obliczeń, których wynikiem był obrazek o wielkości znaczka pocztowego.

Pomysł na ten tekst wpadł mi do głowy, gdy napisał do mnie Kuba "wino" Winnicki, jeden z organizatorów scenowego party Decrunch. Miał się tam odbyć konkurs na grafikę 3D z nietypowymi wymaganiami - wszystko musiało być wykonane na A500 z 1 MB RAM! Z jednej strony drakońskie ograniczenie, ale z drugiej ciekawe wyzwanie. Postanowiłem spróbować.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Rok 1987 i Sculpt 3D

Ograniczenia, o których mowa wyżej, to dla mnie nie pierwszyzna - sam zaczynałem na A500 z 1 MB i to na niej powstały pierwsze moje renderingi. Chciałbym wam trochę przybliżyć programy, które da się uruchomić na takim konfigu i pokazać co da się z nich wycisnąć. Pierwszy program tego typu, na jaki się natknąłem w tamtych czasach, to Sculpt 3D z 1987 roku. Wszystko wskazuje na to, że był to pierwszy program do raytracingu na Amigę a także na komputery domowe w ogóle.

Jego autorem był Eric Graham - ten sam który w 1986 roku stworzył słynną animację "Juggler", a użył do tego własnoręcznie napisanego raytracera o nazwie "ssg". Animacja ta stała się tak popularna wśród użytkowników Amigi, że Eric postanowił dorobić do swojego programu interfejs użytkownika i rok później wydany został okienkowy Sculpt 3D, który mógł obsługiwać praktycznie każdy, za pomocą myszki, bez wpisywania skomplikowanych komend w linii poleceń. Ciekawą cechą tego programu jest to, że wykorzystuje systemowe amigowe okienka, łącznie z gadgetami do ich przesuwania i skalowania. Wiele późniejszych programów ma swoje autorskie GUI, które w niczym nie przypomina amigowego standardu, dopiero wiele lat później programy typu Real 3D v2 czy Maxon Cinema 4D powrócą do standardowych amigowych ekranów i okienek. Najlepszym przykładem tego anty-systemowego trendu jest LightWave3D, którego interfejs w niczym nie przypomina amigowych standardów.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAMProgram dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Sculpt 3D w pierwszej wersji jest dość ascetyczny, ale dzięki temu ma niewielkie wymagania sprzętowe. Da się go uruchomić nawet z 0.5 MB pamięci, chociaż w takiej konfiguracji obiekty mogą mieć co najwyżej kilkanaście ścianek. Po dołożeniu kolejnego 0.5 MB można już całkiem nieźle pokombinować i rozwinąć skrzydła. Co konkretnie można wtedy zrobić - o tym w dalszej części artykułu.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAMProgram dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM
Przykładowa scena dostarczana wraz z programem Sculpt 3D v1

Videoscape 3D

Kolejny program, z którym szalałem na A500 to Videoscape 3D. Napisał go Allen Hastings, czyli autor późniejszego LightWave3D. Renderował bardzo szybko, ale nie oferował pełnego raytracingu a tylko, jak pisano wtedy w reklamach, "3-D Solid Graphics", czyli jednolicie wypełnione płaszczyzny, bez cieniowania, odbić, refleksów światła itd. Dlatego dziś nie zaliczyłbym go do programów do raytracingu i nie będę go opisywać. Tym bardziej, że jego historię opowiedziałem przy okazji histori powstania Lightwave3D.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Poza tym Videoscape 3D ma tylko GUI do renderera i nie posiada edytora obiektów - trzeba je tworzyć na piechotę w plikach tekstowych, dlatego nie jest to idealny start dla ludzi, którzy chcieliby stworzyć grafikę wygodnie i za pomocą myszki. W zasadzie jedyną jego zaletą jest to, że faktycznie uruchomi się przy 1 MB RAM i pozwoli szybko coś wyrenderować. Dość wcześnie porzuciłem zabawę z nim na rzecz innego softu, który stał się niemal standardem na Amigach o słabej konfiguracji, czyli Reala 3D v1.4.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAMProgram dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM
Przykładowy obiekt dołączany do Videoscape 3D - Red Lotus.

Real 3D v1.4

Ten program to prawdopodobnie najlepsze rozwiązanie dla ludzi chcących się pobawić w raytracing na A500 z 1 MB RAM. O kilka lat młodszy niż poprzednio wymienione, oferuje pełny raytracing, obiekty mogą być teksturowane, jednocześnie bardzo dba o małą zajętość pamięci. W menu jest nawet opcja "Get memory", która powoduje zamknięcie ekranu Workbencha i ustawienie niskiej ilości kolorów na ekranie edycji, dzięki czemu uzyskujemy imponujące 400 kB wolnej pamięci, co jak na program o takich możliwościach jest świetnym wynikiem. Real 3D v1.4 na wiele lat stał się standardem wśród amigowych Kowalskich, używano go na A500 i na gołej A1200 z 2 MB RAM, grafiki nim wygenerowane były często spotykane w demach i w konkursach organizowanych przez amigową prasę. Niewątpliwą zaletą było też to, że do zabawy wystarczała jedna stacja dysków.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Dziś jednak patrzę na ten program nieco inaczej i z kilku względów nie zdecydowałem się na skorzystanie właśnie z niego. Głównie chodzi o to, że przy małej ilości pamięci używa się w nim głównie tzw. CSG Primitives (Constructive Solid Geometry), czyli matematycznie opisanych obiektów stanowiących całość, np. kuli, stożka itd. Obiekty te można co prawda wycinać za pomocą operacji odejmowania/dodawania (boolean operations), jednak nie daje to takiej elastyczności jak działanie bezpośrednio na polygonach (mesh modeling). Co prawda obiekty powstałe z primitives są idealnie gładkie (idealnie gładka kula z polygonów musiałaby mieć bardzo dużo ścianek i na pewno nie zmieści się w 1 MB RAM), ale dziś takiego rozwiązania raczej już się nie stosuje ze względu na wspomnianą wyżej małą elastyczność. W Real3D v1.4 można pracować też na klasycznych polygonach, zrobiłem kilka prób z takimi obiektami, ale w takim przypadku dostępna pamięć bardzo szybko się kończy i niewiele można zdziałać. Dla początkujących, którzy chcą zbudować sobie prostą scenę z podstawowych brył jest to jednak rozwiązanie optymalne - tym bardziej, że program był tak powszechnie używany w tamtych czasach, że przetrwały różnego rodzaju dokumentacje i opisy, jak na przykład polska instrukcja obsługi, którą kupiłem we wczesnych latach 90-tych na giełdzie na Grzybowskiej w Warszawie.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Jest też dostępna instrukcja w języku angielskim na stronie archive.org, dlatego najłatwiej zacząć zabawę właśnie z tym programem.

Są też inne programy do raytracingu, które od biedy powinno się dać uruchomić na A500 z 1 MB, np. Sculpt Animate 4D, Silver i Turbo Silver, czyli prekursorzy Imagine, może nawet pierwsza wersja samego Imagine, Reflections czy 3-D Professional. Jest ich dość sporo i im starszy program, tym większe prawdopodobieństwo, że uruchomi się na A500. Nie sprawdzałem ich osobiście w amigowych czasach, bo z etapu Real 3D v1.4 przeskoczyłem od razu do LightWave3D, który wymagał dużo mocniejszej maszyny i nie miałem już motywacji, żeby sprawdzać mniej wymagające programy.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM
Przykładowa scena dostarczana wraz z programem Real 3D v1.4.

Powrót do korzeni

Z powyższej listy programów do dalszej zabawy wybrałem Sculpt 3D. Jest to prawdziwy powrót do korzeni, pierwszy program do raytracingu jakiego w życiu używałem, a jednocześnie pierwszy na Amidze i z dużym prawdopodobieństwem pierwszy na wszystkie komputery domowe razem wzięte. Jest to solidny kawał historii i choćby z tego względu warto mu się przyjrzeć, choć to nie jedyny powód - jest dość prosty w użyciu, nie ma zbyt wielu skomplikowanych opcji no i zajmuje niewiele pamięci, pozostawiając większą jej część do naszej dyspozycji. Od biedy zadziała nawet z 0.5 MB RAM. Dla mnie najważniejszą zaletą jest to, że można w nim spokojnie operować na wierzchołkach, krawędziach, płaszczyznach, czyli podstawowych budulcach każdego, choć trochę bardziej skomplikowanego obiektu 3D i nie jesteśmy ograniczani do operacji na primitives jak użytkownik A500 używający programu Real 3D v1.4. Dla wielu osób zaletą będzie też polska instrukcja obsługi, która ukazała się nakładem Palma Press. Dotyczy ona co prawda nowszej wersji, Sculpt Animate 4D, ale większość rzeczy będzie można zastosować w starszej.

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Praktyka

Pierwsza rzecz, jaką sprawdziłem w praktyce, to ile tak naprawdę danych jesteśmy w stanie zmieścić zanim skończy się pamięć. W ramach eksperymentu zrobiłem kulkę składającą się z 320 trójkątów i powielałem ją na scenie. Po dołożeniu sześciu i pół kulki zobaczyłem taki komunikat:

Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Można zatem przyjąć, że w teorii przy 1 MB pamięci nasza scena musi być ograniczona do ok. 2000 trójkątów, a w praktyce do 1500 lub nawet mniej. W przeciwnym wypadku będziemy ciągle balansować na krawędzi pamięci i często oglądać komunikat Guru Meditation. Nie jest tych polygonów tak mało - to mniej więcej tyle, ile miały na scenie gry na PlayStation 1, czyli całkiem solidne low-poly. Trzeba jednak wziąć też pod uwagę ograniczenia, które wynikają z prostej konstrukcji pierwszych wersji programu Sculpt 3D:

  • brak obsługi tekstur, od biedy za teksturę proceduralną można uznać możliwość włączenia szachownicy na podłodze
  • tylko pięć dostępnych materiałów - matowy, połyskliwy, lustrzany, świecący, szkło
  • tylko jeden rodzaj lampy - światło punktowe (brak spotów, słońca itd.)

Wyżyć artystycznie możemy się za to dobierając dowolnie kolory powierzchni i lamp, korzystając z imponującej palety 4096 kolorów Amigi, mamy wpływ na kąt widzenia kamery, ilość światła rozproszonego, globalną moc naświetlania (exposure), możemy dodać gradient na niebie i tradycyjną szachownicę na podłodze. Jest to z jednej strony ograniczenie, ale z drugiej możemy się bardziej skupić nad tym, co chcemy pokazać. Skromne środki wyrazu zmuszają do zwrócenia większej uwagi na kompozycję, kolory, wydobycie kształtów odpowiednim oświetleniem. Nie możemy ratować słabej sceny efekciarską mgłą, lens flarami, dymem, wybuchami i innymi zapychaczami. Cała moc musi pójść w treść sceny zamiast w otoczkę, pozłotkę i blichtr, jak to często bywa, gdy ktoś dorwie się do współczesnego programu 3D z masą pluginów.

Jeśli chodzi o generację obrazu, to można wybierać spośród trybów graficznych Amigi OCS do HAM6 Lo-Res Interlace włącznie, ale co ciekawe, można też renderować w pełnych 24 bitach na dysk. Amiga tego oczywiście nie wyświetli, ale można tak przygotować grafikę np. do druku czy potem samodzielnie skonwertować pliki 24-bitowe na HAM-6 (np. programem HamLabPlus, który bez problemu ruszy z dyskietki i wykona konwersję na 1 MB RAM) co da dużo wyższą jakość niż tryb HAM-6 wyliczony przez Sculpta. Takie renderowanie na dysk ma jeszcze jedną zaletę - zostaje więcej pamięci na obiekty, po prostu ekran, na którym wyświetlany jest zwykle wynik renderowania nie jest w ogóle otwierany i nie zabiera cennej pamięci.

Samo tworzenie obiektów też jest bardzo proste - naciskając jednocześnie lewy i prawy klawisz myszy tworzymy punkt, dwa punkty można połączyć w krawędź, trzy punkty połączone krawędziami dają jedną trójkątną ściankę. Dla początkujących będzie to oczywiście raczej trudne do wyobrażenia, ale jeśli ktoś jest zaprawionym w bojach modelarzem 3D, to nie będzie miał z tym większego problemu. Są też do dyspozycji narzędzia tworzące kule, dyski, cylindry itd. oraz umożliwiające np. obracanie i wytłaczania obrysu. Nie jest ich wiele, ale dzięki temu łatwo wszystko sprawdzić i przetestować, nie jest to Imagine, który ma kilka osobnych edytorów, tu wszystko mieści się na jednym ekranie w kilku krótkich rozwijanych menu i można to opanować w krótkim czasie.

Poniżej zamieszczam rezultaty mojej pracy w Sculpt 3D przy 1 MB RAM i zachęcam do samodzielnej zabawy. Myślę, że można czerpać sporo przyjemności z przełamywania tego typu ograniczeń. Gdy przy mocy współczesnych komputerów operacje na milionach polygonów przestają być już wyzwaniem, można spróbować wycisnąć coś z 1 MB RAM i kilku setek trójkątów.

Postępy pracy nad grafiką konkursową na Decrunch 2016
Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM Program dla Kowalskiego - raytracing na Amidze 500 z 1 MB RAM

Poniższy artykuł ukazał się pierwotnie w magazynie Retrokomp nr 2/2016.

Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem