stringtranslate.com

Вектор Генеральный

Vector General ( VG ) — серия графических терминалов и название калифорнийской компании, которая их производила. Впервые они были представлены в 1969 году и использовались в компьютерных лабораториях до начала 1980-х годов.

Терминалы были основаны на общей платформе, которая считывала векторы , предоставленные хост- миникомпьютером , и включала аппаратное обеспечение, которое могло выполнять базовые математические преобразования в терминале. Это значительно повышало производительность таких операций, как вращение объекта или увеличение масштаба. Затем преобразованные векторы отображались на встроенном векторном мониторе терминала .

В отличие от аналогичных терминалов других поставщиков, системы Vector General включали мало внутренней памяти . Вместо этого они хранили векторы в памяти хост-компьютера и получали к ним доступ через прямой доступ к памяти (DMA). Полностью оборудованные терминалы VG3D стоили около 31 000 долларов , включая компьютер PDP-11 низкого класса [1] , по сравнению с машинами вроде IBM 2250 , которые стоили 100 000 долларов только за терминал. [2] [a]

Среди множества известных применений в области компьютерной графики, именно терминал VG3D, подключенный к PDP-11/45 , использовался для создания анимаций «атака на Звезду Смерти будет нелегкой» в «Звездных войнах » . [4] [5]

Описание

Аппаратное обеспечение

Распространенной попыткой в ​​конце 1960-х годов улучшить производительность графического дисплея, особенно в 3D, было использование специальных терминалов, которые содержали список векторов во внутренней памяти, а затем использовали аппаратное или программное обеспечение, работающее в контроллере дисплея, для обеспечения базовых преобразований, таких как вращение и масштабирование. Поскольку эти преобразования были относительно простыми, их можно было реализовать в терминале за относительно небольшую стоимость и, таким образом, избежать траты времени на центральном процессоре для выполнения этих операций. Системы, выполняющие по крайней мере некоторые из этих операций, включали IDI, Adage и Imlac PDS-1 . [6]

Ключевым нововведением в терминалах серии VG было использование прямого доступа к памяти (DMA), что позволяло им получать доступ к памяти хост-компьютера. Это означало, что терминалам не требовалось много собственного хранилища, и давало им возможность быстрого доступа к данным без копирования их по более медленному каналу, такому как последовательный Tektronix 4010 или аналогичные системы. [7] Недостатком этого подхода было то, что его можно было использовать только на машинах, которые предлагали DMA, и только через относительно дорогой адаптер. [b]

Основная концепция заключалась в том, что главный компьютер будет выполнять вычисления для создания серии точек для 2D или 3D модели и выражать это как 12-битные значения, обычно хранящиеся в 16-битных словах с дополнительными заполненными битами состояния. Затем терминал будет периодически прерывать компьютер, от 30 до 60 раз в секунду, [8] и быстро считывать и отображать данные. [9] Каждая точка считывалась одна за другой в локальные регистры памяти для временного хранения, в то время как математические функции применялись к ним для масштабирования, перевода и (опционально) поворота, и когда окончательные значения были рассчитаны, эти точки отправлялись на электронно-лучевую трубку (ЭЛТ) для отображения. [9]

Существовало три различных модели оборудования для преобразования координат. Самая базовая система включала оборудование, необходимое для панорамирования и масштабирования 2D-изображений, в этом случае терминал, содержащий его, назывался Vector General 2D. Другая версия добавляла возможность вращать 2D-изображение вокруг произвольной точки, известной как 2DR (для Rotate). Самым дорогим вариантом был 3D, который обеспечивал вращение, панорамирование и масштабирование 3D-векторов. Другая опция, которая могла быть добавлена ​​к любой из этих моделей и не была отражена в названии, добавляла генератор символов . [10]

