Strona opisuje szczegółowo jak do 8-bitowego Atari XL/XE okulary 3D firmy ASUS i uzyskać dzieki temu prawdziwy trójwymiarowy obraz na zwykłym monitorze lub telewizorze, oraz jak wykorzystać ten efekt we własnych programach.
Pierwszy raz z okularami pozwalającącymi uzyskać prawdziwie przestrzenny obraz na ekranie zwykłego telewizora albo monitora spotkałem się przy okazji konsoli 8-bitowej SEGA ze specjalnym interfejsem 3D. Grając na niej w klon Missile Command 3D miało się autoentyczne złudzenie, że pociski wylatują z ekaranu telewizora w stronę gracza. W połączeniu z pistoletem, ktorym kasowało się te rakiety dawało to wspaniałą zabawę nawet mimo faktu, że trójwymiarowy obraz diabelnie mrugał.
Wtedy jednak lekkomyślnie sprzedałem konsolę nie pomyślawszy, że pomysł można przenieść na Atari.
Na szczęście jakiś czas temu wpadły mi w oko na aukcji podobne okulary 3D firmy ASUS, przeznaczone do wpinania do kart graficznych PC-ta ze specjalnym wyjściem. Takie jak widać na zdjęciu obok. I właśnie je wykorzystałem do realizacji tego pomysłu.
Nie będę tu tłumaczył szczegółowo jak to się dzieje, że widzimy przestrzennie. Łatwo znaleźć takie informacje w sieci, np na tej stronie. Polecam przeczytać przed dalszą lekturą.
Mówiąc w wielkim skrócie, każde z oczu człowieka widzi obraz płaski, tyle, że lewe oko widzi obraz odrobinę inny niż prawe. Inczaj mówiąc każde z oczu patrzy na dany obiekt z innego punktu, czyli widzi go z innego kąta. Aby się przekonać, że to prawda, wystarczy kilka razy mrugnąć szybko na przemian lewym i prawym okiem trzymajać palec 15cm przed twarzą.
Na podstawie tych dwóch płaskich obrazów nasz mózg tworzy trójwymiarowy obraz przestrzeni.
Wiedząc jak działa "tryb 3D" naszych oczu łatwo można wgenerować parę obrazów, które sprawią, że nasz mózg sam utworzy z nich prawdziwy obraz trójwymiarowy. Jest tylko jeden problem: jak dostarczyć każdy z obrazów do jednego oka, tak by nie widziało go drugie?
Stsuje się kilka rozwiązań:
Mamy do dyspozycji okulary ASUS 3D. I całe poniższe opracowanie bazuje właśnie na nich. Ale przypuszczam, że można go banalnie prosto przystosować do prawie każdych innych okularów 3D zawierających przesłony (nie wyświetlacze!) LCD.
Okulary ASUS mają kabel z wtyczką typu "jack stereo":
Przyznam uczciwie, że schemat wzmacniacza przerysowałem z tej strony, opisującej jak podłączyć okulary ASUS do komputera INDY. Autor zastosował podwójny komparator. Trzeba tylko zmienić odrobinę rezystory ustalające poziom przełączenia komparatora, bo INDY generuje 2V a Atari 5V.
Schemat:
+------------------+-------+------ +12V | | | | v R1 | | v 100k | | v | | | | +-----------|------------------|-------|------o ASUS Right | | | | | +---|-------+----------+ | | | | | | | +-----------------------|---+---|---|---+ | +------|-------|------o ASUS Left | | | | | | | | | | | DB9(rear view) +---+---+---+---+---+---+---+---+ v R2 | o o o o o | 7 6 5 4 3 2 1 | v 33k | o o o o | | v | | | US1 LM324N ( | --- C1 | | | | --- 10n | | 8 9 10 11 12 13 14 | | | | +---+---+---+---+---+---+---+---+ | | | | | | | | | | | | | | | | +------------------------------+------------------+-------+------o ASUS Ground
Spis elementów:
Parę słów komentarza:
Układ działa jako podwójny wzmacniacz pracujący w układzie komparatora. Próg przełączania powinien być ustawiony na około 2,5V. Starałem się tak dobrać rezystory ale moja wiedza teoretyczna mocno zardzewiała. Jeśli ktoś ma w głowie odpowiedni wzór i potrafi dobrać precyzyjnie rezystory, bardzo proszę o poprawkę. Precyzyjne dobranie rezystorów jest jednak sprawą drugorzędną. Biorąc pod uwagę, że sterowanie będzie cyfrowe (sygnał prostokątny 0V-5V), nie powinniśmy widzieć różnicy w działaniu układu zarówno przy ustwieniu komparatora na 1,5V jak i na 3,5V zamiast optymalnych 2,5V.
Do sterowania interfejsem zdecydowałem się użyć portu joysticka. To chyba najprostrze i najbardziej wygodne rozwiązanie, opisane w TA 2/92.
Jesli ktos nie ma opory w odcięciu wtyczki od jakiegoś starego joysticka, można nabyć żeńską wtyczkę RS232. Niestety takiej wtyczki nie da się wsadzić do gniazda joya bo metalowa osłona zawadza o obudowę Atari. Trzeba przy pomocy porządnych cęgów obciąć ten metalowy kołnierz wtyczki i wydłubać plastikowy środek. Ten środek składa się z dwóch części, więc żeby się nie rozpadły trzeba je skleić.
Aha, zasilanie ukladu 12V stalego napiecia trzeba niestety podlaczyc z zewnetrznego zasilacza.
Napisałem najprostszy na świecie program demonstracyjny 3D.asm - wyświetla on na ekranie statyczny obraz trójwymiarowy. Niestety nie potrafię w asemblerze napisać czegokolwiek bardziej skomplikowanego, o animacji nawet nie wspominając. Jedyną zaletą tego programu jest to, że działa. Gdyby ktoś umiał rozwinąć ten proram (np dodać możliwość otwierania z dysku obrazów do odtwarzania), bradzo proszę o pomoc (a jeszcze bajeczniej by było, gdyby ktoś napisał jakąś animację 3D :)
Zasada działania jest następująca: w pamięci umieszczone są dwa obrazy przeznaczone dla lewego i prawego oka. Program na początku ustawia tryb 9. Zdecydowalłem się na niego, bo ma 16 odcieni szarości i najlepiej wyglądały w nim przekonwertowane z PC-ta obrazy. Ale można oczywiście uzyskać efekt 3D w każdym trybie. Następnie program konfiguruje port joya tak by można było sterować wyjściem. Po czym ustawia przerwanie VBL.
W przerwaniu VBL wykonywanym po narysowaniu przez ANTIC każdego ekranu (czyli co 1/50 sekundy) program zamienia w DL adres pamięci obrazu naprzemiennie na adresy ekranL oraz zmienia polaryzacje pinu w porcie joysticka, który steruje okularami.
Program sprawdza też, czy został naciśnięty jakiś klawisz. Jeśli tak, to zamienia on obrazy - ten przenzaczony dla lewego oka bedzie wyświetlany dla prawego i odwrotnie. Dla niektórych obrazów daje to bardzo ciekawy efekt - obiekty, które "wystawały" z ekranu monitora, po takiej zamianie uciekają w głąb ekranu. Obraz staje się wklęsły zamiast wypukłego. Radze poeksperymentować.
Program 3D.asm jest napisany w standardzie XASM. Można go pobrać stąd.
Aby sie skompilowal potrzebne sa dwa obrazy: right.ata i left.ata - pliki w formacie GR9 odpowiednio dla prawego i lewego oka. Każdy o długości 7680 bajtów. Można je pobrać poniżej. W wolnej chwili opiszę jak przekonwertować dowolny obraz z PS-ta na format trybu GR9 Atari.
Przypominam jeszcze raz: Efekt 3D będzie widoczny tylko na prawdziwym Atari podłączonym do klasycznego telewizora lub monitora. Na LCD lub plazmie albo na emulatorze efektu najprawdopodobniej nie będzie widać.
Dobrej zabawy!
nosty
Gotowy software:
Interfejs podlaczamy do portu joya nr 1.
Najlepiej usiąść jakieś 2 metry przed monitorem lub tv - efekt jest wtedy najlepszy.
PRESS ANY KEY - zamiana miejscami obrazu dla lewego i prawego oka.
Oryginał BMP | Pliki GR9 potrzebne do kompilacji ASM'a | Gotowy ATR |
01 Herb |
lewy obraz prawy obraz |
01herb.atr |
03 Lincoln |
lewy obraz prawy obraz |
03lincol.atr |
04 Sfera |
lewy obraz prawy obraz |
04sfera.atr |
05 Pies |
lewy obraz prawy obraz |
05pies.atr |
06 Architektura |
lewy obraz prawy obraz |
06arch.atr |