Вектор Генерал - Vector General

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

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

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

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В армии США

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

Майк Муусс рассказывает , что армии США «s Ballistic Research Laboratory купил Cyber 173 и три рабочие станции , состоящие из VG3D терминала и PDP-11/34 , чтобы управлять его. Их предполагалось соединить вместе, но никто не смог заставить это работать, и, в конце концов, рабочие станции VG остались неиспользованными. Он был обеспокоен тем, что все это оборудование тратится впустую, поэтому в 1979 году он подключил одну из рабочих станций и создал программу, которая создавала вращающийся трехмерный куб.

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

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

Примечания

использованная литература

Цитаты

Список используемой литературы

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

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