Тема | Задача | Содержание задачи |
---|---|---|
1 | 1 | Анимация положения текста в HTML-документе средствами JavaScript. |
1 | 2 | Вывести, используя линии (точки), прописную букву русского алфавита (А, Б, ..., Я). (Берется буква с номером, равным номеру студента в списке группы.) Прежняя задача. Анимация цвета, положения и прочих свойств текста и содержащего его контейнера в HTML-документе средствами JavaScript. |
2 | 3 | Программирование движения сферы по сторонам прямоугольника. |
2 | 4 | Создание и воспроизведение 3ds Max avi-файла в HTML. |
2 | 192 | Дружба. Начальная и конечная вершины соединяются по двум маршрутам разноцветными растущими цилиндрами. При отображении вершин следовать фильму. |
2 | 221 | Крышка чайника перемещается по дуге, "приземляется" на сферу, стоящую на усеченном конусе, и остается на ней последние 30 кадров анимации. |
2 | 222 | Растущие, убывающие и перемещающиеся прямоугольные параллелепипеды и сферы. Рост - 25 кадров; пауза - 10 кадров; смещение в центр - 20 кадров; пауза - 10 кадров; убывание - 25 кадров; пауза - 10 кадров. |
2 | 223 | Две полусферы с текстурой Checker перемещаются по окружностям, начиная и заканчивая движение в точке [0, 0, 0] (см. фильм). При движении меняется число повторов (tiling) текстуры. |
3 | 44 | Анимация вершин объектов Editable_Mesh, Editable_Poly, Editable_Patch и NURBSSurf (разд. 1.9). Для анимации Editable_Patch используется модификатор Morpher (разд. 2.10.3). Уточнение: mr = morpher autoload_Of_Targets:1; addModifier node mr |
4 | 5 | Средствами MAXScript на оси Y помещаются N стандартных примитивов (N > 3). Затем N - 3 раз генерируется случайное положительное число, не превышающее число примитивов, и из коллекции Geometry после MessageBox-сообщения удаляется соответствующий примитив (m = random 1 geometry.Count; ...; delete geometry[m]). Решение оформляется в виде функции в двух вариантах: с if и case (разд. 1.1.16). |
4 | 172 | Перекаты. Воспроизвести, используя MAXScript, показанную сцену (фильм 0.1). Анимационный интервал устанавливается равным 400 (вместо 100). animationRange = interval 0f 400f Число разбиений площадки 4 * 4. Параллелепипеды растут в каждой ячейке. При росте их боковая сторона уменьшается в 4 раза; при убывании восстанавливается. Площадка задается как плоскость, например: pln = plane length:120 width:120 pos:[0, 0, 1] Высота и цвет генерируются случайным образом, например: bx.wireColor = color (random 0 255) (random 0 255) (random 0 255) bx.height = random 20 60 где bx - это идентификатор параллелепипеда. Для оптимизации кода все параллелепипеды можно записать в массив: delete $* arrB = #() for i = 0 to 3 do ( x = 30 * i - 45 for j = 0 to 3 do ( y = 30 * j - 45 arrB = append arrB (box pos:[x, y, 0] height:20 length:30 width:30 wireColor: (random [0, 0, 0] [255, 255, 255])) ) ) |
5 | 6 | Анимация перемещения объекта, меняющего форму, по окружности. Употребляются следующие выражения MAXScript: if, case, while, for, function, animate, at time, max и др. (разд. 1.1.16). |
5 | 134 | Программирование анимации сферы, перемещающейся в положительном направлении оси X и увеличивающей свой объем в 3 раза, а затем возвращающейся в исходную точку и уменьшающей площадь своей поверхности в 2 раза. |
5 | 199 | Противостояние. Частицы от двух источников летят на встречу друг другу по оси Х, тормозятся при встрече. Затем после некоторой паузы зеленые частицы выталкивают синие в отрицательном направление оси Х, а затем синие частицы после некоторой паузы выталкивают зеленые в положительном направлении оси Х. |
6 | 9 | Программирование анимации параметрических модификаторов Bend, Taper (2 варианта), Twist, Noise, Stretch (2 варианта) и Squeeze (разд. 2.1). Для демонстрации создается форма с кнопками Bend, Taper и так далее. Анимация запускается после нажатия на соответствующую кнопку. |
6 | 10 | Программирование анимации параметрических модификаторов Push, Relax, Ripple, Wave, Skew, Slice и Spherify (разд. 2.1). Для демонстрации создается форма с кнопками Push, Relax и так далее. Анимация запускается после нажатия на соответствующую кнопку. |
6 | 11 | Программирование анимации параметрических модификаторов Affect Region, Mirror, Displace под управлением Gizmo, Displace под управлением Image, XForm и Shell (разд. 2.1). Для демонстрации создается форма с кнопками Affect Region, Mirror и так далее. Запуск анимации после нажатия на соответствующую кнопку. |
6 | 14 | Программирование (без анимации) параметрических модификаторов Lattice, Substitute и Preserve (разд. 2.1). Для демонстрации создается форма. |
7 | 111 | Программирование rollout-секции c радиокнопками выбора фигуры (куб, сфера, цилиндр, конус) и кнопкой вывода фигуры в заданной точке пространства (разд. 1.12.1). |
9 | 12 | Перемещение мышкой произвольного блока на странице с двумя или более блоками (JavaScript). |
9 | 13 | Перемещение мышкой движущегося блока с его возвратом после освобождения мышки в позицию, предшествующую началу перемещения (JavaScript). |
9 | 15 | Цвет div-блока меняется в зависимости от положения мышки, перемещаемой по блоку. Форма курсора - Pointer (JavaScript). |
9 | 18 | Выполнить следующие действия: - вывести оси координат штрих-пунктирной линией; - вывести, используя GL_LINE_LOOP, правильный пятиугольник; - в его центре вывести сглаженную точку; - в его вершинах вывести несглаженную точку; - внутри пятиугольника вывести лицевую сторону треугольника (использовать draw); - вывести нелицевую сторону прямоугольника, охватывающего пятиугольник (использовать glBegin / glEnd); - при выводе треугольника и прямоугольника задать в их вершинах разные цвета. В процедуре on_key_press предусмотреть следующие действия: - вывод осей координат сплошной линией; - отказ от интеполяции цветов; - вывод лицевой стороны в виде точек, а нелицевой в виде ребер; - отказ от сглаживания точки; - возврат к исходной сцене. Замечание. Вместо пятиугольника группа А-13 выводит окружность; А-16 - правильный семиугольник; А-14 - правильный девятииугольник. Прежняя задача. Задачи на последней лекции. Прежняя задача. Построение таблицы с произвольным числом строк и столбцов и с обработчиком onClick, изменяющим цвет ячейки (JavaScript). |
10 | 43 | Разрушение Editable_Poly-плоскости по ребрам (фильм 18.11). Использовать следующие polyop-методы: getEdgesUsingVert, getVertsUsingEdge, getElementsUsingFace, deleteEdges и detachFaces. |
10 | 63 | Создание 3d-поверхности по известному растровому образу с употреблением аффинных преобразований и операций Extrude Faces (разд. 2.16.1), Bevel Faces (разд. 2.6.3) и Connect (разд. 2.16.3), а также модификатора TurboSmooth (разд. 2.8.3). |
11 | 17 | Формирование (программирование) 3d-поверхности вращения на основе плоского сплайна (разд. 2.7.7, модификатор Lathe). |
12 | 19 |
Выводятся, применив GL_QUAD_STRIP, лицевые стороны двух смежных прямоугольников. Вершины общей стороны имеют Z-координату, равную нулю. Z-координата прочих вершин меньше нуля (угол между четырехугольниками не более 120 градусов). Проецирование выполнить, повернув изображение на 30° относительно оси X и на 10° относительно оси Y. (см. рис. в http://100byte.ru/python/pyglet_gl/pyglet_gl.html#q3) Задаются материал, источник света и рассчитываются нормали к граням. Вывод осуществляется с использованием освещенности (после нажатия на 1) и без нее (после нажатия на 2). Вывести нормали к граням в виде линий (по одной нормали к грани). В вершинах, в которых отображаются нормали, вывести сглаженные точки. Пример без точек см. на http://100byte.ru/python/pyglet_gl/pyglet_gl.html#q3 (изображение с двумя нормалями). Рассчет нормалей см. http://100byte.ru/python/pyglet_gl/pyglet_gl.html#p8 после рис. 15. import numpy as np n = np.cross(a, b) # Векторное произведение n = n / np.linalg.norm(n) # Нормализация или n = n / np.sqrt(np.sum(n**2)) # Нормализация А-14-18 вместо двух прямоугольников выводит GL_TRIANGLE_FAN - веер треугольников (в веере не менее 3-х треугольников). Z-координата общей вершины веера равно нулю. Z-координаты прочих вершин меньше нуля. Прежняя задача. Поиск и отображение пути в таблице с препятствиями между двумя ячейками посредством лучевого или волнового алгоритма (JavaScript). |
12 | 201 | Лучевой алгоритм. Код для начала задачи 182. arrClss = #('Sphere', 'Teapot', 'Cylinder', 'Cone', 'Tube', 'Torus', 'Box', 'Pyramid') arrCnt = #() for clss in arrClss do ( cnt = 0 for obj in geometry do if classOf obj == clss do cnt += 1 append arrCnt cnt ) mx = amax arrCnt indMX = 0 for k = 1 to arrClss.count do ( if arrCnt[k] == mx do ( indMX = k; exit ) ) clssMx = arrClss[indMX] for obj in geometry do if classOf obj != clssMx do delete obj |
13 | 20 | Создание кода, выводящего координаты вершины 3D-модели объекта (Editable_Mesh, Editable_Poly, Editable_Patch, NURBSSurf, Editable_Spline, NURBSPointCurve) в разных системах координат (разд. 1.9, 2.10.8 и 2.10.10). |
14 | 45 | Анимация перемещающегося пропеллера (разд. 1.13). |
14 | 49 | Нарисовать дугу (примитив Arc) между двумя случайно выбранными вершинами сферы (угол между векторами v1 и v2 вернет выражение acos(dot (normalize v1) (normalize v2))). |
14 | 55 | Программирование анимации размещения букв на сторонах куба. |
14 | 152 | Вычислить площадь треугольника по известным координатам его вершин. |
14 | 195 | Полетаем. Использовать Link, Group (для лопастей) ProBoolean. Анимация создается для одного пропеллера. Прочие получаются копированием. |
14 | 205 | Воспроизвести показанный в фильме рисунок. Замерить, а затем вычислить длину отрезка, соединяющего точку Po окружности радиуса R с точкой Pe окружности радиуса R + ho при заданном угле между отрезком и осью x. Вычисления выполнить в декартовой системе координат с началом в точке Po. Центры обеих окружностей расположены в точке Pc указанной на рисунке системы координат. Пояснение: известны R, ho, координаты точек Pc и Po в указанной на рисунке системе координат и угол α. Сравнить замеренную и вычисленную величины. При построении принять α = 30°. |
15 | 7 | На распутье. Объект перемещается по траектории до распутья, где нужно выбрать одну из трех траекторий. Длина анимационного интервала - 200f, а время, потраченное на выбор, равно 60f. В это время объект увеличивает свой объем, а затем приобретает исходную форму. Выбор осуществляется случайным образом. Выбранный участок подсвечивается, и объект возобновляет движение по выбранному участку. |
15 | 21 | Программирование анимации с ограничением Path_Constraint при выборе в качестве пути сплайна, а затем NURBS-кривой (см. стр. 62, 88, 150 и 236 пособия. Программное добавление ключей. Пример кода: pc = path_Constraint(); ... addNewKey pc 30; pc.Percent.Keys[2].Value = 60 |
15 | 53 | Программирование разнонаправленного движения меняющей цвет сферы по меняющему размер эллипсу (разд. 2.1.18, пример кода см. в задаче № 21). |
15 | 76 | Kiss. Две сферы разнонаправлено перемещаются по окружности, а третья сфера - по прямой, проходящей через центр окружности и начальную позицию двух первых сфер. После встречи движение сфер приостанавливается и после небольшой паузы две первые сферы взрываются, а третья возвращается назад. |
15 | 121 | Программирование разнонаправленного движения объекта по эллиптической траектории с использованием ограничения Path_Constraint (разд. 2.1.18, пример кода см. в задаче № 21). |
15 | 142 | Встреча. Два растущих объекта (применяется модификатор PathDeform WSM, разд. 2.10.10), встречаются и после нескольких попыток разойтись, возвращаются к своим исходным размерам. |
15 | 146 | С промежутком в 50f в начале пути (окружности) появляются сферы разного цвета. Каждая сфера проходит путь за 50f и останавливается. В конце пути сферы располагаются на окружности с некоторым интервалом. |
15 | 148 | Пошептались. По пути, похожему на синусоиду, навстречу друг другу перемещаются 2 сферы. Первая использует карту Checker, а вторая - Marble (tiling-параметры карт равны 4). Изначально сфера с картой Checker вращается, а с картой Marble - нет. После встречи сферы на некоторое время замирают, а затем начинают движение вспять. При этом вращается сфера Marble, а сфера с картой Checker перемещается без вращения. Базовая точка каждой сферы (свойство pivot) помещается вне сферы недалеко от случайно выбранной вершины сферы. |
17 | 56 | Подобрать материал, обеспечивающий интерполяционную заливку полигона (см. рис. 8) |
17 | 88 | Создание анимации телевизионной заставки с использованием динамической bitmap-карты, направленного источника света с динамической projectorMap-картой и объемного света. |
17 | 89 | Программирование анимации телевизионной заставки с использованием динамической bitmap-карты, направленного источника света с динамической projectorMap-картой и объемного света. |
17 | 135 | Заливка невыпуклого многоугольника. |
17 | 157 | Подарок. На сторонах куба поочередно воспроизводятся разные материалы (употребляется карта bitmapTexture). |
17 | 161 | Истина. Треугольники, залитые разными материалами, перемещаются на периферию и открывается скрытый ими образ. |
17 | 162 | Чайник. |
17 | 163 | Большой чайник. |
17 | 164 | Шахматы. |
17 | 165 | Бокал. |
17 | 166 | Бокал "Красное и белое". |
17 | 167 | Бокал "Красное и белое" с вином. |
17 | 168 | Бокал на черном. |
17 | 169 | Бокал "Загадка". |
18 | 22 |
Записать в файл, используя Python-программу, эпизод симуляции перевернутого маятники (длина эпизода не менее 100 кадров), а затем графически отобразить эту симуляцию. Прежняя задача Анимация мячика, прыгающего по ступенькам (разд. 2.16, фильм 4.10). |
18 | 23 | Движение игрушечного автомобиля по дороге с кочками (для задания неровностей применяется модификатор Wave, разд. 2.1.10). |
18 | 25 | Задача №16, или 22, или Применение модификатора reactor (одежда и мягкое тело, разд. 2.16.1 - 2.16.3). |
18 | 91 | Анимация дрожащего листа средствами reactor с употреблением ограничения Point_Point (разд. 2.16). |
18 | 93 | Программирование анимации колокола средствами reactor с употреблением ограничения Rope (разд. 2.16). |
19 | 26 | Создать плоскость с числом сегментов 5х5 и с размерами 100х100. Увеличить Z-координату каждой вершины плоскости, номер которой кратен 4, на величину, случайно выбранную из диапазона 30 - 40 единиц. Уменьшить Z-координату каждой вершины плоскости, номер которой кратен 5, на 30 единиц. Удалить вершину с наименьшим положительным смещением. К полигонам с номерами 4 и 5 применить модификатор Twist. Результат анимируется (разд. 1.9). |
19 | 27 | В форме имеется таблица с M * N ячейками и три кнопки разного цвета. После нажатия на кнопку часть ячеек таблицы (не более 10 %) закрашивается цветом нажатой кнопки. Положение закрашиваемых ячеек определяется случайным образом. Процесс может продолжаться, пока имеются нераскрашенные ячейки (JavaScript). |
19 | 28 | Перемещение. В сцене случайным образом размещаются N сфер со случайно выбранным цветом. Радиус сфер случайным образом берется из диапазона 15 - 18 единиц. Поместить группы пересекающихся сфер и оставшиеся одиночные сферы в вершинах правильного M-угольника, где M - это число групп пересекающихся и одиночных сфер. Результат анимируется. |
19 | 29 | Три объекта перемещаются по пути в виде чередования спусков и подъемов. Обеспечить ускорение движения объекта при прохождении спуска и замедление при подъеме. |
19 | 30 | В сцену вводятся три сферы. Используется стандартный материал с диффузионной картой Checker. Базовая точка каждой сферы перемещается в случайно выбранную вершину полигональной модели объекта. Обеспечить поворот каждой сферы на угол, случайно выбранный из диапазона 360 - 720 градусов, вокруг ее базовой точки и одновременное перемещение сфер по незамкнутому сплайн-пути. В момент t = 0 сферы равномерно распределены по пути следования. |
19 | 31 | В сцену вводятся 8 примитивов Box с достаточно большим числом полигонов. Цвет примитива выбирается случайным образом из значений [135, 110, 8] и [6, 135, 113]. Применить к нижней половине примитива первого цвета модификатор Bend, а к верхней половине примитивов другого цвета - модификатор Twist. Результат анимировать, меняя во времени параметры модификаторов и положение их габаритного контейнера Gizmo. |
19 | 32 | По пути, созданному в виде NURBS-сплайна, перемещаются 3 объекта, меняя свой цвет в следующих последовательностях: "красный - синий - зеленый - красный", "синий - зеленый - красный - синий" и "зеленый - красный - синий - зеленый" соответственно для первого, второго и третьего объектов. |
19 | 33 | Создать из четырех сфер модель системы Звезда - Планета - Спутник Планеты - Спутник Спутника. В модели Звезда вращается вокруг своей оси. Для Звезды используется стандартный материал с диффузионной картой Checker. Планета вращается вокруг Звезды по эллиптической траектории. Спутники перемещаются по окружностям. Наблюдение ведется из камеры, расположенной на положительной части оси Z, вращающейся вокруг этой оси и направленной в центр Звезды. |
19 | 34 | Создать образ "дышащего" куба, применив к видимым сторонам примитива Box модификаторы Displace. Результат анимировать, меняя во времени позицию Gizmo модификаторов. Для выбора граней употребить нужное число раз модификатор Mesh_Select и метод SetFaceSelection. |
19 | 35 | Сформировать на базе цилиндра посредством модификатора Taper стрелу с коническим наконечником. К части наконечника применить модификатор Spherify. Для выбора части наконечника применить модификатор Mesh_Select. Результат анимировать, меняя во времени параметры Amount и Percent соответственно модификаторов Taper и Spherify. Также обеспечить при анимации вращение объекта воруг оси Y. Для выбора граней употребить нужное число раз модификатор Mesh_Select и метод SetFaceSelection. |
19 | 36 | Применить к одной половине примитива Plane модификатор Affect Region, а ко второй - модификатор Displace с планарной картой. Результат анимировать, меняя во времени для модификатора Affect Region положение подобъекта Points и значение параметра Falloff , а для модификатора Displace позицию его Gizmo и значения параметров Length, Width и Strength. Для выбора граней употребить нужное число раз модификатор Mesh_Select и метод SetFaceSelection. |
19 | 37 | Сфера перемещается по пути в виде NURBS-сплайна. При этом геометрия пути и координаты его базовой точки меняются (в начале анимации путь - это прямая линия, в конце анимации - это линия, напоминающая синусоиду. Также во время анимации меняется цвет сферы и ее значение ее радиуса. |
19 | 38 | В таблице с числом ячеек 10х10 случайным образом размещаются N (N > 30) шаров красного, синего и зеленого цветов. Выстроить все шары в три линии, размещая в каждой из них шары одного цвета. Позиция выбранного шара в линии задается мышкой. Ячейка с выбранным шаром меняет цвет и восстанавливает его после перемещения шара в указанную позицию (JavaScript). |
19 | 39 | В сцене случайным образом размещаются N цилиндров с цветом, случайно выбранным из трех цветов. Радиус и высота цилиндров случайным образом берутся соответственно из диапазонов 5 - 8 и 30 - 60 единиц. Расположить цилиндры одного цвета в вершинах синусоидальной линии произвольного цвета. Число вершин в линии равно числу располагаемых на ней цилиндров. Применить к цилиндрам первой линии модификатор Bend, к верхней части цилиндров второй линии - модификатор Spherify, а к нижней половине цилиндров третьей линии - модификатор Push. Результат анимируется. |
19 | 40 | Конусы. В сцену вводится куб и случайным образом N конусов (N > 4), радиусы оснований и высота которых случайным образом выбираются соответственно из диапазонов 5 - 8 и 30 - 60 единиц. Расположить 4 конуса с наименьшими высотами в вершинах верхней стороны куба, направив высоту каждого конуса к центру куба. Прочие конусы разместить в вершинах расположенной перед кубом линией, упорядочив конусы по высоте. Число вершин линии равно числу размещенных на ней конусов. Результат анимируется. (Фильм 17.14 или 7.13 конкурса MAXScript-анимация). Сортировка массива конусов выполняется функцией qsort, использующей, например, функцию cmpH (см. ниже). Пример быстрой сортировки конусов по высоте: -- Вспомогательная функция - параметр функции qsort fn cmpH v1 v2 = ( dH = v1.Height - v2.Height case of ( (dH < 0.): -1 (dH > 0.): 1 default: 0) ) delete $* -- Создаем массив из 10 конусов с различной высотой arrCn = #() for k = 1 to 10 do append arrCn (cone radius1:10 radius2:0 height:(random 30 60) pos:(random [-80, -80, 0] [80, 80, 0])) -- Сортируем, используя функцию cmpH, массив конусов по их возрастанию высоты qsort arrCn cmpH -- Печатаем высоту конусов отсортированного массива for k = 1 to 10 do print arrCn[k].height |
20 | 41 | Освоение интерактивных методов анимации свойств и координат объектов: анимация радиуса сферы; анимация позиции, угла поворота и коэффициента масштабирования; ограничение Path_Constraint (разд. 1.16.1, 2.1.18, 2.10.10); анимация цвета; анимация MeshBomb; анимация свободной и направленной камер; пример из Dynamics. |
20 | 42 | Программирование анимаций, показанных в фильме 2 (разд. 1.11, 1.14 и 1.16). |
20 | 52 | Программирование анимации часов. |
20 | 176 | Выстрел. Сфера выдвигается в отрицательном направлении оси Х из открывающегося куба и взрывается на 75-м кадре (всего в сцене 100 кадров). |
20 | 178 | Время. Маятник в крайних положениях генерирует частицы. В конце анимационного интервала маятник разрушается. (Использовать связывание объектов.) |
20 | 179 | Постригли и нагнули. В вершинах плоскости устанавливаются конусы. Далее верхушка конуса усекается, а конус наклоняется. Усечение и наклон конуса анимируются. Плоскость имеет 36 вершин. Для усечения конуса употребить модификатор Slice, а для наклона - Bend. |
21 | 48 | Программирование анимации вертолета, поражающего цель (разд. 1.13 и 1.16). Модель вертолета создается интерактивно без программирования. Пример кода для mesh-бомбы: bm = bomb strength:0.05 gravity:-0.1 detonation:35 minFragmentSize:1 maxFragmentSize:10 spin:15 pos:bx.Pos chaos:5 bindSpaceWarp bx bm где bx - идентификатор разрушаемого объекта. |
21 | 61 | Программирование анимации роста superSpray-кактусов с употреблением составного объекта Mesher и модификатора Bend (разд. 1.7 и 2.1.1. |
21 | 67 | Создание анимаций вихря (Super Spray и Vortex), кольца частиц вокруг сферы (Super Spray, BlobMesh и Scatter) и лучей частиц (Super Spray, Mesher и Scatter на сфере). |
21 | 70 | Программирование shapeMerge-анимации звезды на сфере с употреблением источника света, линзы и атмосферного эффекта Volume Light. |
21 | 198 | Оружие пролетариата. Использовать SuperSpray, ShapeMerge, Mesher, преобразование в EditablePoly, Spherify (для части объекта), Bomb, свойство opacity создаваемых материалов, модификатор Noise и пр. |
21 | 208 | Исход. В первом фильме употребляются куб, Loft, PArray и ShapeMerge. Во втором - плоскости как отражатели UDeformers, PArray и ShapeMerge. При создании ShapeMerge-объекта следить за ориентациями плоскостей и форм (окружностей). |
22 | 54 | Программирование анимации разрушения чайника одновременно средствами MeshBomb и PArray совместно с PBomb (фильм 4.5). Замечание. В обоих случаях установить время взрыва на 25-м кадре и использовать Spin. |
22 | 57 | Программирование анимации разрушения чайника при его соударении с плоскостью и программирование последующей анимации сборки чайника из полученных при его разрушении фрагментов. Пример кода для реверсирования ключей анимации: frPC = frM.Pos.Controller; supportsTimeOperations frPC; reverseTime frPC animationRange #incLeft #incRight. Замечание. В текущем семестре программируется только разрушение чайника; сборка добавляется интерактивно. |
22 | 59 | Программирование анимации заполнения емкости (куба) blizzard-частицами с использованием отражателей. |
22 | 159 | Пусть сильнее грянет кризис. Средствами PArray и Mesher банкнота делится на фрагменты и выполняется их анимация. |
22 | 196 | Равновесие. Использовать SuperSpray и Mesher. Все действия выполнить для одной пары объектов (Mesher и Cylinder); прочие добавить копированием. Для согласования положений частиц и нависающего цилиндра в его в анимационную кривую можно добавлять дополнительные ключи, например: z_posCntrl = $.pos.controller.z_position.controller addNewKey z_posCntrl 12 а также управлять касательными в ключевых точках, например: $.pos.controller.z_position.controller.keys[1].outTangentType = #linear $.pos.controller.z_position.controller.keys[1].outTangentType = #fast |
23 | 60 | Воспроизведение огня средствами системы частиц PArray и VideoPost (событие Image Filter c фильтром Lenz Effects Glow). |
24 | 24 | Анимация тумана: туман сгущается, а затем исчезает. |
24 | 68 | Создание анимации объемного тумана (Volume Fog) и света (Volume Light). |
24 | 69 | Создание shapeMerge-анимации с употреблением источника света, снабженного линзой (Star Lens Effects, дома програмируется анимация сплайна и линзы Star). |
24 | 71 | Создание анимации огня, взрыва и дыма с употреблением атмосферного эффекта Fire Effect и сферического помощника SphereGizmo. При создании дыма применяется система частиц Particle Flow с оператором Script_Operator, в котором частицы заменяются SphereGizmo. |
24 | 79 | Анимация объемного света, освещающего надпись на плоской поверхности. |
24 | 113 | Программирование анимации дыма. При создании дыма применяется система частиц Particle Flow с оператором Script_Operator, в котором частицы заменяются SphereGizmo. |
25 | 72 | Моделирование движения гусеницы технического средства при помощи решателя Spline IK Solver. |
25 | 149 | Snake. Модель змеи создается средствами Spline IK Solver и Skin, а также при помощи spacePathDeform. |
26 | 73 | Моделирование стеклянных изделий средствами стандартного материала и карты Falloff. Прозрачность обеспечивается следующим материалом: flF = falloff color1:black color2:white type:2 flF2 = falloff color1:black color2:[185, 185, 185] type:1 std = standard diffuseMap:flF opacity:30 opacityMap:flF2 specularLevel:90 glossiness:30 soften:0.1 showInViewport:true diffuseMapEnable:true opacityMapEnable:true. Для создания тени вводится источник света, в котором свойство castShadows имеет значение true. |
26 | 78 | Программирование анимации ландшафта местности средствами материала Multimaterial (разд. 2.9.1) и карты Gradient Ramp. |
26 | 84 | Программирование прозрачного изделия средствами стандартного материала и карты Falloff с употреблением источника света, создающего тень. |
26 | 115 | Анимация диффузионной компоненты материала Multimaterial (Multi/Sub-Object) с ID = 1 (выполняется на примере сферы, всего Multimaterial содержит 2 материала). |
26 | 186 | Красный квадрат. Полосы разного цвета последовательно приобретают красный цвет. Использовать Multimaterial (Multi/Sub-Object). |
26 | 197 | Бездействует графин хрустальный. Использовать Lathe, Multimaterial (Multi/Sub-Object), ID материала, копирование объектов. Для обеспечения прозрачности можно употребить приведенный в задаче 73 код. |
27 | 74 | Воспроизведение сферы с различными наборами групп сглаживания (разд. 2.6.6). |
27 | 114 | Воспроизведение сферы с модифицированными нормалями. |
28 | 75 | Моделирование колебаний мембраны динамика средствами управляющего элемента Audio Position. |
28 | 80 | Анимация полета бабочек средствами управляющего элемента Noise Float и системы частиц Blizzard. |
28 | 81 | Анимация мигающих лампочек при помщи управляющего элемента Float Expression. |
28 | 82 | На круге. Лампочки, расположенные на окружности, с некоторым интервалом зажигаются, а затем гаснут в обратном порядке. |
28 | 83 | Программирование с использованием Float Script анимации значения свойства Radius сферы как функции от значения свойства Percent пути, по которому перемещается примитив Box. |
28 | 102 | Связывание параметров (Wire Parameters) конуса и сферы (разд. 2. 3): R = 0.5 * H; Z_Position = 1.5 * H (R - радиус сферы, H - высота конуса, Z_Position - Z-координата центра сферы). |
28 | 112 | В каждом углу квадрата расположена сфера. Каждая сфера дискретно в точках 25f, 50f и 75f меняет число сегментов, радиус и прозрачность. При этом сферы 1 и 3 в каждой точке увеличивают значение параметра в 2 раза, а сферы 2 и 4 уменьшают. Минимальные значения параметров: Segs = 4; Radius = 5, Opacity = 0.12. В точке 100f сферы восстанавливают начальные значения измененных свойств. |
28 | 138 | Красный квадрат. Первоначально полигоны плоскости имеют черный цвет, затем в процессе анимации они в случайно выбранном кадре меняют цвет и сохраняют его в течение 10 кадров. Далее полигон принимает красный цвет. (Применяется контроллер point3_expression, управляющий свойством diffuse компонента материала multimaterial.) |
30 | 104 | Прыгающий на плоскости мячик с контроллером Scale_Reactor, обеспечивающим сжатие мячика при его соударении с плоскостью. |
30 | 105 | Связь объектов посредством контроллера Position_Reactor, обеспечиающая движение второго объекта по сторонам прямоугольника при движении первого объекта по прямой. |
31 | 77 | Построение модели лодки средствами составного объекта Loft (Get Path, Make Symmetrical отключен, деформация Fit по Y, деформация Fit по X, Get Shape в Path = 0, TurboSmooth и Relax). |
31 | 85 | Создание средствами Loft подушки (используется деформация Fit) и анимации объема подушки. |
31 | 86 | Создание средствами Loft ложки (используется деформация Fit). |
31 | 87 | Создание вазы и лодки. Употребить: 1. FFDCyl (только для вазы) с использованием преобразования Scale и составного объекта Boolean (разд. 2.1.12, фильм 10.4). 2. FFDCyl (только для вазы) с преобразованием в Editable Mesh и удалением вершин на верхушке. 3. Loft (для вазы и лодки). Завершить модель добавлением Shell и TurboSmooth. |
31 | 46 | Создание пуговицы средствами ProBoolean. |
31 | 194 | Надавили. Использовать Loft. |
32 | 90 | Анимация шторы средствами модификатора Cloth (разд. 2.15). |
32 | 120 | Анимация скатерти и флага средствами модификатора Cloth. |
32 | 155 | Десерт на полусфере. Результат обеспечивается модификатором Cloth. |
32 | 173 | Мячик падает на полотно из хлопка. |
33 | 94 | Соединение анимаций двух Biped средствами Motion Flow и Mixer. |
33 | 95 | Употребление модификатора Skin; в качестве костей берутся компоненты Biped (разд. 2.10.1). Biped с целью упрощения помещается в созданную из цилиндров оболочку. |
33 | 96 | Программирование Footstep-анимации Biped (разд. 2.10.1, Biped шагает, затем бежит и вслед прыгает). |
33 | 191 | Анимация Biped в режиме Footstep. |
33 | 171 | Анимация Biped с помощью Dummy. |
33 | 213 | Реализовать, используя Biped, три упражнения из комплекса Тайцзицигун. Примеры: Программирование контроллеров Biped. Управление Biped с помощью Dummy. |
35 | 47 | Комета. Имитируется хвост кометы. Используется система частиц PF_Source с material_Dynamic со стандартным материалом, имеющим карту particle_Age. |
35 | 50 | Монету, лежащую на плоскости, накрывает песок. Употребляются Find_Target, particleInteger, Shape_Facing. |
35 | 51 | Песочные часы. |
35 | 62 | Четыре цвета. Движущиеся вниз черные кубические частицы, генерируемые из одной точки, после достижения плоскости z = 0, расщепляются на 4 потока, направленных вдоль положительных и отрицательных направлений осей x и y. При этом в каждом потоке частицы имеют разную форму: либо форму сферы, либо конуса, либо чайника, либо цилиндра. Кроме того, в каждом потоке частицы приобретают "свой" цвет, а чайники - вращение (фильм 19.8, для задания цвета частиц использовать материал multimaterial, канал useMtlIndex и метод setParticleMtlIndex). Часть кода Script Operator: on ChannelsUsed pCont do ( pCont.usePosition = true pCont.useSpeed = true pCont.useShape = true pCont.useMtlIndex = true) ... pCont.particleSpeed = [0.05, 0, 0] pCont.particleShape = tp.mesh pCont.particleSpin = (angleAxis 0.1 [0, 0, 1]) pCont.setParticleMtlIndex i 2 где tp = teapot radius:5 В событие добавляются операторы Script Operator и Material Static, которому назначается созданный в программе материал multimaterial. Код, порождающий расщепление в примере с двумя событиями, см. в задаче 185. |
35 | 64 | Кольцо заполняется частицами, вылетающими из чашки (используются тесты Age_Test и Find_Target, фильм 18.12). |
35 | 65 | Передвинули. Разветвляющийся на 3 потока BlobMesh-PFSource перемещает стоящее на пути препятствие. |
35 | 92 | Одномоментно рождаются и двигаются вниз с некоторым спином 50 красных частиц разной формы (цилиндр, конус, сфера и чайник). При достижении порогового возраста цилиндрические, конические и сферические частицы останавливаются, частицы с формой чайника приобретают зеленый цвет и разлетаются, сохраняя спин, в разные стороны (использовать в первом событии script_Test, а во втором - keep_Apart). |
35 | 103 | Воспроизведение текста в виде растущих частиц цилиндрической формы. Решаются два варианта: а) частицы на ребрах текста (с одним событием); б) частицы равномерно распределяются по тексту (сетка частиц, два события). (В текущем семестре решается только вариант "а".) |
35 | 106 | Имитация дыма на основе системы частиц Particle Flow с употреблением сил Gravity, Wind и Drag. |
35 | 107 | Интерактивное создание снежинки на основе системы частиц Particle Flow. |
35 | 108 | Интерактивное создание снеговика на основе системы частиц Particle Flow. |
35 | 133 | Частицы, влетающие в отверстие коробки. |
35 | 136 | Первоначально черные кубические частицы генерируются со случайно заданным спином по периметру квадрата и в его углах. В момент времени T частицы, расположенные в углах квадрата, приобретают форму сферы и меняют цвет на синий. Далее эти частицы порождают вертикально движущиеся частицы зеленого цвета. |
35 | 137 | Одномоментно генерируется 10 частиц. Частицы перенимают форму сферы радиуса 12 и равномерно размещаются по окружности радиуса 60. Применить material_Frequency с тремя материалами в multimaterial с картами checker, marble и bricks. Для наглядности обеспечить вращение частиц вокруг оси z. Управление частицами выполнить средствами script_Operator, а их рождение - средствами birth_Script. |
35 | 139 | Красная звезда. На плоскости поочередно появляются звезды. Первоначально каждая звезда имеет зеленый цвет, затем приобретает желтый, а вслед красный цвет, а затем исчезает. В конце в центре сцены остается одна красная звезда. |
35 | 140 | Туман. Из тумана на сторонах квадрата появляются цилиндры. Когда туман рассеивается, цилиндры начинают перемещаться к центру квадрата и заканчивают движение на окружности, центр которой совпадает с центром квадрата, а радиус существенно меньше длины стороны квадрата. |
35 | 141 | Буква О. Вращающиеся сферические частицы падают вниз, располагаясь в конечном счете на траектории в виде буквы О. Достигнув траектории, они меняют свой цвет, приобретая форму буквы О. |
35 | 143 | Время. В системе Daylight на плоскости воспроизводятся часы, показывающие время системы Daylight (Daylight вводится в сцену интерактивно, прочие элементы сцены и анимация создаются программно). Для отображения времени используется система частиц PF Source. Для получения времени можно употребить функцию timeFromSolarTime (см. справку по 3ds MAXScript). |
35 | 144 | Рыба, работая хвостом, удаляется от начальной точки вдоль отрицательного направления оси Х, а затем возвращается в начальную точку (и так 2 раза). В точке с наименьшей Х-координатой рыба пускает 2 пузыря (рыбий рот закрыт), а при возвращении в начальную позицию рыба приоткрывает рот (для генерации пузырей применить систему частиц PF Source, для придания толщины модели головы рыбы можно употребить модификатор Shell, полость рта закрасить розовым цветом, а границу полости рта - белым). |
35 | 145 | Вращение. В центре сцены размещен куб. С интервалом в 30f на окружности генерируются 6 кубических вращающихся частиц. Затем с тем же интервалом они поочередно замещаются пирамидальными частями куба и небольшими сферами. В конце сцены части куба с тем же интервалом возвращаются на свои начальные позиции, а частицам возвращается их начальная форма (применяется система частиц PF Source). |
35 | 147 | Возвращение. Кубические частицы красного цвета покидают исходную территорию, двигаясь в положительном направлении оси Х. Достигнув другой территории, они останавливаются и меняют цвет на желтый. После паузы они становятся зелеными и начинают движение в обратном направлении. Добравшись до исходной территории, они вновь останавливаютя и приобретают исходный цвет. |
35 | 150 | Имитация печати конуса. |
35 | 154 | Игрушка. Пирамида создается из разноцветных частичек (употребить Find_Target и Material_Frequency). |
35 | 156 | Time. Маятник, покидая крайнюю позицию, инициирует появление частиц. Для имитации маятника можно употребить Bones. |
35 | 158 | Энтропия. Из фрагментов собираются конус и сфера, стоящая на вершине конуса. |
35 | 160 | И пир веселый им не в пир. Сцена реализуется системами частиц, операторами SpeedByIcon и составными объектами BlobMesh. Как вариант: Script_Operator содержит код для распределения частиц по окружности и изменения их формы. |
35 | 174 | Алфавит. Генерируются 26 частиц, принимающих форму букв английского алфавита. Траектория частиц формируется по действием вихря Vortex. Для создания буквы можно употребить следующий код (на примере буквы "A"): txt = text text:"A" size:30 addModifier txt (extrude amount:5) Для генерации алфавита можно употребить bit.intAsChar. |
35 | 177 | Полетели. Из опускающихся верхней и двух передних граней куба вылетают частицы. Отделение грани выполняется после преобразования в Editable Poly, например: bx = Box width:25 length:25 height:25 bx = convertToPoly(bx) bx.EditablePoly.SetSelection #Face #{6} bx.EditablePoly.detachToElement #Face keepOriginal:off move bx.selectedFaces [-40, 0, 0] Частицы создаются источником Super Spray и отклоняются ветром Wind. |
35 | 180 | Испарение. Частицы в форме тора летят вниз.
Достигнув плоского препятствия, они приобретают форму куба и разлетаются по плоскости препятствия, но через некоторое время они приобретают форму сферы и начинают двигаться вверх. |
35 | 181 | Проникновение. Частицы генерируются на сторонах окружности. Задерживаются на 30 кадров на первом препятствии. Затем летят ко второму, где и останавливаются. По ходу движения частицы меняют форму и цвет. |
35 | 182 | Приводимый ниже код создает объекты разных классов ('Sphere', 'Teapot', 'Cylinder', 'Cone', 'Tube', 'Torus', 'Box' и 'Pyramid'). Написать программу, которая
Пример употребления qsort см. в задаче 40. -- Создает объекты разных классов fn crtSP n knd = ( for k = 1 to n do ( ps = random [-50, -50, -50] [50, 50, 50] r = random 3 7 h = random 4 8 case knd of ( 1:(sphere radius:r pos:ps) 2:(teapot radius:r pos:ps) 3:(cylinder radius:r pos:ps height:h) 4:(cone radius1:r radius2:0 height:h pos:ps) 5:(tube radius1:r radius2:(r + 2) height:h pos:ps) 6:(torus radius1:(r + 7) radius2:r pos:ps) 7:(box length:h width:h height:h pos:ps) 8:(pyramid width:h depth:h height:h pos:ps) ) ) ) delete $* arrN = for k = 1 to (random 7 8) collect random (-3 + k) 9 -- nSp, nTp, nCyl, nCn, nTb, nTr, nBx, nPr for k = 1 to arrN.count do crtSP arrN[k] k |
35 | 183 | Чаша полна. Частицы, сдуваемые ветром, покидают источник и заполняют чашу. Используются сила Wind и тест Find Target. |
35 | 185 | Встреча. Два луча из частиц после встречи порождают 8 лучей с формами Hedra и Torus_Knot. Можно употребить Collision и Script Operator. Пример Script Operator, направляющего частицы по осям X и Y и меняющего их форму: on ChannelsUsed pCont do ( pCont.useTime = true pCont.useSpeed = true pCont.useShape = true ) on Init pCont do ( if spM == undefined do ( sp = sphere radius:3 global spM = sp.mesh ) if tpM == undefined do ( tp = teapot radius:3 global tpM = tp.mesh ) if clM == undefined do ( cl = cylinder radius:3 height:6 global clM = cl.mesh ) if cnM == undefined do ( cn = cone radius1:3 radius2:0 height:6 global cnM = cn.mesh ) ) on Proceed pCont do ( count = pCont.NumParticles() for i in 1 to count do ( pCont.particleIndex = i k = mod i 4 pCont.particleSpeed = case k of ( 0:[0.01, 0, 0] 1:[-0.01, 0, 0] 2:[0, 0.01, 0] 3:[0, -0.01, 0] ) pCont.particleShape = case k of ( 0:(spM) 1:(tpM) 2:(clM) 3:(cnM) ) ) ) |
35 | 188 | Я протаял гляделку в морозном узоре. Площадка заносится частицами. Затем в ее центре образуется незанятая частицами область. (Без программирования.) |
35 | 232 | Расщепление. Кубические частицы падают вниз. После достижения плоскости Z = 0 расщепляются на 4 потока, меняют цвет, перенимают форму чайника и двигаются по осям X и Y. После перемещения на заданное расстояние начинают двигаться вверх. Пример кода см. в задаче № 185. |
35 | 234 | Четыре формы. Частицы разной формы, вращающиеся вокруг оси Z, поочередно появляются в точках, расположенных на сторонах прямоугольника. После перехода в другое событие они меняют цвет, направление вращения и начинают разбегаться по оси Y. Замечание. Длину анимационного интервала следует увеличить до 250 кадров: animationRange = interval 0f 250f Контрольные вопросы:
|
37 | 97 | Использование делегатов (Delegates) в Crowd с моделями поведения Seek, SurfaceArrive, PathFollow и Avoid. Приводятся 3 варианта решения: а - Seek и Avoid; б - Seek, SurfaceArrive и Avoid; в - PathFollow и Avoid. В каждом варианте делегаты ассоциируются с геометрическими объектами, например, с цилиндрами. |
37 | 98 | Использование Biped (двуногий) в Crowd с моделями Wander, PathFollow и Avoid. Приводятся 2 варианта решения: а - Wander и Avoid; б - PathFollow и Avoid. |
37 | 153 | Песочница. Вращающиеся кубики не могут выбраться за пределы песочницы. Используются объекты (помощники) Crowd, Delegate и Grid, поведение wallRepel, а также ассоциация делегатов с кубиками (фильм 18.15). Примеры программирования Crowd см. на crwd.html Вариант создания сетки и поведения: arrGrd = for k = 1 to 4 collect grid length:200 width:200 grid:10 wRpl = wallRepelBehavior repelGrids:arrGrd repelMethod:1 repelDirection:2 useDistance:on innerDistance:30 outerDistance:40 falloff:0 showDistance:off |
38 | 99 | Анимация элементов системы Ring Array с использованием в качестве дочерних элементов иных объектов 3ds Max (Sphere, Teapot и др.). |
38 | 100 | Анимация в системе Sunlight управляющих элементов Solar_Time и Solar_Date в сцене с цилиндром, стоящим на плоскости (для каждого элемента создается самостоятельное решение). |
38 | 101 | Анимация в системе Daylight управляющих элементов Solar_Time и Solar_Date в сцене с цилиндром, стоящим на плоскости (для каждого элемента создается самостоятельное решение). |
39 | 109 | Программирование контроллеров Biped (реализация простого движения двуногого, пограммирование AxeKick, BackKick и бегущего Biped). |
40 | 110 | Разбиение объекта по атомам с применением системы частиц Particle Cloud для формирования атомов. |
41 | 116 | Применение различных стилей формирования UVW-координат средствами модификатора Unwrap UVW для сферы и ее верхушки. |
41 | 117 | Создание плоской, нормальной и раскрывающей разверток (Flatten, Normal и Unfold Mapping) сферы средствами модификатора Unwrap UVW. |
41 | 118 | Анимация UVW-координат областей UVW-карт, созданных средствами модификатора Unwrap UVW. |
41 | 119 | Создание с использованием MAXScript плоской развертки (Flatten Mapping) сферы средствами модификатора Unwrap UVW. |
42 | 122 | Синусоида. Источник частиц движется по синусоидальной траектории, оставляя такой же след, но иного цвета, на неподвижной плоскости. Используется система частиц PF Source с двумя событиями и отражателем POmniFlect в тесте Collision первого события. Во втором событии частицы меняют цвет и форму. |
42 | 123 | Наждак. Имитация заточки шила. (Используется система частиц PF Source с одним событием, содержащим в том числе оператор Script_Operator, добавляющий в сцену частицы при приближении шила к наждаку.) |
42 | 124 | Сизифов труд. Сферический камень закатывается на возвышенность, но каждая попытка завершается неудачей из-за столкновения с внезапно возникающим препятствием. |
42 | 125 | На кубе. Частицы появляются на ребрах куба, удаляются от его центра, возвращаются на прежние позиции и исчезают. (Используется система частиц PF Source с тремя событиями. В первом событии частицы рождаются на ребрах куба и разлетаются под действие бомбы. Частицы покидают первое событие, когда возраст первой частицы достигает указанного значения. Это обеспечивается тестом Script_Test. Во втором событии вектор скорости частиц меняет направление на противоположное, кроме того, частицы меняют форму и цвет. Частицы покидают второе событие, когда возраст первой частицы достигает указанного значения. Это также обеспечивается тестом Script_Test. В третьем событии частицы меняют форму, цвет и удаляются по мере достижения заданного возраста. Последнее обеспечивается оператором Script_Operator.) |
42 | 126 | Рулетка. Шарики покидают цилиндрическую нишу под действием вращающейся крестовины. (Используются средства reactor. Для получение бокового отверстия употреблена булевская операция вычитания. Вращение обеспечивается мотором, а фиксация оси вращения - ограничением PointToPoint). |
42 | 127 | Притяжение. Бабочки выбирают красный цветок. (Бабочка создается из цилиндра и двух эллипсов, преобразованных в Mesh. Колебательные движения крыльев обеспечиваются контроллером Noise Float: nFlt = noise_float seed:k frequency:0.1 fractal:true noise_strength:2; llps.Rotation.Controller.Z_Rotation.Controller = nFlt, где llps - это ссылка на Mesh, отображающее крыло. Сцена обеспечивается средствами Crowd с поведениями Wander и Surface Arrive. Количество делегатов (бабочек) не менее 10. Наблюдение ведется анимированной направленной камерой.) |
42 | 128 | Проникновение. Движущиеся части объекта постепенно проникают сквозь находящееся на их пути препятствие, но тормозятся на втором. (Используются система частиц PArray, три бомбы с различным временем детонации и несколько отражателей с различными значениями параметра TimeOff.) |
42 | 129 | На NURBS. Окружность радиуса R преобразовывается в NURBSCurveshape. Каждая контрольная точка кривой смещается на величину [random 0 R, random 0 R, random 0 R]. В сцену вводятся сфера и цилиндр. Сфера помещается на кривую в вершину, наиболее удаленную от начала координат. Цилиндр также помещается на кривую в вершину, наименее удаленную от начала координат. В процессе анимации сфера и цилиндр, двигаясь по кривой, меняются местами. |
42 | 130 | Задело. Два связанных эластичной веревкой предмета (сфера и короб) двигаются вниз. На пути веревки находится препятствие в виде бруса. Предметы повисают на веревке, охватившей брус. Более тяжелая сфера тянет короб вверх, пока он не упрется в брус. (Используются средства reactor. В качестве решателя коллекции твердых тел выбирается метод Runge-Kutta). |
42 | 131 | Затащили. Два связанных эластичной веревкой предмета (две сфера) перемещаются под действием сил гравитации и ветра. Большая сфера, двигаясь по синусоидальной траектории, затягивает на плоскость сферу меньшего радиуса. Движение прекращается на краю плоскости. (Используются средства reactor. В качестве решателя коллекции твердиых тел выбирается метод Runge-Kutta. Движение сферы по синусоидальной траектории обеспечивается ветром и ограничением PointToPath.) |
42 | 132 | Теперь не столь опасен. Первоначально в вершинах усеченной сферы появляются иголки красного цвета, затем они замещаются оранжевыми штырями. (Используется система частиц PF Source с двумя событиями. В первом событии иголки размещаются в вершинах усеченной сферы и ориентируются по их нормалям. Координаты нормали к вершине Mesh возвращаются методом GetNormal. Для размещения и ориентации иголок в операторе Script_Operator первого события употребляется свойство ParticleTM. Матрица преобразований координат получается в результате поворота единичной матрицы вокруг осей Y и X (методы rotateY и rotateX), а четвертая строк матрицы определяется значением позиции вершины: m3.Row4 = v.Pos, где v = sph.Verts[k], k - номер вершины, а sph - это ссылка на Mesh усеченной сферы. Частицы покидают первое событие после достижения указанного возраста (применен тест Age_Test). Во втором событии меняется форма частиц и цвет их отображения в видовом порте.) |
43 | 184 | Растровые алгоритмы. Принадлежность точки невыпуклой фигуре, вывод линии, заливка многоугольника. |
44 | 151 | Сделан из фракталов. Используется СИФ-фрактал Fir-2. Полученное bmp-изображение используется в качестве текстуры (фильм 18.14). |
44 | 193 | Реализация СИФ-фрактала средствами C#. СИФ берется из ifs.html по номеру из списка групп на 100byte.ru. Использовать OpenTK, OpenGL. (Ранее надо было употребить System.Windows.Forms.PictureBox; пример употребления см. на tsp.html) |
46 | 16 | Улыбка. Создается как сплайн-анимация (можно употребить модификатор xForm или Linked_XForm). |
47 | 58 | Изготовление отчета в Word. Для каждого стиля задать сочетание клавиш. (Ранее было: Программирование 1С-географической схемы.) |
47 | 170 |
Записать алгоритм поиска в наборе данных MNIST двух самых близких по написанию букв заданного класса. Ранее было: Конфигурации Студенты имеет справочники Группы и Студенты, документы Прием, Перевод и Прием большой, регистр сведений Списки групп и отчет Список группы. Реализовать объекты, обеспечивающие фиксацию экзаменационных оценок, а также создать отчет, показывающий экзаменационные оценки по указанной дисциплине. |
47 | 175 | Программирование 1С-графической схемы. Алгоритм задачи с циклом (произвольная) отображается в виде блок-схемы с использованием инструментов 1С-графической схемы. Далее пишется код, переводящий блок-схему в линейную схему. |
48 | 66 | Вычислить координаты точки пересечения прямой, проходящей через центр проецирования и точку (x, y, z), с плоскостью XY (см. рис. 2.12 в Компьютерная графика полигональных моделей.) Использовать параметрические уравнения прямой: x* = xt, y* = yt, z* = с + (z - c)t |
50 | 190 | Воспроизвести граф по его xml-описанию. Параметры glOrtho определить, анализируя координаты вершин графа. Добавить в форму кнопки, обеспечивающие вертикальное и горизонтальное перемещение графа. <?xml version="1.0" encoding="utf-8" ?> <graph> <graphVertex vName = "v1"> <x>110</x> <y>200</y> </graphVertex> <graphVertex vName = "v2"> <x>50</x> <y>100</y> </graphVertex> <graphVertex vName = "v3"> <x>150</x> <y>100</y> </graphVertex> <edge> <start>v1</start> <end>v2</end> </edge> <edge> <start>v1</start> <end>v3</end> </edge> <edge> <start>v2</start> <end>v3</end> </edge> </graph> |
48 | 66 | Вычислить координаты точки пересечения прямой, проходящей через центр проецирования и точку (x, y, z), с плоскостью XY (см. рис. 2.12 в Компьютерная графика полигональных моделей.) |
50 | 200 |
Создать полигональную модель поверхности из нижеприводимого списка и обеспечить:
Прежняя задача. Создать средствами C# и OpenGL полигональную модель из разноцветных граней одной из указанных ниже геометрических фигур (студентом выбирается фигура по его номеру в журнале группы). Повернуть объект вокруг осей Y и X соответственно на 45° и 30°. Организовать перемещение объекта по наклонной прямой с одновременным вращением вокруг оси Y. Пример см. в разд. 2.6. Реализация аффинных преобразований в OpenGL |
50 | 202 | Воспроизвести, используя OpenTK, код, приведенный в Компьютерная графика полигональных моделей. Задача принимается, если даны ответы на следующие вопросы: 1. Преобразование координат в системах компьютерной графики. 2. Назначение матриц Modelview и Projection. 3. Назначение GL.LoadIdentity(), GL.Ortho(...) и GL.Viewport(...). (Прежде в этой задаче рассматривались свойства грани OpenGL.) |
50 | 203 |
Вывести созданную при решении задачи 200 модель:
Прежняя задача. Воспроизвести, используя OpenTK, четырехугольник, употребляя GL_POINT, GL_LINE и GL_FILL. При GL_FILL применить GL_SMOOTH и GL_FLAT (для вершин задаются разные цвета). Замечания. . По умолчанию грань выводится лицевой стороной, если вершины обходятся против часовой стрелки. 2. Для демонстрации нелицевой стороны выполнить, после нажатия на F11 (в случае консоль-проекта), поворот грани на 180° вокруг оси Y. |
50 | 204 | 2D-примитивы. Свойства примитива "Линия". Этап проецирования. |
50 | 206 | Вывести на прямоугольную грань следующие текстуры:
Показать текстуру на обеих сторонах грани, поворачивая ее на 180° вокруг оси Y. Пример генерации Checker и загрузки текстуры из файла см. в Графика полигональных моделей |
50 | 207 | Вывести, используя OpenTK, несколько смежных четырехугольных лежащих в разных плоскостях граней, задав:
|
50 | 212 | Вывести частицы, разбегающиеся от центра видового порта по окружности. Использовать OpenTK, шейдер. Пример: Щейдер частиц. |
50 | 214 | Доработать форму (рис. 1) так, чтобы она обеспечивала применение материала и текстуры. |
50 | 215 | Вывести куб в GLControl, используя PrimitiveType.Quads, PolygonMode.Fill / Line, применяя различные цвета для граней куба. Вывести оси и начало координат. Обеспечить поворот куба относительно осей координат. Вывести нормали к граням и вершинам куба. |
50 | 216 | Составить алгоритм движения куба по окружности с центром в точке (xc, yc, 0). Входные данные: центр окружности, радиус окружности, длина ребра куба. Считать, что имеется процедура cube, выводящая куб. |
50 | 217 | Создать форму, обеспечивающую: - вывод осей координат; - вывод четырехугольной грани с центром в точке (x0, y0, 0) с интерполяцией цветов и без нее; - вывод четырехугольной грани с с различными способами вывода лицевой и нелицевой сторон грани; - перенос грани в точку (x, y, 0) с положительным масштабированием и ее возврат в начальную точку с отрицательным масштабированием; - вывод четырехугольной грани с использованием разных материалов для лицевой и нелицевой сторон. Отобразить нормали. Предусмотреть вывод в режимах Flat и Smooth; - предусмотреть возможность поворачивать грань относительно осей ее локальной системы координат и вектора, исходящего из начала локальной системы координат грани, с отличными от нуля координатами. |
50 | 218 | Программирование задачи 216. |
50 | 219 | Воспроизвести вращение куба, поочередно применяя разные способы воспроизведения (см. фильм 219):
|
50 | 220 | Написать алгоритм анимации вращения куба с заданным шагом по углу поворота вокруг вектора с координатами (1, 1, 1), обеспечивающий следующие 4 способа воспроизведения куба:
Для вывода куба используется процедура cube(x, y), где x, y - координаты центра куба. |
51 | Программирование многослойного перцептрона для прогнозирования на временном ряду. Прежняя задача: 1С-модель БД Оценки. Ранее было: Форматирование курсовой работы в Microsoft Word. | |
51 | 187 | Разработать конфигурацию "Сессия", позволяющую отображать итоги экзаменационной сессии студентов в разрезе учебных групп. Создать отчет, выводящий итоги указанного экзамена для выбранной группы. |
51 | 210 | Вращение четырех источников частиц (см. фильм). Прежняя задача: Расчет среднего времени ожидания трамвая. На линии курсируют трамваи одного маршрута, например № 32. Известно: - расписание движения трамваев, которое задается временем отбытия с начальной остановки маршрута; - число остановок на маршруте; - средняя скорость движения трамвая; - среднее время входа пассажира в трамвай; - среднее время выхода пассажира из трамвая. |
51 | 211 | Два отражателя. Частички падают на первый, а затем и на второй отражатели, меняя свои форму и цвет. Прежняя задача: Реализация 1С-конфигурации Оценки. Пример: 1С:Предприятие 8. Кафедра |
52 | 8 |
Часть 1.
Цель - получение максимально высокой точности классификации. Обучить НС, выполняя следующие действия:
Замечание. Число эпох должно быть достаточным для приближения к максимально достижимой на текущей модели НС точности классификации val_acc. Часть прежнего задания.
Ранее это была задача на JavaScript-анимацию (два варианта). Вариант 1: расположенная в центре области буква динамически загораживается (открывается) 4-я областями. Вариант 2: расположенная в центре области буква исчезает (появляется) в результате изменения прозрачности области. |
52 | 226 |
Предусмотреть в модели НС задачи № 8 наличие нескольких слоев Dense, Dropout и BatchNormalization (не более 3-х). Изменяя модель задачи № 8, можно использовать следующий код: from keras.layers import Dropout, BatchNormalization img_rows = img_cols = 28 num_classes = 10 epochs = 120 units = [0, 256, 128] # Если 0, то слоя Dense нет rate = [0.5, 0.4, 0.3] # Если 0, то слоя Dropout нет bn = [False, False, False] # Если False, то слоя BatchNormalization нет ... input_shape = (img_rows, img_cols, 1) inp = Input(shape = input_shape) x = Flatten()(inp) for k in range(3): if units[k] > 0: if rate[k] > 0: x = Dropout(rate[k])(x) x = Dense(units = units[k], activation = 'relu')(x) if bn[k]: x = BatchNormalization()(x) output = Dense(num_classes, activation = 'softmax')(x) model = Model(inputs = inp, outputs = output) ... Варьируя число слоев Dense, Dropout и BatchNormalization, а также значение коэффициента прореживания rate, найти начальное, промежуточное и лучшее решения. Начальное решение - это результат обучения нейронной сети без слоев Dropout и BatchNormalization. В последующих решениях сохраняются Dense-слои начального решения и добавляются слои Dropout и/или BatchNormalization. Критерий: "точность классификации оценочных изображений". Число эпох обучения не менее 90. После завершения обучения запоминать историю обучения и выводить графики обучения. Можно использовать следующий код: # n_model = 1 # Номер модели (указать состав и параметры модели) # history = model.fit(...) # history = history.history pathToHistory = 'G:/AM/' suff = str(n_model) + '.txt' fn_loss = pathToHistory + 'loss_' + suff fn_acc = pathToHistory + 'acc_' + suff fn_val_loss = pathToHistory + 'val_loss_' + suff fn_val_acc = pathToHistory + 'val_acc_' + suff with open(fn_loss, 'w') as output: for val in history['loss']: output.write(str(val) + '\n') with open(fn_acc, 'w') as output: for val in history['acc']: output.write(str(val) + '\n') with open(fn_val_loss, 'w') as output: for val in history['val_loss']: output.write(str(val) + '\n') with open(fn_val_acc, 'w') as output: for val in history['val_acc']: output.write(str(val) + '\n') # def one_plot(n, y_lb, loss_acc, val_loss_acc): plt.subplot(1, 2, n) if n == 1: lb, lb2 = 'loss', 'val_loss' yMin = 0 yMax = 1.05 * max(max(loss_acc), max(val_loss_acc)) else: lb, lb2 = 'acc', 'val_acc' yMin = min(min(loss_acc), min(val_loss_acc)) yMax = 1.0 plt.plot(loss_acc, color = 'r', label = lb, linestyle = '--') plt.plot(val_loss_acc, color = 'g', label = lb2) plt.ylabel(y_lb) plt.xlabel('Эпоха') plt.ylim([0.95 * yMin, yMax]) plt.legend() plt.figure(figsize = (9, 4)) plt.subplots_adjust(wspace = 0.5) one_plot(1, 'Потери', history['loss'], history['val_loss']) one_plot(2, 'Точность', history['acc'], history['val_acc']) plt.suptitle('Потери и точность') plt.show() Результаты оформить в виде отчета, включив в него для каждого решения:
|
52 | 227 |
Сравнить результаты обучения нейронной сети на MNIST с применением слоев Conv1D и Conv2D. (Совместно с Dense-слоями используются либо слои Conv1D, либо Conv2D.) Для добавления Conv-слоев использовать следующий код: # from keras.layers import Conv1D, Conv2D, MaxPooling1D, MaxPooling2D # # Dense-слои use_flatten_reshape = 0 # 0 - без Flatten и Reshape; 1 - Flatten; 2 - Reshape units = [0, 0, 32] # Если 0, то слоя Dense нет rate = [0.5, 0.4, 0.3] # Если 0, то слоя Dropout перед слоем Dense нет bn = [False, False, False] # Если False, то слоя BatchNormalization после слоя Dense нет # # Conv-слои use_conv = 1 # 0 - Conv-слоев нет; 1 - Conv1D; 2 - Conv2D filters = [0, 32, 16] # Если 0, то слоя Conv1D (Conv2D) нет rate_conv = [0., 0.4, 0.3] # Если 0, то слоя Dropout перед слоем Conv нет bn_conv = [False, True, True] # Если False, то слоя BatchNormalization после слоя Conv нет if use_conv > 0: use_flatten_reshape = 0 ... Ввод и преобразование обучающих и проверочных данных ... Форма массивов зависит от вида Conv-слоев (см. ниже определение input_shape для слоя Input) # # Определяем форму на входе слоя Input # Оставляем возможность работать без слоев Conv1D и Conv2D input_shape = ... # input_shape определяется в зависимости от слоя, следующего за входным # Если Conv1D, то input_shape = (img_rows * img_cols, 1) # Если Conv2D, то input_shape = (img_rows, img_cols, 1) inp = Input(shape = input_shape) x = inp if use_conv > 0: for k in range(3): if filters[k] > 0: if rate_conv[k] > 0: x = Dropout(rate_conv[k])(x) if use_conv == 1: x = Conv1D(filters[k], kernel_size = 4, activation = 'relu')(x) x = MaxPooling1D(pool_size = 3, strides = 1, padding = 'same')(x) else: x = Conv2D(filters[k], kernel_size = 4, activation = 'relu')(x) x = MaxPooling2D(pool_size = 3, strides = 1, padding = 'same')(x) if bn_conv[k]: x = BatchNormalization()(x) x = Flatten()(x) # Преобразование элементов обучающего пакета данных в векторы ... Далее следуют слои Dense ... История обучения сохраняется в файлы и отображается на графиках. Результаты оформить в виде отчета. Для каждого решения привести:
|
52 | 224 |
Написать программу создания набора данных зашумленных изображений шести фигур (кривых) в оттенках серого цвета (примеры зашумленных изображений). Выбор фигур (кривых) выполняется из следующего списка:
Размер изображения – 64 * 64 пикселя. Число примеров каждой фигуры (кривой) в обучающем множестве равно 600, в проверочном – 100. Нумерация меток изображений начинается с нуля. Выбор вариантов определяется списочным номером (N) студента: студентом выбираются варианты V1 = N, V2 = N + 1 и V3 = N + 2. Если Vi > 28, то Vi = Vi - 28. Таким образом, каждый студент формирует примеры для шести классов изображений. После формирования набора данных выполняется его загрузка, проверка классов на неповторяемость и выводятся по 10 случайно выбираемых изображений каждого класса. Примеры изображений см. здесь. |
52 | 225 |
Реализация нейронной сети, позволяющей классифицировать созданные в результате решения задачи 224 изображения. Ищется минимальная архитектура сети, обеспечивающей 100% точности классификации (или близкую к ней). В качестве начальной нейронной сети можно взять многослойный перцептрон (см. задачу 8). Другой вариант сети см. здесь. В программе предусмотреть возможность вывода изображений (по 10 в каждом классе). Результаты оформить в виде отчета. В отчете привести:
|
52 | 228 |
Обучить порождающую состязательную нейронную сеть на данных, созданных в результате решения задачи № 224. Сохранить в файл обученную модель генератора. Загрузить эту модель в другой программе и выполнить генерацию 50 изображений (пример см. здесь перед рис. 2). Замечание. Следует перемешать загруженные обучающие данные, применив, например, процедуру random.shuffle(): import numpy as np lst = [1, 2, 3, 4, 5, 6, 7] np.random.shuffle(lst) print(lst) # Возможный результат: [4, 6, 1, 2, 5, 7, 3] Результаты оформить в виде отчета. В отчете привести:
|
52 | 229 |
Сохранить лучшую обученную модель, полученную в результате решения задачи № 227 (модель с Conv2D-слоями). В новой программе:
|
52 | 230 |
Разбить заданный класс EMNIST на два класса: прописные буквы и строчные буквы. Для разбиения прежде вывести 50 изображений заданной буквы и выбрать среди них образцы прописной и строчной буквы. Далее использовать следующий алгоритм: Входные данные: номер класса; проверочное множество букв и их метки, let_big - образец прописной буквы и let_small - образец строчной буквы. Выходные данные: 100 изображений класса "прописные буквы" и 100 изображений класса "строчные буквы".
Результат оформить в виде отчета, включив в него индексы и изображения образцов, программу, реализующую приведенный выше алгоритм, результаты п. 6 алгоритма и процент "правильных" букв в кажом классе. Загрузку x_test, y_test - проверочных данных EMNIST выполнит следующая процедура (img_rows = img_cols = 28): def loadBinData(pathToData, img_rows, img_cols): print('Загрузка данных из двоичных файлов...') with open(pathToData + 'imagesTest.bin', 'rb') as read_binary: x_test = np.fromfile(read_binary, dtype = np.uint8) with open(pathToData + 'labelsTest.bin', 'rb') as read_binary: y_test = np.fromfile(read_binary, dtype = np.uint8) x_test_shape_0 = int(x_test.shape[0] / (img_rows * img_cols)) # 26000 x_test = x_test.reshape(x_test_shape_0, img_rows, img_cols) x_test = x_test.transpose(0, 2, 1) x_test = x_test / 255.0 return x_test, y_test Расстояние между буквами let_1 и let_2 можно определить следующим образом: import numpy as np dist = np.linalg.norm(let_1 - let_2) Двоичные файлы EMNIST можно скачать здесь. |
52 | 231 |
Выбрать в проверочном множестве набора данных EMNIST случайным образом букву заданного класса и затем в этом классе найти:
Загрузку x_test, y_test - проверочных данных EMNIST выполнит следующая процедура (img_rows = img_cols = 28): def loadBinData(pathToData, img_rows, img_cols): print('Загрузка данных из двоичных файлов...') with open(pathToData + 'imagesTest.bin', 'rb') as read_binary: x_test = np.fromfile(read_binary, dtype = np.uint8) with open(pathToData + 'labelsTest.bin', 'rb') as read_binary: y_test = np.fromfile(read_binary, dtype = np.uint8) x_test_shape_0 = int(x_test.shape[0] / (img_rows * img_cols)) # 26000 x_test = x_test.reshape(x_test_shape_0, img_rows, img_cols) x_test = x_test.transpose(0, 2, 1) x_test = x_test / 255.0 return x_test, y_test Расстояние между буквами let_1 и let_2 можно определить следующим образом: import numpy as np dist = np.linalg.norm(let_1 - let_2) Двоичные файлы EMNIST можно скачать здесь. |
52 | 233 | 1. Заменить в задаче 225 обучающие данные, на данные, генерируемые ImageDataGenerator. 2. Обучить сверточную нейронную сеть с Conv2D-слоями, созданную при решении задачи № 227, расширив набор данных MNIST изображениями, сгенерированными ImageDataGenerator. При создании генератора использовать параметры, отвечающие за сдвиги изображения по горизонтали и вертикали (width_shift_range и height_shift_range). В каждой задаче отчет включить:
|