Квадратные ЭЛТ управлялись непосредственно с выхода оборудования преобразования, в отличие от отображения с использованием традиционного метода растрового сканирования . [9] Компания называла этот тип операции «случайным сканированием», [8] хотя в современных источниках его повсеместно называют векторным монитором . Были доступны две основные модели ЭЛТ, размером 17 дюймов (430 мм) и 21 дюйм (530 мм) по диагонали. 21-дюймовая модель также была доступна в специальной «высокоскоростной» версии, которая улучшала скорость прорисовки. ЭЛТ использовали электромагнитное отклонение, а не магнитное, как в телевизорах, для обеспечения высокоскоростной производительности сканирования. [11]

К системе можно было подключить несколько различных устройств ввода. Наиболее распространенной была клавиатура с 70 клавишами , в то время как другие включали в себя банк кнопочных переключателей с внутренними управляемыми регистром индикаторами, графический планшет , световое перо , наборный блок и джойстик . [12] Система в целом была довольно большой, размером с небольшой холодильник . [13]

Концепции рисования

Векторы были представлены логически двумя конечными точками в пространстве. Каждая точка была определена двумя или тремя 12-битными значениями, тем самым представляя пространство от 0 до 4095 по X, Y и (опционально) Z. [11] Терминал имел три 12-битных регистра для хранения значений во время их обработки. [14]

Система позволяла представлять векторы в памяти несколькими способами. Самый простой режим, «абсолютный», требовал двух точек, по одной для каждого конца вектора. [15] «Относительные» векторы выражались как смещения от последнего набора значений, поэтому для определения вектора требовалась только одна точка, первая точка была конечной точкой последнего. Это могло вдвое сократить количество точек, необходимых для описания полного рисунка, если данные были непрерывными, как линейная диаграмма . «Инкрементные» векторы еще больше сокращали память, используя только 6 бит для каждой точки, что позволяло упаковывать данные в меньший объем памяти на хосте. Систему можно было настроить на добавление значений к старшим или младшим 6 битам последнего значения, что позволяло выполнять грубое или точное перемещение. Наконец, «автоинкрементные» векторы еще больше снизили требования к памяти, требуя сохранения только одного значения, а остальные увеличивались на заданную величину по мере считывания каждой новой точки. Они были похожи на относительные векторы, при этом одна из двух осей всегда имела одинаковое относительное смещение. [16] Система также имела отдельную схему для генерации дуг окружностей, в отличие от необходимости отправлять ряд точек. [17]

Дисплей мог выдавать 32 различных уровня интенсивности. Это можно было запрограммировать напрямую, установив регистр в терминале, но чаще использовалось в запрограммированном режиме в 3D. В этом режиме интенсивность автоматически менялась по мере рисования вектора, при этом элементы, расположенные глубже в измерениях Z, рисовались менее интенсивными. Это создавало сигнал глубины, который заставлял переднюю часть объекта выглядеть ярче на дисплее. Скорость этого изменения устанавливалась через регистр ISR. [18]

Отдельный 12-битный регистр PS содержал множитель масштаба. Когда это значение не использовалось, система координат представляла собой физическую область, примерно в два раза большую, чем экран, что позволяло ей переводить изображение для обеспечения прокрутки. Когда значение помещалось в этот регистр, координаты в векторных регистрах и системе рисования символов умножались на это значение, создавая эффект масштабирования. [19]

Дополнительный генератор символов рисовал символы, используя набор из пяти аппаратно определяемых фигур: круг, квадрат с вертикальной линией посередине, квадрат с горизонтальной линией посередине и фигуры песочных часов, ориентированные вертикально, и похожую фигуру, ориентированную горизонтально. Включая и выключая луч, когда каждая из этих фигур рисовалась аппаратно, система могла рисовать любой требуемый символ. Например, буква C рисовалась с помощью фигуры O и выключала луч, когда она была справа. Буква D рисовалась с помощью фигуры O и выключалась, когда она была слева, а затем рисовалась вертикальная линия с включенным лучом только во время рисования центральной вертикальной черты. Для создания полного символа требуется от одного до трех таких «рисунков». [20] Система включала ряд греческих букв и математических символов в дополнение к обычным символам ASCII . [21]

