Vektor Allmänt

Vector General ( VG ) var en serie grafiska terminaler och namnet på det kaliforniska företag som tillverkade dem. De introducerades först 1969 och användes i datorlabb fram till början av 1980-talet.

Terminalerna var baserade på en gemensam plattform som läste vektorer från en värdminidator och inkluderade hårdvara som kunde utföra grundläggande matematiska transformationer i terminalen. Detta förbättrade avsevärt prestandan för operationer som att rotera ett objekt eller zooma in. De transformerade vektorerna visades sedan på terminalens inbyggda vektormonitor .

I motsats till liknande terminaler från andra leverantörer inkluderade Vector General-systemen lite internt minne . Istället lagrade de vektorer i värddatorns minne och fick åtkomst till dem via direkt minnesåtkomst ( DMA). Fullt utrustade VG3D-terminaler kostade cirka 31 000 USD inklusive en PDP-11 -dator av låg kvalitet, jämfört med maskiner som IBM 2250 som kostar 100 000 USD för bara terminalen.

Bland ett antal kända användningsområden inom datorgrafikområdet var det en VG3D-terminal ansluten till en PDP-11/45 som användes för att producera "att attackera dödsstjärnan kommer inte att vara lätt"-animationerna i Star Wars .

Beskrivning

Hårdvara

Ett vanligt försök i slutet av 1960-talet att förbättra prestanda för grafikskärm, särskilt i 3D, var att använda speciella terminaler som innehöll en lista med vektorer i internminnet och sedan använde hårdvara eller mjukvara som kördes i bildskärmskontrollern för att tillhandahålla grundläggande transformationer som rotation och skalning. Eftersom dessa transformationer var relativt enkla kunde de implementeras i terminalen för relativt låg kostnad och därigenom undvika att spendera tid på värd-CPU för att utföra dessa operationer. System som utför åtminstone några av dessa operationer inkluderar IDI, Adage och Imlac PDS-1 .

En nyckelnyhet i VG-seriens terminaler var användningen av direkt minnesåtkomst (DMA) för att ge den åtkomst till en värddators minne. Detta innebar att terminalerna inte behövde mycket egen lagring och gav dem möjlighet att snabbt komma åt data utan att den kopierades över en långsammare länk som det seriebaserade Tektronix 4010 eller liknande system. Nackdelen med detta tillvägagångssätt är att det bara kunde användas på maskiner som erbjöd DMA, och endast genom en relativt dyr adapter.

Grundkonceptet var att värddatorn skulle köra beräkningar för att producera en serie punkter för 2D- eller 3D-modellen och uttrycka det som 12-bitars värden, normalt lagrade i 16-bitars ord med extra fyllda statusbitar . Terminalen skulle då periodvis avbryta datorn, 30 till 60 gånger i sekunden, och snabbt läsa upp och visa data. Varje punkt lästes in en efter en i de lokala minnesregistren för tillfällig lagring medan matematiska funktioner applicerades på dem för att skala, översätta och (valfritt) rotera, och när de slutliga värdena beräknades skickades dessa punkter till katoden . strålrör (CRT) för visning.

Det fanns tre olika modeller av hårdvaran för koordinattransformation. Det mest grundläggande systemet inkluderade den hårdvara som behövdes för att panorera och zooma 2D-bilder, i vilket fall terminalen som innehöll det skulle kallas en Vector General 2D. En annan version lade till möjligheten att rotera 2D-bilden runt en godtycklig punkt, känd som 2DR (för Rotera). Det dyraste alternativet var 3D, som gav rotation, panorering och zoom på 3D-vektorer. Ett annat alternativ som kunde läggas till någon av dessa modeller och som inte återspeglades i namnet lade till en teckengenerator .

De kvadratiska CRT:erna drevs direkt från utgången av transformationshårdvaran, i motsats till att de visas med en traditionell rasterskanningsmetod . Företaget hänvisade till denna typ av operation som "random scan", även om det allmänt kallas en vektormonitor i moderna referenser. Två grundläggande CRT-modeller fanns tillgängliga, som mätte 17 tum (430 mm) och 21 tum (530 mm) diagonalt. 21-tumsmodellen fanns även i en speciell "high speed"-version som förbättrade rithastigheterna. CRT:erna använde elektromagnetisk avböjning, inte magnetisk som i tv-apparater, för att ge höghastighetsskanningsprestanda.

Flera olika inmatningsenheter kan anslutas till systemet. Det vanligaste var ett 70-tangenters tangentbord , medan andra inkluderade en bank av momentana tryckknappsbrytare med interna registerkontrollerade lampor, en grafikplatta , en ljuspenna , en urtavla och en joystick . Systemet som helhet var ganska stort, ungefär lika stort som ett litet kylskåp .

