Реклама: | Скачать 189.16 Kb.
|
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Московский государственный институт электроники и математики (Технический университет) Кафедра информационно- коммуникационных технологий Трёхмерная графика Методические указания к лабораторным занятиям по курсу “Компьютерная графика” Москва 2009 Оглавление Цели и задачи 4 Основные теоретические положения 5 Основные понятия трёхмерной графики 5 Voxel и NURBS 8 Voxel 8 NURBS 9 3D API 9 OpenGL 10 Direct3D 10 Подготовка к проведению работы 12 Проведение практического занятия 13 Освещение 16 Текстурирование 17 Анимация 17 Рендеринг 18 Выводы по результатам работы 19 Контрольные вопросы 20 Составители: канд. Тех. Наук Д.А. Королёв препод. А. А. Соболевский УДК 519 Трёхмерная графика: Метод. указания к лабораторным занятиям по курсу “Компьютерная графика” / Моск. гос. ин-т электроники и математики; Сост.: Д.А. Королёв, А. А. Соболевский. М., 2009.18 с. Дан обзор основных понятий трёхмерной графики, форматов файлов с трёхмерными объектами, а так же методов работы с трёхмерными объектами. Показаны основные различия в работе с трёхмерными объектами и приведены примеры работы с обработкой трёхмерных объектов. Приведены примеры работы с трёхмерными объектами в программном обеспечении компании Autodesc. Для студентов III курса АВТ кафедры ИКТ. ISBN 5-230-22336-7 ^ В этом разделе пойдёт разговор о трехмерной графике. Трехмерная графика - раздел компьютерной графики, охватывающий алгоритмы и программное обеспечение для оперирования объектами в трёхмерном пространстве, а также результат работы таких программ. Можно сказать иначе - 3D графика предназначена для имитации фотографирования или видеосъемки трехмерных образов объектов, предварительно подготовленных в памяти компьютера. Трёхмерные модели и объекты применяются во многих сферах нынешней жизни: кино, телевидении, рекламе, визуализации каких-либо объектов, архитектуре, компьютерных играх и технологиях. Трёхмерная графика так же используется в полиграфии и, иногда, в моделировании научных экспериментов. Несмотря на то, что в понятии 3D графика (3 Dimentions, 3 измерения) есть понятие объёма, по сути, мы с вами видим проекцию трёхмерных объектов, заданных математически, на пиксельную сетку монитора. Объекты в 3Д графике представляются различными способами – с помощью точек и связей между ними, с помощью рёбер и их расположения, с помощью кривых и их взаимодействия. Основными предметами, которые используются при построении и оперировании с 3D-объектами являются линейная алгебра, дискретная математика и, естественно, геометрия с алгеброй, с правилами проецирования и построения фигур. ^ Любой элемент, представляемый трёхмерной графикой, визуализируется при помощи определённых элементов, структур и средств. В этой части мы ознакомимся с основными элементами и понятиями трёхмерной графики. Полигон (polygon) – треугольник, задаваемый координатами трёх точек в трёхмерном пространстве. Он является базовым геометрическим примитивом в 3D-графике. В более широком смысле слова полигон – произвольный плоский многоугольник. Но в 3D-графике это понятие сужают до треугольника, т.е. до наиболее простой плоской фигуры, легче всего поддающейся расчётам (по трём точкам задаётся плоскость). Хотя иногда применяются и другие многоугольники в качестве геометрических примитивов. Вертекс (vertex) – вершина (точка) полигона, задаётся тремя координатами. В принципе, всю полигональную сетку 3D-модели можно было бы задать массивом полигонов, каждый из которых в свою очередь представлял бы массив из трёх вертексов, а вертекс – массив из трёх координат. Но в этом случае мы получаем слишком много избыточности в информации, ведь соседние полигоны примыкают друг к другу, т.е. имеют общие вершины. Поэтому в большинстве случаев пользуются иным представлением. Попросту создаётся массив всех вертексов модели (вертексы в нём уже не повторяются, как это было в описанном выше представлении), затем каждому вертексу ставится в соответствие определённое число – индекс, и вся модель представляется массивом этих индексов. Этот способ значительно экономит место. Вертекс – понятие, аппаратно поддерживаемое современными видеокартами. Аппаратная поддержка реализована в виде вертексного (вершинного) конвейера, где с вертексами производятся различные скоростные операции (Например, это могут координатные преобразования, вследствие перемещения или вращения объектов.). Текстура (texture)– плоское изображение, натягиваемое на полигон или несколько полигонов. Процесс заполнения полигона текстурой иногда называют wrapping-ом (обертыванием). ^ (texel) – точка на поверхности текстуры. Из таких точек состоит всё изображение текстуры. Пиксель (pixel) (pixel, расшифровывается как PICture'S ELement, элемент изображения) – всем привычное название единичной точки, отображаемой на мониторе в конкретном месте. Кроме этого представления понятия пикселя, в трехмерной графике существуют еще два: пиксель – это адресуемый элемент буфера кадра или пиксель - это точка плоскости, на которую производится проекция трехмерной сцены после проведения всех требуемых вычислительных операций. Пиксель – понятие, аппаратно поддерживаемое современными бюджетными видеокартами. Аппаратная поддержка реализована в виде пиксельного конвейера, где с пикселями производятся различные скоростные операции (в основном это различные эффекты типа затуманивания, наложения шаблонов и т.д.). ^ – (Frame buffer) Специально отведенная область памяти компьютера или отдельной платы для временного хранения данных о пикселях, требуемых для отображения одного кадра (полного изображения) на экране монитора. Емкость буфера кадра определяется количеством битов, задействованных для определения каждого пикселя, который должен отображать изменяемую область или количество цветов и их интенсивность на экране. ^ (или Z-буфер) - используется главным образом для определения перекрывающихся частей полигонов, составляющих ЗD-модель. В более сложных случаях он используется специальным алгоритмом для удаления невидимых линий (поверхностей). В общем случае представляет собой двухмерный массив, содержащий значения глубины расположения соответствующей точки на экране (Z-координату). В результате программа путем простого сравнения глубины расположения точек полигонов узнает, точку какого из них необходимо отобразить. Шейдер (shader) – графическая микропрограмма для CPU или GPU. Служит для определения окончательных параметров объекта или изображения. Это может включать в себя произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и эффекты пост-обработки. Различают вертексные (вершинные) и пиксельные (фрагментные) шейдеры. ^ - это программы, выполняемые видеочипами, которые производят математические операции с вершинами (vertex), иначе говоря, они предоставляют возможность выполнять программируемые алгоритмы по изменению параметров вершин и их освещению (T&L; - Transform & Lighting). Вершинные шейдеры, в зависимости от алгоритмов, изменяют эти данные в процессе своей работы, например, вычисляя и записывая новые координаты и/или цвет. То есть, входные данные вершинного шейдера - это данные об одной вершине геометрической модели, которая в данный момент обрабатывается. Очень простой и грубый (но наглядный) пример: вершинный шейдер позволяет взять 3D объект сферы и сделать из него красный куб. ^ позволяют программисту по шагам управлять процессом наложения текстур, определения глубины и вычисления цвета пикселей. Таким образом, во-первых, можно создавать в играх per-pixel lighting, т.е. попиксельное освещение. Во-вторых, позволяет создавать красивые эффекты с частицами (например, огонь, дым, капли дождя). Благодаря пиксельным шейдерам, кожа персонажей стала выглядеть естественнее, в играх можно наблюдать реалистичную поверхность воды, а также создавать определенные эффекты разрушения. Рендеринг (rendering) – называют процесс расчёта конечного изображения, которое выводится на экран. Как видно из определения, это понятие является обобщающим, т.е. охватывает всё то, что происходит в центральном процессоре (CPU) или графическом процессоре видеокарты (GPU) во время их работы над расчетом трехмерной картинки. ^ Anti-aliasing (фильтрация-Сглаживание). Явление Aliasing (которое в общем случае можно перевести, как «помеха дискретизации») возникает из-за несоответствия изображения рельного объекта и его представления в компьютере. В реальном мире объекты имеют сглаженные линии и контуры, монитор же может отображать лишь дискретные точки, т.е. пиксели. Так как пиксели имеют форму квадратов и равномерно закращиваются определенным цветом, линии объктов становятся зубчатыми или иначе говоря, ступенчатыми. Для борьбы с этой проблемой существует простейший метод – увеличение разрешения экрана, однако это неполное ее решение, так как мы не можем увеличивать разрешение до бесконечности. Зато можно применить алгоритм Supersampling, т.е дополнительную дискретизацию. Пиксель как бы разбивается на некоторое множество подпикселей и для каждого отдельно считается значение цвета, а затем они суммируются. При применении такого сглаживания фактически получается так, что изображение рассчитывается как бы при более высоком разрешении, поэтому это резко уменьшает производительность, но зато мы имеем более гладкие переходы цвета соседствующих пикселей на линиях объектов. ^ (сглаживание движения) – это метод, который решает следующую проблему. Допустим, у нас есть объект, достаточно медленно движущийся по сцене. По идее это должно происходить плавно, но из-за того, что мы наблюдаем трехмерное изображение, как бы через пиксельную сетку, часть объекта вместо этого резко дернется в сторону движения. Для борьбы с этим используется motion blur, т.е. смазывание в движении. ^ (смазывание в движении) происходит при фото- и киносъемке из-за движения объектов в кадре в течение времени экспозиции кадра. В трехмерной же анимации, в каждый конкретный момент времени (т.е. в одном кадре) объекты расположены по определенным координатам в трехмерном пространстве, аналогично виртуальной камере с бесконечно быстрой выдержкой. В результате, смазывание, подобное получаемому камерой и человеческим глазом при взгляде на быстро движущиеся объекты, отсутствует. Это выглядит неестественно и нереалистично. Motion blur также дает четкое представление о скорости и направлении движения объектов. ^ (глубина резкости), вкратце, это степень размытости объектов в зависимости от их положения относительно фокусного расстояния камеры. High Dynamic Range (HDR) в применении к 3D графике - это рендеринг в широком динамическом диапазоне. Динамаческим диапозон в данном случае относится к различным уровням экспозиции. Суть HDR заключается в аккуратном представлении широкого набора уровней интенсивности света, начиная от прямых солнечных лучей и заканчивая самыми темными тенями. ^ В двумерной графике мы привязывались к понятию «пиксель». В трёхмерной графике, помимо полигонов, образующих поверхность моделируемых объектов, существуют и другие подходы к созданию моделей. Первый из них – это Voxel, или, так называемая, воксельная графика. VoxelВоксель – это, по сути, трехмерный пиксель (слово voxel образовано из VOlumized piXEL, то есть «объемный пиксель»). Как и пиксель, он имеет свой цвет. Иногда воксель называют квантом объема. Любой объект в 3D, как из кубиков, составляется из вокселей. Так как каждый воксель передает свой цвет, необходимость в текстурах отпадает. Объекты из вокселей очень просто сделать разрушаемыми – ведь перемещение каждого элемента объекта при, скажем, взрыве рассчитывается по очевидным законам. Воксельные объекты очень просто анимировать – достаточно задать последовательность трехмерных кадров. Само собой, качество конечной картинки зависит от размера и формы вокселей. Чем они меньше – тем лучше. В идеале, даже в сложных криволинейных поверхностях они вообще не должны быть заметны. Форма вокселей подбирается из соображений производительности. Лучше всего выглядят воксели-сферы. Но их отрисовка довольно требовательна к ресурсам. В первых играх, которые использовали воксельную технологию, они были просто кубиками или даже плоскостями, повернутыми к наблюдателю. Из-за этого порой была заметна зернистость изображения и даже просветы между кубиками. В целом, воксельное представление трехмерного мира куда более естественно, чем полигональное. Картинка, полученная с использованием этой технологии, будет четкой и красивой. Это в теории. У вокселей есть два существенных недостатка:
NURBSВ природе отсутствуют идеально прямые линии и равномерные плоскости, она содержит различной формы и сложности кривые. Поэтому для моделирования растений, деревьев, животных и человека требовался метод, отличный от полигонального. Сокращение NURBS расшифровывается как Non-Uniform Rational B-Spline (Неравномерная рациональная кривая Безье), - это метод представления кривых, который получил дополнительную гибкость за счет узловых точек, находящихся на кривой. Некоторый из этих узлов можно как бы наделить большим весом так, что при изменении его координат, т.е при его перетаскивании в другое место за ним, как за магнитом потянутся другие точки. А если мы используем совокупность кривых, то получаем криволинейную поверхность. Графическая программа после просчета всех уравнений кривых, требуемых для формирования поверхности в заданной области, получает набор точек в трехмерном пространстве, из которых затем формируются полигоны. В первую очередь NURBS играют громадную роль в автоматизации проектирования (CAD-системы), так как позволяют инженеру или дизайнеру создавать и визуализировать требуемые формы будущего изделия. Также генерация поверхностей с помощью NURBS широко доступна в пакетах трехмерного моделировнаия. 3D-художник может поставить на поверхность столько опорных точек, сколько захочет, точнее на сколько хватит вычислительных ресурсов и памяти. Если он потом изменит положение одной из этих точек, все остальные точки поверхности будут рассчитаны так, чтобы в поверхности не образовалось разрывов. К сожалению, для NURBS пока нет аппартного ускорения и поэтому они редко используются в приложениях реального времени, хотя первая попытка интерактивного рендеринга с их помощью была предпринята рабочих станциях компании Silicon Graphics в 1989 году. Именно поэтому NURBS в компьютерных играх в рамках динамической обработки не используются. И, например, редко встречающиеся колыхания одежды или другой ткани обычно просчитаны заранее 3D APIВ современных 3D-ускорителях содержится больше транзисторов, чем в центральных процессорах Например, в видеокарте GeForce 8800 GTX их почти 700 миллионов, в то время как у ЦП Intel Core 2 Duo не больше 300 миллионов. У каждой видеокарты есть свой ассемблер и специальные команды, адреса и интерфейсы, через которые им можно управлять. У каждого конкретного ускорителя свои особенности, свои дополнительные команды. Далеко не факт, что программная последовательность для одного ускорителя будет работать на другом. Поэтому для упрощения программирования графики для GPU существуют 3D API (Application Program Interface - Программные Интерфейсы Приложения). Трехмерные программные интерфейсы приложения выполняют следующие функции:
OpenGLOpenGL (^ ) — это универсальная, аппаратно-независимая библиотека, которая поддерживает разнообразные 3D-объекты и конструкции, начиная с примитивов типа треугольника или линий и заканчивая NURBS. Основной язык программирования, использующийся в паре с OpenGL – это C/C++, однако существуют адаптации и для других, например Java. Программист, использующий OpenGL, не может ограничится лишь описанием сцены, он должен создавать код, учитывающий многие детали, требуемые для ее рендеринга. От него требуется достаточно глубокое знание этапов визуализации сцены, зато архитектура OpenGL дает возможность реализовывать нестандартные и оригинальные алгоритмы рендеринга. И еще одна деталь: в OpenGL есть интересный механизм расширений, когда любой желающий может добавить в библиотеку какие-то функции, не реализованные в базовой версии API. Например, какая-нибудь функция расширения компании Nvidia имеет название, которое заканчивается NV. Очень часто наиболее используемые расширения по решению большинства представителей ARB могут быть включены в официальную спецификацию. Также, начиная с версии 2.0 OpenGL получил встроенное дополнение под названием OpenGL Shader Language, что позволило программисту выбирать между использованием жестко прописанных функций, обеспечивающих работу вертексных и шейдерных блоков конвейера и программируемыми шейдерами. Важной особенностью OpenGL является кросс-платформенность, она доступна на многих операционных системах серий Mac OS, Windows, Linux, Unix и BSD. Это повлияло на то, что ядро OpenGL не поддерживает никаких функций обработки окон, вывода на экран или устройств ввода, для этого используются дополнительные библиотеки, например GLUT. ^ Direct3D – это элемент комплексной библиотеки DirectX, разработанной компанией Microsoft для расширения и универсализации мультимедийных возможностей разных версий ОС Windows, начиная с Win95. Рассматривая различные версии Direct3D, важно упомянуть версию 8.0, которая добавила поддержку шейдерных операций, что в результате вылилось в создание отдельного языка под названием HLSL (High Level Shader Language), доступного в уже в 9-ой версии. Версия же 10, встроенная в операционную систему Vista, позволило сделать также программируемым целиком сам конвейер рендеринга, отсюда и следует унификация шейдерной архитектуры, размытие четких граней между пиксельными и вертексными шейдерами. Преимущество по части популярности Direct3D перед OpenGL у разработчиков компьютерных игр образовалось в основном за счет исторических факторов: версии Direct3D, начиная с 5-ой были проще в использовании. OpenGL же требовал при создании на нем программы включения всех его элементов, даже если они не поддерживались аппаратно, поэтому приходилось дописывать множество дополнительных процедур. ^ Для начала посмотрим на интерфейс 3DS MAX 2009 Design Edition. Он не сильно отличается от предыдущих версий продуктов компании Autodesk. В сравнении с продуктами компании Adobe он разительно отличается, поскольку, по сути, предназначен для решения задач совершенно другого рода. Интерфейс состоит из нескольких основных блоков:
Третий блок – рабочая область. По сути – это есть область, в которой происходит создание, модификация и отображение объектов и эффектов. Рабочая область состоит из 4-х полей, каждая из которых отображает соответствующую проекцию сцены: фронтальную, ортогональную, боковую. Виды проекций можно менять. Так же сцену можно рассматривать с разных углов в ортогональной проекции. Такой подход является классическим для начертательной геометрии, где на чертеже отображались 3 проекции и перспективный вид объекта. ![]() ^ Под рабочей областью находится блок управления анимацией. В этом блоке есть таймлайн, элементы управления ключевыми кадрами и позициями камер. По традиции, над всеми областями находится меню, которое является основным элементом работы в 3DS MAX. ^ Как пример простого урока в 3DS MAX, создадим модель гитары. Для этого найдём фотографию необходимой нам гитары и повторим её форму. ![]() ^ Для начала поставим это изображение, как задний план для одной из рабочих областей. Для этого перейдём на рабочую область Top(кликнем на неё) и выберем в меню Views->Viewport Backgroung (горячая клавиша Alt+B). После этого обрисуем деку нашей гитары по контуру линией. Для этого выберем Shapes->Line в рабочем блоке. ![]() ^ После создания кривой её можно модифицировать, для этого перейти в панель модификации и выбрать Selection->Vertex. После этого можно выбирать и модифицировать точки линии и веса кривых Безье. Для перемещения точек и маркеров кривых выберите сверху кнопку Select and Move. ![]() ^ После этого нужно выделить получившуюся кривую и применить к ней модификатор Bevel в выпадающем списке Modifiers List и установить параметр Bevel Values->Level 1->Height на 10-15 пунктов. После создания объекта, можно немного сгладить получившиеся углы, применив модификатор TurboSmooth или MeshSmooth. ![]() ^ После создания деки, можно перейти к созданию примитивных объектов на поверхности гитары (ручек, тумблеров). Для этого создадим два объекта типа Circle (в панели Shapes, как и раньше). Один круг будет больше, другой – меньше. И создадим линию, как направляющую для объекта. После этого выделим один круг и применим к нему модификатор Loft (Compound objects->Loft). ![]() ^ В параметрах Loft выберите Path Parameters->Path и поставьте значение 50. После этого нажмите Get Path и выделите направляющую линию, после этого нажмите Get Shape и выберите меньший круг. Получится ручка. ![]() ^ Далее – скопируем полученную ручку 4 раза, как у настоящей гитары. Для этого выделите объект, зажмите кнопку Shift и переместите объект в любую из сторон. При таком копировании можно выбрать и количество копий. После создания копий разместите их на деке гитары. Для того, чтобы ручки легли ровно на поверхность применим Allign из блока быстрого управления (сверху). В параметрах выставим Align Position – “Y Position”, Current object – Minimum, Target Object – Maximum. ![]() ^ На следующем этапе смоделируем звукосниматели. Для этого воспользуемся пунктом Standard primitives и создадим объект типа Box (параллелепипед). Замечу, что создавать объекты можно как простым протягиванием до нужного размера, так и вводом численных значений с клавиатуры (пункт Keyboard entry). После создания объекта его параметры можно изменять. Так же, при создании необходимых нам объектов воспользуемся примитивом Chamfer Box из пункта Extended Primitives. Для позиционирования воспользуйтесь пунктами Select and Move, Select and Rotate и Select and uniform Scale. Результат будет следующий. ![]() ^ После этого, займёмся созданием струнодержателей. Создадим объект типа Box и второй объект, типа Chamfer Box, поместим один над другим, как это показано на рис 11. ![]() ^ После этого выберите Box, перейдите в меню Compound objects и нажмите Boolean, после этого нажмите Pick Operand B и выберите Chamfer Box, который расположен над параллелепипедом. В результате мы получим вырез под струны. Таких вырезов нам нужно шесть, поэтому необходимо скопировать их и поместить в соответствующие места на деке. ![]() ^ Всё теми же функциями добавляем гриф гитары. В этом уроке рассмотрены лишь основные моменты моделирования, в реальности для того, чтобы создать что-то более-менее нормальное, необходимо работать над каждым элементом подолгу – чтобы получить гладкий и красивый объект, в общем. ![]() ^ После создания объекта перейдём к его анимации – создадим камеру в соответствующем пункте рабочей панели с пиктограммой камеры. Существуют два типа камер – Free и Target. В данном случае мы возьмём камеру типа Target. У камеры, как и у любого объекта, есть свои параметры: фокусное расстояние, диафрагма (если вы применяете эффект Depth of Field). ОсвещениеПосле этого создадим источник света, в панели ^ . При установке дополнительных рендереров у вас появятся дополнительные источники света. В нашем случае, воспользуемся обычным Target Light. У источников света, в свою очередь, тоже немало параметров: интенсивность, температура, тип теней, форма источника, эффекты от источника. ТекстурированиеНа следующем этапе наложим на модель текстуры. Для этого выберем всю гитару целиком и нажмём горячую клавишу «M». ![]() ^ В этом пункте меню можно выбрать материалы из коллекции готовых, попробовать создать свои материалы и интегрировать материалы из библиотек. Для нашей гитары возьмём материал Solid Glass (Стекло). И применим его к объекту кнопкой Assign Material To Selection. АнимацияПосле этого можно перейти к анимации сцены. 3D Studio Max имеет обширные возможности по анимированию единичных и групп объектов, в нашем случае мы просто заставим двигаться камеру вокруг объекта. Для этого выделим камеру и в панели снизу нажмём кнопку Auto Key. После этого перемещаем бегунок счёта кадров на необходимые позиции и в этих позициях меняем положение камеры. Для того, чтобы камера двигалась вокруг объекта, создадим линию, по которой она будет двигаться. Допустим, это будет простая окружность. Перемещаем её на уровень камеры в соответствующей плоскости так, чтобы окружность охватывала объект. После этого выбираем камеру и кликаем на пункт меню Animation->Constraints->Path Constraint. Как путь выбираем окружность. После такого шага у нас автоматически появляется анимация, состоящая из движения камеры по окружности за определённое кол-во кадров. ![]() ^ Красными обозначены ключевые кадры, если перетаскивать их в стороны – то анимация будет происходить раньше или позже, в зависимости от того, в какую сторону был сдвинут ключевой кадр. В принципе, такого рода анимация весьма похожа на Flash, хотя обладает своими особенностями. Для того, чтобы принудительно назначить объекту ключевой кадр – необходимо нажать Set Key, предварительно выбрав нужный вам по положению кадр. В такого рода анимации можно изменять положение и параметры объектов, а так же работать со слоями и прозрачностью в видеоизображении. РендерингФинальной частью создания анимированного фильма в среде 3DS MAX можно считать Render. Предварительно нужно выбрать, с какого вида будет обрабатываться изображение. После выбора перейдите в окно Rendering->Render Setup (F10) для настройки параметров рендера. В этих настройках можно менять разрешение кадра, количество кадров, эффекты при рендере и сам рендерер. Для того, чтобы создать видео – нужно выбрать Active time segment в блоке Time Output, а так же в блоке Render Output выбрать название и тип файла, который будет служить выходом процесса обработки видео. После этого нажмите большую кнопку Render и отправляйтесь пить чай. ![]() ^ Стоит отметить, что существуют различные сторонние рендереры, со своими специфическими свойствами. К примеру, обработчик VRay даёт отличную картинку с учётом физических особенностей света. Зато обработка видео в таких рендерерах сводится почти на нет без привлечения огромной производительной мощности. ^
Учебное издание ^ Составители: КОРОЛЁВ Денис Александрович СОБОЛЕВСКИЙ Алексей Александрович Редактор Технический редактор Подписано в печать . Формат 60х84/16. Бумага офсетная № 2. Ризография. Усл.-печ.л. 1,1. Уч.-изд.л. 0,9. Изд.¹55. Тираж 75 экз. Заказ . Бесплатно. Московский государственный институт электроники и математики. 109028, Москва, Б. Трехсвятительский пер. 3/12. Участок оперативной полиграфии Московского государственного института электроники и математики. 113054, ул. М. Пионерская, 12. |
![]() | ![]() | ||
![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... | ![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... |
![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... | ![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... |
![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... | ![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... |
![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... | ![]() | Государственное образовательное учреждение институт электроники высшего профессионального образования Московский Государственный... |