Программирование

Терминал периодически считывал основную память хост-компьютера, используя DMA для обновления дисплея. Дальнейшие коммуникации обрабатывались через один двунаправленный порт ввода-вывода [9] после создания запроса на прерывание с данными запроса в регистре PIR. [22] Настройки и инструкции обрабатывались путем отправки данных в порт ввода-вывода и из него в один из 85 регистров терминала. [14]

Например, хост мог установить значение регистра PS, что привело бы к масштабированию изображения. Он бы сделал это, вызвав прерывание, чье 16-битное сообщение содержало бы номер регистра, который должен быть установлен, в данном случае 17. Терминал ответил бы, отправив 16-битное сообщение обратно по каналу ввода-вывода. Записи обрабатывались с использованием аналогичного процесса, но терминал ответил на прерывание, считывая вместо этого значение. [23]

Базовый адрес для начала списка векторов и смещение внутри него находились в регистрах 14 и 15. [14] Это позволяло дисплею выполнять своего рода «перелистывание страниц», записывая отдельные наборы точек в память компьютера, а затем изменять отображение всего одновременно, изменяя значение регистра 14, чтобы оно указывало на другой базовый адрес. Это было ограничено объемом памяти, доступным на главном компьютере. [24]

Инструкции отображения имели различные форматы, которые позволяли строить не только векторы, но и различные команды. Например, были инструкции для загрузки данных в заданный регистр, состоящие из двух 16-битных слов, первое с данными регистра, а следующее со значением. Другие инструкции выполняли логические ИЛИ или И над значениями регистра. Сами инструкции отображения могли быть смешаны с этими операциями, так что система могла, например, начать отображать выборку элементов, зажигать лампу, вращать изображение, а затем рисовать больше векторов. [25]

Известные применения

VG3D исторически известен своим использованием в «Звездных войнах» , но он также хорошо известен своей ранней ролью в развитии систем автоматизированного проектирования .

ВЗвездные войны

Часть анимации демонстрирует векторную графику, захваченную на пленку и затем проецируемую на сцену во время съемок.

Ларри Куба создал два сегмента компьютерной анимации для «Звездных войн» на PDP-11/45 с терминалом VG3D. Для покадровой съемки изображений провод был подключен между одним из индикаторов на кнопочной панели и спусковым крючком затвора на камере. Он запускался главным компьютером, заставляя камеру спускать затвор один раз и продвигать пленку на один кадр. [26] [27]

Первый сегмент, показывающий внешний вид Звезды Смерти , полностью основан на внутренних возможностях отображения VG3D. Модель состояла из простой серии 3D-точек, представляющих контур станции, хранящейся в памяти PDP-11, построенной алгоритмически с использованием кода генерации кривых соответствующего языка программирования GRASS . Чтобы переместить и повернуть изображение, как показано в фильме, соответствующая программа GRASS загружала новые фигуры поворота и масштабирования в регистры терминала, а затем запускала камеру. [26]

Во втором сегменте показан вид на пролетающий вниз по траншее в финальной атаке, сначала сверху, а затем с точки зрения пилота. Это было гораздо сложнее создать, потому что терминал не поддерживал расчет перспективы, который требовался в этой последовательности. Физическая модель траншеи, используемая во время съемок, состояла из серии из шести элементов, которые дублировались много раз, а затем собирались разными способами для создания единой модели длиной 40 футов (12 м). Куба оцифровал каждый из этих шести элементов с фотографий, а затем объединил их в различных конфигурациях в более чем 50 U-образных секций. Для каждого кадра пять из этих секций были сложены в глубину, а затем были применены расчеты перспективы. Добавление новых секций по мере развития анимации можно увидеть в фильме. Затем это было отправлено на терминал как статическое изображение, и камера была запущена. Для рендеринга каждого кадра требовалось около двух минут. [28]