Rita koncept

Vektorer representerades logiskt av två slutpunkter i rymden. Varje punkt definierades av två eller tre 12-bitars värden, vilket representerade ett mellanslag från 0 till 4 095 i X, Y och (valfritt) Z. Terminalen hade tre 12-bitars register för att hålla värdena medan de manipulerades.

Systemet gjorde det möjligt för vektorer att representeras på ett antal sätt i minnet. Det mest grundläggande läget, "absolut", krävde två poäng, en för varje ände av vektorn. "Relativa" vektorer uttrycktes som förskjutningar från den sista uppsättningen värden, så endast en punkt behövdes för att definiera en vektor, den första punkten är slutpunkten för den sista. Detta skulle kunna halvera antalet punkter som behövs för att beskriva en komplett ritning, om data var kontinuerliga som ett linjediagram . "Inkrementella" vektorer reducerade minnet ytterligare genom att endast använda 6-bitar för varje punkt, vilket gör att data kan packas in i mindre minne i värden. Systemet kan ställas in för att lägga till värdena till hög- eller lågordningens 6 bitar av det sista värdet, vilket tillåter grov eller fin rörelse. Slutligen reducerade "autoinkrementerande" vektorer minneskraven ytterligare genom att kräva att endast ett värde lagras, medan de andra ökas med en förinställd mängd när varje ny punkt lästes in. Dessa liknade relativa vektorer, med en av de två axlarna alltid ha samma relativa offset. Systemet hade också en separat krets för att generera cirkelbågar, till skillnad från att behöva skicka in en serie punkter.

Displayen kunde producera 32 olika intensitetsnivåer. Detta kunde programmeras direkt genom att sätta ett register i terminalen, men användes mer vanligt i ett programmerat läge i 3D. I detta läge ändrades intensiteten automatiskt när vektorn ritades, och objekt djupare i Z-dimensionerna ritades mindre intensivt. Detta gav en djupsignal som fick framsidan av objektet att se ljusare ut på skärmen. Hur snabbt denna förändring ställdes in genom ISR-registret.

Ett separat 12-bitars PS-register innehöll skalmultiplikatorn. När detta värde inte användes representerade koordinatsystemet ett fysiskt område som var ungefär dubbelt så stort som skärmen, vilket gjorde att det kunde översätta bilden för att ge rullning. När ett värde placerades i detta register multiplicerades koordinaterna i vektorregistren och teckenritningssystemet med detta värde, vilket gav en zoomeffekt.

Den valfria teckengeneratorn ritade tecken med hjälp av en uppsättning av fem hårdvarudefinierade former, en cirkel, en kvadrat med en vertikal linje i mitten, en kvadrat med en horisontell linje i mitten och timglasformer orienterade vertikalt och en liknande orienterad horisontellt . Genom att slå på och av strålen när var och en av dessa former ritades av hårdvaran, kunde systemet rita vilken karaktär som helst. Till exempel ritades bokstaven C med O-formen och stängde av strålen medan den var till höger. Bokstaven D skulle ritas med hjälp av O-formen och stänga av den medan den var till vänster, och sedan rita den vertikala linjen med strålen påslagen endast när den mittersta vertikala stapeln ritades. Mellan ett och tre sådana "dragningar" behövs för att producera en komplett karaktär. Systemet innehöll ett antal grekiska bokstäver och matematiska symboler utöver de vanliga ASCII- tecken.

Programmering

Terminalen läser med jämna mellanrum värddatorns huvudminne med hjälp av DMA för att uppdatera skärmen. Ytterligare kommunikationer hanterades genom en enda dubbelriktad I/O-port efter att ha skapat en avbrottsbegäran med begärandetaljen i PIR-registret. Inställningar och instruktioner hanterades genom att data skickades till och från I/O-porten till ett av terminalens 85 register.

Till exempel kan värden ställa in värdet på PS-registret, vilket får bilden att zooma. Den skulle göra detta genom att anropa ett avbrott vars 16-bitars meddelande innehöll numret på det register som skulle ställas in, 17 i detta fall. Terminalen skulle svara genom att skicka ett 16-bitars meddelande tillbaka över I/O-kanalen. Skrivningar hanterades med en liknande process, men terminalen svarade på avbrottet genom att läsa ett värde istället.

Basadressen för början av vektorlistan och förskjutningen inom den fanns i registren 14 och 15. Detta gjorde det möjligt för displayen att utföra en sorts "page flipping" genom att skriva ut separata uppsättningar punkter i datorns minne och sedan ändra visa allt på en gång genom att ändra värdet på register 14 så att det pekar på en annan basadress. Detta begränsades av mängden tillgängligt minne på värddatorn.