В армии США

Майк Муусс (сидит) использовал PDP-11 /70 и Vector General 3D, показанные здесь, чтобы сделать вращающееся изображение танка XM-1 . Это вызвало большой переполох среди армейских начальников, которые провели следующие две недели, требуя демонстраций.

Майк Муусс рассказывает, что Лаборатория баллистических исследований армии США приобрела Cyber ​​173 и три рабочие станции, состоящие из терминала VG3D и PDP-11/34 для его управления. Они должны были быть соединены вместе, но никто не смог заставить это работать, и в конце концов рабочие станции VG остались неиспользованными. Его беспокоило то, что все это оборудование тратится впустую, поэтому в 1979 году он подключил одну из рабочих станций и создал программу, которая создавала вращающийся 3D-куб. [29]

Другой программист получил набор 3D-точек конструкции танка XM1 и писал код для вывода его на плоттер Calcomp . Он спросил Муусса, могут ли они вместо этого отобразить его на терминалах VG, чтобы они могли вращать его. Сначала он вывел его как статическое изображение на Tektronix 4014 , но на следующую ночь ему удалось перенести отображение на VG3D, где его можно было легко вращать с помощью внутреннего векторного оборудования. [30]

Никто в армии не видел ничего подобного. На следующий день командующий генерал ARRADCOM прилетел, чтобы увидеть это вживую. В течение следующих двух недель Муусс постоянно давал демонстрации системы параду офицеров. [30] Демонстрация стала настолько известной, что Муусс смог начать разработку BRL-CAD . [31]

Примечания

  1. ^ Более поздние модели, такие как IBM 2250 Model III, могли управлять четырьмя терминалами, поэтому стоимость одного терминала приближалась к 65 000 долларов США, плюс хост. [3]
  2. ^ Хотя в руководстве указано, что можно использовать «любой» компьютер с соответствующим адаптером, во всех сторонних источниках упоминается только PDP-11.

Ссылки

Цитаты

  1. ^ Филлипс 1978, стр. C.24.
  2. ^ Вайсберг 2008, стр. 13-8–13-9.
  3. ^ Вайсберг 2008, стр. 13-9.
  4. ^ Сладкий 1981.
  5. ^ Боррелли 2017.
  6. ^ Педди 2013, стр. 316.
  7. Ссылка 1972, стр. 1-1, 1–3.
  8. ^ ab Ссылка 1972, стр. 1-4.
  9. ^ abcd Ссылка 1972, стр. 1-3.
  10. Ссылка 1972, стр. 1-1.
  11. ^ ab Ссылка 1972, стр. 1-7.
  12. Ссылка 1972, стр. 1-2.
  13. ^ Боррелли 2017, стр. Смотреть изображения..
  14. ^ Ссылка abc 1972, стр. 3-3.
  15. Ссылка 1972, стр. 1-14.
  16. Ссылка 1972, стр. 1-16.
  17. Ссылка 1972, стр. 2-12.
  18. Ссылка 1972, стр. 1-23.
  19. Ссылка 1972, стр. 1-9–1-14.
  20. Ссылка 1972, стр. 1-20.
  21. Ссылка 1972, стр. 2-13.
  22. Ссылка 1972, стр. 3-4.
  23. Ссылка 1972, стр. 3-4–3-6.
  24. Ссылка 1972, стр. Приложение B.
  25. Ссылка 1972, стр. 3-14–3-35.
  26. ^ ab Sweet 1981, стр. 29.
  27. ^ ДеФанти и Сандин 1981, с. 50.
  28. Sweet 1981, стр. 30.
  29. ^ Муусс 2000, стр. 91.
  30. ^ ab Muuss 2000, стр. 92.
  31. ^ "Обзор". BRL-CAD .

Библиография

Внешние ссылки

Смотрите также