Visningsinstruktionerna hade en mängd olika format som gjorde det möjligt att bygga inte bara vektorer utan även olika kommandon. Det fanns till exempel instruktioner för att ladda data till ett givet register, bestående av två 16-bitars ord, det första med registerdetaljerna och det nästa med värdet. Andra instruktioner utförs logiskt ELLER eller OCH på registervärden. Visningsinstruktionerna i sig kan blandas med dessa operationer, så systemet kan till exempel börja visa ett urval av objekt, få en lampa att tändas, rotera bilden och sedan rita fler vektorer.

Anmärkningsvärda användningsområden

VG3D är historiskt känd för sin användning i Star Wars , men är också välkänd för sin tidiga roll i utvecklingen av datorstödd design .

I Star Wars

En del av animationen visar vektorgrafik-utdata som fångas på film och sedan projiceras tillbaka i scenen under filmning.

Larry Cuba producerade två segment av datoranimation för Star Wars på en PDP-11/45 med en VG3D-terminal. För att filma bilderna ruta för ruta kopplades en ledning mellan en av lamporna på tryckknappspanelen och avtryckaren på kameran. Detta utlöstes av värddatorn, vilket fick kameran att utlösa slutaren en gång och flytta fram filmen en enda bildruta.

Det första segmentet, som visar exteriören av Death Star , är helt baserat på VG3D:s interna visningsmöjligheter. Modellen bestod av en enkel serie 3D-punkter som representerade konturen av stationen som hölls i PDP-11:s minne, konstruerade algoritmiskt med hjälp av det tillhörande GRASS-programmeringsspråkets kurvgenereringskod. För att flytta och rotera bilden som den ses i filmen skulle det tillhörande GRASS-programmet ladda nya rotations- och zoomsiffror i terminalens register och sedan trigga kameran.

Det andra segmentet visar vyn som flyger nerför skyttegraven i den sista attacken, först från ovan och sedan från pilotens perspektiv. Detta var mycket svårare att skapa eftersom terminalen inte stödde beräkningen av perspektiv, vilket krävdes i denna sekvens. Den fysiska modellen av skyttegraven som användes under inspelningen bestod av en serie av sex detaljer som duplicerades många gånger och sedan monterades på olika sätt för att producera en enda 40 fot (12 m) lång modell. Kuba digitaliserade var och en av dessa sex funktioner från fotografier och kombinerade dem sedan i olika konfigurationer till över 50 U-formade sektioner. För varje ram staplades fem av dessa sektioner på djupet och sedan tillämpades perspektivberäkningarna. Tillägget av nya avsnitt allt eftersom animeringen fortskrider kan ses i filmen. Denna skickades sedan till terminalen som en statisk bild och kameran utlöstes. Varje bildruta tog ungefär två minuter att rendera.

I den amerikanska armén

Mike Muuss (sittande) använde PDP-11 /70 och Vector General 3D som visas här för att göra en roterbar bild av XM-1-tanken . Detta orsakade en stor uppståndelse bland arméns brass som tillbringade de kommande två veckorna med att kräva demos.

Mike Muuss berättar att US Army 's Ballistic Research Laboratory hade köpt en Cyber ​​173 och tre arbetsstationer bestående av en VG3D-terminal och en PDP-11/34 för att köra den. Dessa var tänkta att kopplas samman, men ingen lyckades få detta att fungera och till slut stod VG-arbetsstationerna oanvända. Han var besvärad av att se all denna hårdvara slösas bort, så 1979 kopplade han upp en av arbetsstationerna och skapade ett program som producerade en roterande 3D-kub.

En annan programmerare hade fått en uppsättning 3D-punkter av XM1-tankdesignen och skrev kod för att mata ut den till en Calcomp-plotter . Han frågade Muuss om de kunde få det visat på VG-terminalerna istället, så att de kunde rotera det. Han matade först ut den som en statisk bild på en Tektronix 4014 , men nästa natt lyckades han få skärmen på VG3D där den enkelt kunde snurras runt med hjälp av den interna vektorhårdvaran.

Ingen i armén hade sett något liknande tidigare. Nästa dag flög den befälhavande generalen för ARRADCOM in för att se det live. Under de följande två veckorna gav Muuss ständigt demonstrationer av systemet till en parad av officerare. Demon blev så välkänd att Muuss kunde börja utveckla BRL-CAD .

Anteckningar

Citat

Bibliografi

  • Sweet, Neesa (februari 1981). "Animera Death Star Trench" (PDF) . The All Best of Fantastic Films: The Magazine of Imaginative Media . s. 26–30.

externa länkar

Se även