"Мы, собаки, в смысле нервной восприимчивости в семь и еще много раз тоньше людей… Я чувствую тайными, неведомыми, дрожащими путями, как их души краснеют, бледнеют, трепещут, завидуют, любят, ненавидят".
Рассмотрим принципы построения управляемых видимых
объектов в
Во всех предыдущих лекциях в качестве примеров возможного применения обсуждается построение систем с элементами искусственного интеллекта, которые можно отнести к области искусства и развлечений. Фантазия легко связывает создание монстров, объектов компьютерных игр, имитацию их реакции на внешнюю среду или другие предлагаемые им объекты и ситуации с такими "мероприятиями", как парк фантасмагорий, Disneyland, цирк марионеток, распознавание "свой — чужой", сетевые зрелищно-рекламные демонстрации и т.д. Такие системы могут представлять как искусство, так и бизнес.
Существуют два направления реализации указанных систем ИИ: натурное и компьютерное.
В современном парке (культуры и отдыха) можно в натуральном виде встретить не одно существо, мало отличающееся от живого и совершающее действия и движения по заложенной программе. Технологии их построения можно считать отработанными, имитация движений, включая работу "мышечного" аппарата, вполне совершенна. Отсутствие элементов ИИ, предполагающих непредсказуемость реакции, — основной недостаток таких объектов.
Компьютерная реализация сегодня ограничена мультимедийными средствами двумерной и трехмерной графики. Возможности создаваемых этими средствами систем и образов огромны. Достаточно отметить такое средство, как 3D-MAX, позволяющее создавать целые кинофильмы. Однако основной недостаток всех известных систем кроется в априорном знании возможных сцен, сглаживание перехода через которые в реальном времени имитирует движение. Это подобно табличному заданию огромного количества значений функции многих переменных при игнорировании непосредственного расчета.
Непредсказуемость сцен, возникающая при имитации реакции моделируемого объекта на внешние воздействия, может потребовать огромного, практически нереализуемого числа предполагаемых возможных сцен.
В этом случае желательно при построении объекта
(монстра, человека и др.) снабжать его управляемыми
органами движения (модификации, деформации, имитирующей
улыбку, движение руки и т.д.), подобными
Таким образом, построение реального объекта в памяти
компьютера, а не его математического образа, задание ряда
рычагов —
Становятся видными новые возможности для создания кинофильмов, сценических постановок и других видеосценариев.
Построение реальных объектов требует имитации объемной,
Заметим, что проблемы компьютерной реализации "живого" моделирования целиком включают в себя проблемы натурного моделирования, оставляя второму лишь проблемы химического, технологического и электротехнического (возврат к релейно-контактным схемам?) свойства, что, как сказано выше, сейчас успешно решается.
Поскольку компьютер, реализующий "живую" модель, несомненно, должен обладать рядом свойств, обнаруживаемых в процессе дальнейшего изложения, справедливо назвать его видеонейрокомпьютером (ВНК). Это тем более справедливо, что обработка большого числа ячеек памяти предъявляет те же требования к распараллеливанию, что и обработка большого числа нейронов сети.
Отметим, что современные персональные компьютеры
(РС) и рабочие станции, реализующие системы мультимедиа,
вполне способны выполнять функции такого
Назовем ячейку, занятую элементом объекта, клеткой этого объекта. Как видно далее, клетка минимально должна содержать информацию о цвете (пиксель), коэффициенте освещенности, указателе вершины стека.
Пусть адресное пространство ВНК при сквозной линейной
адресации ячеек определяется N разрядами. Адрес
разбивается на четыре части (рис. 15.1).
(рис 15.1) Преобразование линейного адреса в трехмерный
Здесь x, y, z — координаты клетки
в s разрядов отводятся для адресации стека, сопровождающего
каждую клетку. Стек необходим для сохранения информации в случае сжатия
объекта — для более точного его восстановления. Таким образом, адресное
пространство хранения клеток объекта или целой сцены составляет 2N-s
,
что говорит о необходимом весьма большом значении N. Значение s практически
может быть не более трех.
При моделировании S[0:P; 0:P; 0:P] переменных S[i, j, k], где значения индексов являются координатами соответственно x, y, z. Тогда задача деформации или перемещения объектов преобразуется
в задачу нахождения новых значений этих индексов для каждой переменной, являющейся клеткой
объекта — для выполнения соответствующего переноса.
При этом линейный адрес переноса или текущего нахождения клетки объекта находится так:
<S[i, j, k]> = C + i + jP + kP2.
Здесь С — базовый адрес массива.
Стек моделировать нецелесообразно. Информация, потерянная при сжатии объекта, может быть восстановлена с помощью интерполяции.
Пусть объект в трехмерном пространстве задан своей оболочкой. Каждый элемент оболочки является клеткой. Оболочка формируется при создании объекта. В общем случае объект может быть заполнен значащей информацией и внутри, если его вид в разрезе интересует пользователя.
(рис 15.2) Применение мышцыТаким образом, АВ, связывающий
точки A(x1, y1, z1)
и B(x2, y2, z2)
, отображающий
некоторое геометрическое место клеток объекта. Этот отрезок связан с объектом
и может сокращаться при подаче управляющих импульсов и восстанавливаться при их
отсутствииМ(xM, yM, zM)
.
Сокращение
Параметрическая система уравнений, описывающих
отрезок АВ, имеет вид
Напоминаем, что координаты точек объекта совпадают
с адресами памяти, по которым находятся соответствующие
клетки, так что систему уравнений (15.1) с точностью до
целочисленной дискретности адресации можно рассматривать
относительно
Пусть l — коэффициент сжатия АМ
необходимо преобразовать в отрезок А*М с длиной lx|А*М|, а отрезок МВ — в отрезок МВ* с длиной lx |МВ*|.
Рассматривая по каждой координате отдельно, убеждаемся,
что отрезок x1xM
необходимо
преобразовать в отрезок x1* xM
с длиной l(xM- x1)
, отрезок xMx2
необходимо преобразовать в отрезок xMx2*
c длиной l(x2
- xM)
. Аналогично отрезок y1yM
должен быть преобразован
в отрезок y1* yM
с длиной l(yM - y1)
и
т.д.
Это, в частности, означает, что клетка с координатой x1
должна быть переслана в ячейку,
определяемую соответствующей составляющей адреса l(xM
- x1)
и т.д.
Однако изменение адреса пересылки клеток по разным
координатам различно, что определяется положением
Пусть 045 451 714 — А в восьмеричной
системе счисления. Это означает, что А = (x1, y1,
z1) = (045, 451, 714)
. Аналогично, пусть В = (x2,
y2, z2) = (055, 471, 720)
, а неподвижная точка находится
в середине отрезка АВ, M = (xM, yM, zM)
= (051, 461, 716)
. Зададим l = 0,610
(в десятичной системе счисления).
Адресное расстояние между точками А
и М составляет $$\Delta A_{x} = 4$$, $$\Delta A_{y} = 10 = 8_{10}$$, $$\Delta A_{z} = 2$$. Максимальное адресное расстояние
по всем координатам $$\Delta А = 8_{10}$$.
Тогда очевидно, что если по y, определяя
точку переноса, следует шагать с переадресацией, определяемой
коэффициентом сжатия, то при том же числе переносов по x
следует производить переадресацию в два раза реже, а по z
— в четыре раза. Тогда по некоторым координатным адресам переноса возможна
неоднократная запись. Однако, поскольку происходит сокращение и диапазона изменения
координаты у, по некоторым адресам переноса возможна неоднократная запись.
Здесь и приходит на помощь стек, позволяющий сохранить информацию для последующего восстановления
(расслабления)
Пусть i — параметр цикла переноса
точек отрезка АМ для его преобразования
в отрезок А*М, i = 1, ..., 11. Здесь
граничное значение цикла определяется максимальным значением
точек переноса по всем координатам, равным $$\Delta А + 1$$.
Программно перенос производится с конца отрезка к его началу — чтобы не
уничтожать еще не перенесенную информацию. Тогда адреса переноса отдельно
по координатам находятся как
В указанном порядке рассчитаем адреса переноса
отдельно по координате x, не допуская
при округлении выхода адресов из адресного пространства
051 - 1 x 0,610 x 0,510 = 051
051 - 2 x 0,610 x 0,510 = 050
051 - 3 x 0,610 x 0,510 = 050
051 - 4 x 0,610 x 0,510 = 050
051 - 5 x 0,610 x 0,510 = 047
051 - 6 x 0,610 x 0,510 = 047
051 - 7 x 0,610 x 0,510 = 046
051 - 10 x 0,610 x 0,510 = 046
051 - 11 x 0,610 x 0,510 = 046
Рассчитаем координату у:
461 - 1 x 0,610 x 1 = 460
461 - 2 x 0,610 x 1 = 460
461 - 3 x 0,610 x 1 = 457
461 - 4 x 0,610 x 1 = 456
461 - 5 x 0,610 x 1 = 456
461 - 6 x 0,610 x 1 = 455
461 - 7 x 0,610 x 1 = 454
461 - 10 x 0,610 x 1 = 453
461 - 11 x 0,610 x 1 = 452
Адреса переноса по координате z:
716 - 1 x 0,610 x 0,2510 = 716
716 - 2 x 0,610 x 0,2510 = 716
716 - 3 x 0,610 x 0,2510 = 716
716 - 4 x 0,610 x 0,2510 = 716
716 - 5 x 0,610 x 0,2510 = 715
716 - 6 x 0,610 x 0,2510 = 715
716 - 7 x 0,610 x 0,2510 = 715
716 - 10 x 0,610 x 0,2510 = 715
716 - 11 x 0,610 x 0,2510 = 715
Найдены адреса, по которым необходимо осуществить
пересылку при сокращении левой части
Аналогично, для правой части МВ, найдем адресные расстояния $$\Delta A_{x} = -4$$, $$\Delta A_{y} = -10 = -8_{10}$$, $$\Delta A_{z} = -2$$, $$\Delta А = -8_{10}$$. По (15.2) для адресов переноса по x, y, z находим
051 + 1 x 0,610 x 0,510 = 051 461 + 1 x 0,610 x 1 = 462 716 + 1 x 0,610 x 0,2510 = 716 051 + 2 x 0,610 x 0,510 = 052 461 + 2 x 0,610 x 1 = 463 716 + 2 x 0,610 x 0,2510 = 716 051 + 3 x 0,610 x 0,510 = 052 461 + 3 x 0,610 x 1 = 463 716 + 3 x 0,610 x 0,2510 = 716 051 + 4 x 0,610 x 0,510 = 052 461 + 4 x 0,610 x 1 = 464 716 + 4 x 0,610 x 0,2510 = 716 051 + 5 x 0,610 x 0,510 = 053 461 + 5 x 0,610 x 1 = 464 716 + 5 x 0,610 x 0,2510 = 717 051 + 6 x 0,610 x 0,510 = 053 461 + 6 x 0,610 x 1 = 465 716 + 6 x 0,610 x 0,2510 = 717 051 + 7 x 0,610 x 0,510 = 053 461 + 7 x 0,610 x 1 = 465 716 + 7 x 0,610 x 0,2510 = 717 051 + 10 x 0,610 x 0,510 = 054 461 + 10 x 0,610 x 1 = 466 716 + 10 x 0,610 x 0,2510 = 717 051 + 11 x 0,610 x 0,510 = 054 461 + 11 x 0,610 x 1 = 466 716 + 11 x 0,610 x 0,2510 = 717
Таким образом, найдены адреса ячеек памяти, куда следует пересылать информацию
при сокращении
Свяжем перебор искомых точек с тем же параметром цикла организации пересылки
$$x = x_{M} - i\cfrac {\Delta A_x}{\Delta A} y = y_{M }- i\cfrac {\Delta A_y}{\Delta A} z = z_{M} - i\cfrac {\Delta A_z}{\Delta A}.$$Найдем отдельно для x, y, z отрезка АМ адреса пересылаемых
точек:
051 - 1 x 0,510 = 050 461 - 1 x 1 = 460 716 - 1 x 0,2510 = 716 051 - 2 x 0,510 = 050 461 - 2 x 1 = 457 716 - 2 x 0,2510 = 715 051 - 3 x 0,510 = 047 461 - 3 x 1 = 456 716 - 3 x 0,2510 = 715 051 - 4 x 0,510 = 047 461 - 4 x 1 = 455 716 - 4 x 0,2510 = 715 051 - 5 x 0,510 = 046 461 - 5 x 1 = 454 716 - 5 x 0,2510 = 715 051 - 6 x 0,510 = 046 461 - 6 x 1 = 453 716 - 6 x 0,2510 = 714 051 - 7 x 0,510 = 045 461 - 7 x 1 = 452 716 - 7 x 0,2510 = 714 051 - 10 x 0,510 = 045 461 - 10 x 1 = 451 716 - 10 x 0,2510 = 714 051 - 11 x 0,510 = 045 461 - 11 x 1 = 450 716 - 11 x 0,2510 = 714
Для отрезка МВ находим
051 + 1 x 0,510 = 052 461 + 1 = 462 716 + 1 x 0,2510 = 716 051 + 2 x 0,510 = 052 461 + 2 = 463 716 + 2 x 0,2510 = 716 051 + 3 x 0,510 = 053 461 + 3 = 464 716 + 3 x 0,2510 = 716 051 + 4 x 0,510 = 053 461 + 4 = 465 716 + 4 x 0,2510 = 716 051 + 5 x 0,510 = 054 461 + 5 = 466 716 + 5 x 0,2510 = 716 051 + 6 x 0,510 = 054 461 + 6 = 467 716 + 6 x 0,2510 = 716 051 + 7 x 0,510 = 055 461 + 7 = 470 716 + 7 x 0,2510 = 716 051 + 10 x 0,510 = 055 461 + 10 = 471 716 + 10 x 0,2510 = 716 051 + 11 x 0,510 = 055 461 + 11 = 471 716 + 11 x 0,2510 = 716
"Склеим" координатные части адресов и
обозначим ее окончательно в двух столбцах: в левом
— пересылку для левой части
(050 460 716) => 051 460 716 (052 462 716) => 051 462 716
(050 457 715) => 050 460 716 (052 463 717) => 052 463 716
(047 456 715) => 050 457 716 (053 464 717) => 052 463 716
(047 455 715) => 050 456 716 (053 465 717) => 052 464 716
(046 454 715) => 047 456 715 (054 466 717) => 053 464 717
(046 453 714) => 047 455 715 (054 467 720) => 053 465 717
(045 452 714) => 046 454 715 (055 470 720) => 053 465 717
(045 451 714) => 046 453 715 (055 471 720) => 054 466 717
(045 450 714) => 046 452 715 (055 471 720) => 054 466 717
В строках 2 и 3, в 6 и 7, а также в 8 и 9 видно формирование стеков при неоднократной записи в одну клетку.
Однако вся проделанная выше работа по сжатию А
и В. Переносить ее клетки следует в таком случае лишь тогда, когда
она принадлежит оболочке или пересекается с ней.
Сокращение
Таким образом, каждый перенос клетки
Рассмотрим взаимодействие
Пусть, как и ранее, задано значение 0 <=
l <= 1
, приводящее к сокращению объекта в направлении АВ (рис. 15.3). Объект должен преобразиться, как показано
на рисунке пунктиром. М, как и прежде, — неподвижная (относительно
неподвижного объекта) точка М, перпендикулярную l.
(рис 15.3) Сокращение твердого телаПлоскость М описывается уравнением
Пусть точка (xj, yj,
zj)
— текущая клетка объекта с адресом xjyjzj
, подлежащая
указанному переносу. Найдем координаты xj(M),
yj(M), zj(M)
ее проекции
на плоскость М. Так как точка с этими координатами принадлежит
плоскости М и минимизирует квадрат расстояния точки (xj,
yj, zj)
до этой плоскости, задача такой условной минимизации
формулируется так:
найти значение xj(M),
yj(M), zj(M)
,
удовлетворяющее требованию
(xj(M) - xj )2
+ (yj(M) - yj)2 + (zj(M)
- zj)2 -> min
при условии
(xj(M) - xM)(x1
- xM) + (yj(M) - yM)(y1
- yM) + (zj(M) - zM)(z1
- zM) = 0.
Решим данную задачу, используя уравнение Лагранжа
$$(x_{j}^{(M)} - x_{j})^{2} + (y_{j}^{(M)} - y_{j})^{2} + (z_{j}^{(M)} - z_{j})^{2} + \lambda [(x_{j}^{(M)} - x_{M})(x_{1} - x_{M}) + (y_{j}^{(M)} - y_{M})(y_{1} - y_{M}) + (z_{j}^{(M)} - z_{M})(z_{1} - z_{M})] \to min$$.
Дифференцируя по всем переменным, включая $$\lambda,$$ и приравнивая производные нулю, получим систему линейных уравнений
$$2(x_{j}^{(M)} - x_{j}) + \lambda (x_{1} - x_{M}) = 0$$
$$2(y_{j}^{(M)} - y_{j}) + \lambda (y_{1} - y_{M}) = 0$$
$$2(z_{j}^{(M)} - z_{j}) + \lambda (z_{1} - z_{M}) = 0$$
(xj(M) - xM)(x1 - xM) + (yj(M) - yM)(y1 - yM) + (zj(M) - zM)(z1 - zM) = 0.
Решая систему, находим
$$\begin{array}{l} x^{(M)}_{j} = 0,5\lambda(x_{M} - x_{1}) + x_{j}\\ y^{(M)}_{j} = 0,5\lambda(y_{M} - y_{1}) + y_{j} \\ z^{(M)}_{j} = o,5\lambda(z_{M} - z_{1}) + z_{j}\\ \lambda =2 \cfrac{(x_j - x_M) (x_1 - x_M)+ (y_j - y_M) (y_1 - y_M)+ (z_j - z_M) (z_1 - z_M)} {(x_1 - x_M)^2 +(y_1 - y_M)^2 +(z_1 - z_M)^2}. \end{array}$$Таким образом, получена xj, yj,
zj
и с концом в точке xj(M), yj(M),
zj(M)
. Эта же точка является неподвижной. Тогда по (14.2) и (14.3) имитируется
сжатие
Найдем квадрат r2 кратчайшего
расстояния между произвольной текущей точкой объекта или
только его оболочки xj, yj, zj) и мышцей. Это расстояние определяется
с помощью проекции xj0, yj0, zj0)
данной точки на А ), или ее удаленностью от концов А ).
(рис 15.4) Сокращение вязкого телаПредполагая, что данная проекция принадлежит kmin из соотношения
Значение kmin, которое
определяет клетку k:
(xj0 - x1 - k(x2
- x1)(x2 - x1) + (yj0
- y1 - k(y2 - y1)(y2 -
y1) + (zj0 - z1 - k(z2
- z1)(z2 - z1) = 0
Откуда
$$k_{min} = \frac{(x_{j0}-x_1) (x_2-x_1)+ (y_{j0}-y_1)(y_2-y_1)+ (z_{j0}-z_1) (z_2-z_1)} { (x_2-x_1)^2+ (y_2-y_1)^2+ (z_2-z_1)^2 }.$$Если выполняется условие 0 <= kmin <= 1,
искомая проекция действительно принадлежит r2 отыскивается в результате подстановки (15.7) в (15.6).
Если kmin < 0, ближайшей точкой А.
В этом случае
r2 = (x1 - xj)2
+ (y1 - yj)2 + (z1 - zj)2.
Если kmin > 1, ближайшей
точкой В:
r2 = (x2 - xj)2
+ (y2 - yj)2 + (z2 - zj)2.
Чтобы определить направление переноса клетки (xj,
yj, zj)
, необходимо по (15.5) найти ее проекцию
на плоскость М. Тогда для нахождения адресов циклической пересылки
значащих клеток объекта воспользуемся формулами
Здесь $$\rho$$ — коэффициент вязкости
и R2
— заведомо большое число,
ограничивающее значение r2
, где
смещение полностью затухает.
Перебор клеток объекта для пересылки выполняется
по (15.3). Пересылка выполняется для обоих полупространств,
разделяемых плоскостью М.
Сокращение вязкой и упругой среды, такой
как резина, губка, упитанные щеки и др., обычно сопровождается
явлением, которое можно назвать попыткой сохранения объема в результате
Пусть, как и прежде, xj, yj,
zj
— составляющие адрес координаты текущей
клетки
(рис 15.5) Сокращение тела с "выпучиванием"По (15.7), подставив вместо xj0,
yj0, zj0
значение найденной
по (15.8) точки переноса (xj пер, y
j
пер
, zj пер)
, найдем kmin
и, невзирая на его значение, найдем проекцию (xj0пер,
yj0пер, zj0пер)
на
(Заметим, что уравнения (1) при 0 <= k
<= 1
определяют собственно
Запишем систему параметрических уравнений прямой,
проходящей через точки (xj пер, y
j
пер
, zj пер)
и (xj пер0,
yj пер0, zj пер0)
:
Задав малое приращение $$\Delta m > 0$$,
зависящее от r2пер = (xj пер0
- xj)2 + (yj пер0 - yj)2
+ (zj пер0 - zj пер)2
, и приняв $$m = 1 +\Delta m$$, получим окончательно точку переноса (xj пер*,
yj пер*, zj пер*)
, отстоящую от точки
переноса, найденной по (15.8), и смещенную в перпендикулярном направлении от
Эмпирическую зависимость коэффициента смещения $$\Delta m$$ от указанного выше расстояния можно выбрать как
$$\Delta m = l\rho \left (1 - \frac{r^2_{пер}}{R^2} \right ).$$Тогда из (9) находим
$$\begin{array}{l} x^*_{j пер} = (1 + \Delta m)(x^0_{j пер} - x_{j пер})+ x_{j пер}\\ y^*_{j пер} = (1 + \Delta m)(y^0_{j пер} - y_{j пер})+ y_{j пер}\\ z^*_{j пер} = (1 + \Delta m)(z^0_{j пер} - z_{j пер})+ z_{j пер}. \end{array}$$Таким образом, сокращая АВ, показанную на рис. 15.2,
можно, например, изобразить то подобие улыбки, которая
обозначена пунктиром. Введение других А1В1 под нижней губой, может значительно
усилить правдоподобие улыбки.
Координаты O(x0, y0, z0)
внутри объекта (рис. 15.6). АВ связывает лучи (элементы скелета),
исходящие из точки О. Сокращение
(рис 15.6) Деформация объекта вокруг шарнираПрактический интерес представляет случай, когда
неподвижная точка
По аналогии с (15.1), луч ОА описывается
параметрической системой уравнений
Если 0 <= k <= 1, то уравнения
отображают отрезок ОА. Нас же интересует
вся прямая, исходящая из точки О.
Отобразим сокращение А в клетку А' (x1',
y1', z1'
), в упрощенной форме воспользовавшись
(15.2) и (15.3). Этим установим новое положение ОА' луча ОА.
Уравнения этого луча имеют вид
$$\begin{array}{l} x = k'(x_{1}' - x_{0}) + x_{0}\\ y = k'(y_{1}' - y_{0}) + y_{0} \\ z = k'(z_{1}' - z_{0}) + z_{0}. \end{array}$$Если 0 <= k' <= 1, то уравнения
отображают отрезок ОА'. Однако точка А'
не отображает факт вращения луча ОА вокруг точки О.
При этом вращении точка А должна переместиться в точку А1
,
отстоящую от О на расстояние, равное длине отрезка ОА. Найдем координаты
этой точки на луче ОА' из соотношения
(x11 - x0)2
+ (y11 - y0)2 + (z11
- z0)2 = r2 = (x1 - x0)2
+ (y1 - y0)2 + (z1 - z0)2.
В параметрической форме представления (12) точке (x11, y11, z11)
соответствует некоторое значение k1'
параметра.
Подставим вместо координат этой точки их параметрическое представление:
(k1')2((x1'
- x0)2 + (y1' - y0
)2 + (z1' - z0)2) =
r2
.
Откуда
$$k_{1}' = \frac{r}{\sqrt{(x_1'-x_0)^2+(y_1'-y_0)^2+(z_1'-z_0)^2}}$$Очевидно, k1' > 0
. Таким
образом, точка А1
переноса конца А
Для синхронных действий при переносе всех клеток
объекта, подлежащих перемещению вокруг ОА1
в зависимости
от того же параметра k, определяющего положение
(15.12) луча ОА
Пусть (xj, yj, zj)
— точка (клетка), подлежащая переносу, в соответствии с сокращением О, но с исключением других деформаций объекта. Чтобы найти
координаты (xj(OA), yj(OA),
zj(OA))
проекции этой точки на луч ОА,
решим задачу минимизации расстояния между этой точкой и лучом ОА, описанным
системой (15.12):
(xj - k(x1 - x0)- x0)2 + (yj - k(y1 - y0) - y0)2 + (zj - k(z1 - z0) - z0)2 -> min.
Приравняв производную по k нулю, получим
(xj - k(x1 - x0) - x0)(x1 - x0) +
(yj - k(y1 - y0)
- y0 )(y1 - y0) +
(zj - k(z1 - z0) -
z0)(z1 - z0) = 0.
Отсюда
$$k_{(min)} = \frac{(x_j-x_0) (x_1-x_0)+ (y_j-y_0) (y_1-y_0)+ (z_j-z_0) (z_1-z_0)}{(x_1-x_0)^2+ (y_1-y_0)^2+ (z_1-z_0)^2 }.$$Подставим (15.16) в (15.12) и найдем координаты (xj(OA), yj(OA),
zj(OA))
искомой проекции.
Вычислим разности координат точки (xj,
yj, zj)
и найденной ее проекции
на луч ОА, определяющие смещение этой точки:
Подстановкой (15.15) в (15.14) найдем координаты (xj(OA1), yjOA1),
zj(OA1))
"образа" точки (xj(OA),
yjOA), zj(OA))
при повороте луча. Тогда координаты x
j
пер
, yj пер, zj пер
переноса точки (xj, yj,
zj)
отыскиваются так:
Организовав цикл по j - по всем точкам
объекта (или оболочки) в окрестности луча ОА,
выполним требуемую имитацию движения.
До сих пор рассматривалось поведение объекта в
единственной системе координат. Взаимодействие многих
объектов требует наличия центральной системы координат,
в которой происходят все перемещения объектов относительно
друг друга, и систем координат, связанных с каждым объектом
— объектовых систем координат. Объект создается в его объектовой
системе координат. Его движения "относительно себя" — сокращение
Это означает, что каждая n-я объектовая система координат связана с центральной системой матрицей пересчета:
$$\left ( \begin{array}{c} x \\ y \\ z \end{array} \right ) = \left ( \begin{array}{ccc} cos(x, x_n) cos(x, y_n) cos(x, z_n) \\ cos(y, x_n) cos(y, y_n) cos(y, z_n) \\ cos(z, x_n) cos(z, y_n) cos(z, z_n) \end{array} \right ) \left ( \begin{array}{c} x_n \\ y_n \\ z_n \end{array} \right ) +\\+ \left ( \begin{array}{c} x_{n0} \\ y_{n0} \\ z_{n0} \end{array} \right )$$Здесь элементы матрицы — направляющие косинусы
углов между осями, xn0, yn0,
zn0
— координаты начала объектовой системы.
Все указанные величины являются переменными. Только плавно изменяя
их значения, можно добиться перемещения, поворота или вращения объекта
среди других объектов общей сцены, связанной с центральной системой координат.
Отсюда важная рекомендация: чтобы имитировать относительное
движение объектов, необходимо плавно, в реальном времени, давать
приращения
Такое воздействие необходимо не только при определенном взаимодействии различных объектов, но и на уровне формирования, "ваяния" объекта. Идея такого ваяния заключается в следующем.
Пусть в память введена некоторая заготовка, имеющая наиболее близкую форму для желаемого объекта. (Например шар — для формирования головы.) Приближая к заготовке объект-"инструмент", например молоток, необходимо потребовать, чтобы при угрозе прикосновения к объекту, ближайшие его клетки отступали, и оболочка, продавливаясь, принимала форму проникающего инструмента. Эта операция напоминает ковку или штамповку. Таким многократным воздействием с разных сторон можно добиться любой формы объекта.
Можно допустить не только вдавливание инструмента в объект, но и вытягивания близлежащей области, подобно нарыву. В этом случае после соприкосновения с объектом следует отводить инструмент от него. Близкая область оболочки должна вытягиваться вслед за инструментом.
Если не деформировать оболочку, а позволить инструменту проникать в объект, то подобное действие сравнимо с действием ножа. Таким образом от объекта могут отсекаться части, — для последующего уничтожения или для создания новых объектов.
Роль подобных инструментов могут играть объекты друг для друга. Это позволит, например, имитировать некоторые разрушительные события.
Для построения объектов целесообразно воспользоваться тремя координатными проекциями, подобно 3D-MAX. Сначала в одной из проекций рисуется пока неточный, предполагаемый разрез объекта. На других проекциях автоматически сформируются отрезки — боковые проекции этого разреза. На разрезе определяется точка для дальнейшей деформации объекта в двух других проекциях. Проекция этой точки высвечивается на двух других проекциях.
Подведя мышь к одной из проекций точки, следует повести ее (мышь) вверх или вниз, формируя выпуклость вслед за этим движением так, чтобы первоначально заданная плоская поверхность образовала выпуклость. Так сформируется объемное изображение. Если при этом придерживать клавишу control (или другим способом), плоская поверхность сохранится для замкнутости объема или для последующей аналогичной деформации в ту или другую сторону.
Повороты получившейся объемной фигуры позволяют производить указанным способом различные деформации.
Такой способ формирования объектов может быть признан
основным. Однако выше указывалось на возможность "ваяния"
с помощью временно создаваемых
Необходимо помнить, что объекты в z = 0 в центральной системе координат. Эта плоскость и представляет
экран. Значит, каждая прямая, исходящая из точки xi, yi,
0
и перпендикулярная экрану, продолжается (здесь рассматриваем только прозрачную
среду) до первого пересечения с одним из объектов или с фоном. Полученная точка обеспечивает
изображение в данной текущей точке экрана.
Для получения различных срезов (подобно томографии)
экран может формироваться и в других плоскостях вида z = a > 0.
Для получения различных ракурсов центральная система координат должна быть преобразована.
Введение
<сократить мышцу m с l = 0,8>;
<повернуть объект Р по матрице S>;
<приблизить объект Р>;
<перенести объект Р>;
<показать срез z = 5> и т.д.
Таким образом, могут планироваться и исполняться сцены, основанные на имитации движения объектов, их мимики, преобразования и т.д.
Как каждая управляющая система, работа рассматриваемой
системы тактируется. Поскольку видео — основное ее назначение,
то тактовую частоту целесообразно совместить с частотой следования
кадров. (Если хватит производительности! Иначе придется получать промежуточные
кадры путем интерполяции.) Тогда программа ориентируется на имитацию движения в
отдельном кадре в системе реального времени. Это значит, что если дан приказ сократить
Эмпирические зависимости для такого дробления целесообразно получить экспериментально.
Воспроизводя принципы живых организмов, необходимо
учитывать, что
Программа управления объектами, как и каждая компьютерная программа, должна предусматривать альтернативные действия в случае выполнения предусмотренных условий, т.е. содержать команды условного перехода.
Занимаясь "живым" моделированием на основе компьютерных и информационных технологий, следует быть приверженным точным наукам, в которых любые построения начинаются с исчерпывающих, непротиворечивых определений.
Что есть жизнь? Какое существо можно назвать живым?
В качестве комментариев отметим, что даже внутренние
болезни имеют внешние причины: экологические, политические,
наследственные, бактериологические и т.д. В то же время философски
уместно говорить о жизни существа не в абсолютном аспекте, а в аспекте
моделирования: вся жизнь представляет собой
Посчитаем достаточными положения 1 и 2 для настоящего уровня решения задачи "живого" моделирования. Однако мы понимаем, что достичь такого уровня обучения, когда система сама начинает осознавать, что хорошо, а что плохо, на основе индуктивного и дедуктивного мышления, вряд ли сейчас возможно практически. Мы вынуждены решать задачу-минимум, требуя, в основном для культурно-развлекательных целей, адекватности реакции. Степень этой адекватности в соответствии с означенным критерием мы уж предусмотрим сами.
Например, можно научить объект улыбаться, если он видит картинку с преобладанием розовых тонов, но гневаться, если на картинке превалирует коричневый цвет и т.д.
Таким образом, ближайшей практической задачей является закладка инструментальных основ. Позволим проблеме развиваться на базе нейросетевых технологий более глобально в дальнейшем.
Пусть сотворенный объект ( рис. 15.7 ) в компьютерном или материальном воплощении наделен некоторым фоновым поведением, реализуемым программно. Например, такое поведение может быть аналогичным поведению зверя в клетке, нервно дефилирующего вдоль решетки. Целесообразно в программе использовать и элементы случайности на основе ДСЧ — датчика случайных чисел. Это может ввести разнообразие в фоновое поведение объекта: внезапный поворот головы, смена направления движения и т.д. Такое поведение уже само по себе является занимательным для зрителя.
Однако представим себе, что фоновая программа предусматривает периодическое прерывание для включения "внимания" объекта к внешней обстановке — к "картинке", циклически вводимой в его память с помощью видеоввода.
Включается программа анализа "картинки",
питающая
(рис 15.7) Возможный объект натурного моделирования
Ограничиваясь только цветом, можно, в терминах алгебры высказываний, представить следующий пример алгоритма реакции объекта.
"В квадрате i, j преобладает зеленый цвет" ∧ "отсутствуют резкие переходы в оттенках" ->
-> "Запустить программу умиротворения";
"В квадрате i, j преобладает зеленый цвет" ∧ "наблюдаются резкие переходы в оттенках" ->
-> "Запустить программу тоски по лесным далям";
"В квадрате i, j преобладает голубой цвет" ∧ "наблюдаются темные вкрапления" ->
-> "Запустить программу приветствия";
"В квадрате i, j преобладает красный цвет" ->
-> "Запустить программу повторного обзора квадрата" ∧ "Запустить программу гнева";
"В квадрате i, j обнаружен круг с преобладанием телесного цвета" ->
-> "Запустить программу приветствия";
"В квадрате i, j преобладает коричневый цвет" ->
-> "Запустить программу презрения";
"В квадрате i, j преобладает желто-оранжевый цвет" ->
-> "Запустить программу радостного возбуждения" и т.д.
Тогда обученная для реализации данного алгоритма
однослойная
(рис 15.8) Нейросеть для "живого" моделированияЗдесь нейрон-рецептор 1 принимает значение достоверности
высказывания "В квадрате преобладает зеленый цвет" как величину возбуждения.
Рецептору 2 сообщается значение достоверности высказывания "Отсутствуют резкие переходы в оттенках".
Рецептор 3 принимает значение достоверности высказывания "Наблюдаются резкие переходы в оттенках".
Рецептор 4 возбуждается на величину достоверности высказывания "В квадрате преобладает голубой цвет".
Рецептор 5 принимает значение достоверности высказывания о похожести на полет птиц.
Рецептор 6 возбуждается на преобладание красного цвета.
Рецептор 7 возбуждается на величину достоверности
обнаружения круга телесного цвета.
Рецептор 8 принимает значение достоверности преобладания
коричневого цвета.
Рецептор 9 принимает значение достоверности преобладания
желто-оранжевого цвета.
И так далее — по расширяемому на основе бесконечного совершенствования количеству используемых факторов.
Практически за эту достоверность можно принимать
частоту появления или "удельный вес" определенного
цвета (соответствующих пикселей) в анализируемом квадрате. Подавая
значения достоверности на
Рекомендуемая передаточная функция имеет вид
$$\begin{array}{l} V_{Вых} = \xi \left ( \sum_{\nu} \omega_{\nu} V_{\nu} – h \right ), \\ \left(\xi (s) = \left \{ \begin{array}{ll} s, \mbox{при } s \ge 0 \\ 0, \mbox{при } s < 0 \end{array} \right \right ) \end{array}.$$Порог h целесообразно выбрать достаточно
высоким, например h = 0,5, так, чтобы объект
не выглядел слишком "нервным", возбуждаясь понапрасну
из-за малой причины возбуждения.
Таким образом, "живое" моделирование — это экспериментальное направление, позволяющее проверить и осуществить все достижения на пути развития технологий искусственного интеллекта. Это реальный путь воплощения новых направлений в искусстве, в шоу-бизнесе, в учебной, игровой и развлекательной деятельности.
Вместе с тем, наряду с разработкой инструментария
и постановкой задачи дальнейших исследований в области
Прежде всего это задача оценки современных компьютерных возможностей реализации столь большого объема работ в реальном времени. Очевидно, что лишь высокопараллельная архитектура, подобная мозгу, может эффективно исполнять функции видеонейрокомпьютера.
Следует проанализировать эффективность применения современных суперкомпьютеров, таких, например, как Эльбрус-E2k.
Анализ приведенных выше математических построений
говорит в пользу
Реализация
Управление сложными системами с возможным участием операторов и диспетчеров предъявляет высокие требования к динамическому отображению их состояния для оперативного анализа ситуации и принятия решений. Задача оператора значительно усложняется в случае территориальной разобщенности средств системы, превращаясь в задачу многоуровневого контроля и диагностики. Возникает необходимость интеллектуальной надстройки всей системы отображения, контроля и принятия решений, производящей оперативную первичную обработку многообразной регистрирующей, отображающей и управляющей информации для предварительного, грубого отображения происходящего процесса. Задачей такого предварительного, поверхностного отображения является выяснение того, протекает ли процесс в пределах нормы, грозит ли уход за эти пределы, а также установление факта и причин тревоги.
Отображение должно быть наглядным, доступным и понятным широкому кругу наблюдателей, бесспорным и образным, а также не должно требовать постоянных кропотливых усилий операторов. Важна и эстетическая составляющая.
Требование образности и эстетики, обеспечивающих
наибольшее понимание, приводит к целесообразности использования
Для такой предварительной, грубой оценки применимы
принципы
Таким образом, на вход
На данном этапе утверждения важности данного направления
не следует брать на себя смелость заявления о
Модели
Все три типа моделей предполагают связь нейронов выходного слоя с соответствующими программами (процедурами) имитации реакции объектов на ситуацию по принципу ассоциативного мышления. При этом величина возбуждения нейрона выходного слоя служит основным параметром соответствующей программы, определяющим реакцию. Этим обеспечивается возможность совмещения различных реакций, дающих некоторую результирующую.
Натурная модель, ввиду значительного применения элементов механики, электротехники и других технологий, по-видимому, имеет ограниченное применение в сфере развлечений или при медленно изменяющихся факторах (реакция на прогноз погоды) и др.
Электронная графическая модель при кажущейся доступности технологий требует критического рассмотрения и развития достаточно разнообразных современных средств для реализации динамики их поведения, как реакции на входные сигналы. В этом случае решающую роль играет проблема управляемой анимации в реальном времени — проблема "живого" моделирования.
Тем не менее все возможности должны быть экспериментально исследованы на моделях.
Помимо актуальной задачи
Основная часть экрана для работы пользователя с
моделью
(рис 15.9) Экран моделиОсновными элементами этого экрана являются два
поля: поле показываемых (создаваемых) с помощью мыши
образов (ПО) и поле
Если ПО пусто или контурно нарисованный в нем объект
не узнан
Если в реальном времени, независимо от текущего
состояния
Однако этот переход может быть прерван показом
нового образа на поле ПО. Тогда, если предъявленный
объект узнан, переход в новое состояние осуществляется
из достигнутого текущего состояния. Если объект не узнан,
но прошлое содержимое ПО потеряно,
В ограниченной демонстрационной реализации
Увеличение числа клеток экрана ПО (повышение разрешающей способности) служит увеличению возможного числа эталонов и вероятности распознавания.
Для имитации настроения
На основе этих кадров формируются
(рис 15.10) Образы для комплектации сюжетных рядовДинамическая подстановка
Система анимации на основе текущего
Функциональная схема модели показана на рис. 15.11.
(рис 15.11) Функциональная схема моделиБаза данных содержит пополняемое в процессе эксплуатации
множество
Поведение
Каждая реакция (веселье, огорчение и т.д.) приводит
к медленному, в реальном времени, переходу к соответствующему
выражению лица. Для этого выделяется текущий
Этот переход осуществляет аниматор. Он отображает
на демонстрационном экране кадры
Для облегчения понимания перейдем к рассмотрению
"видимых" объектов — образов: букв, фруктов,
зверей и т.д. В общем случае очевидно, что каждую точку
в
Тогда, на экране образа производится асинхронное, по отношению к демонстрации, задание образа — контурного рисунка (с помощью мыши или джойстика) некоторого объекта, как из числа тех, которые могут быть распознаны, так и произвольного.
С каждым объектом, которые система "знает",
связан свой
Выбор нового
Ее
На основе максимального возбуждения одного нейрона
выходного слоя нейросети производится определение реакции:
выбор соответствующего этому нейрону
Для начального этапа разработки — эксперимента
и демонстрации — достаточно выбрать однослойную
Запоминание образа-эталона, т.е. обучение, производится непосредственным установлением связей между клетками области экрана, включающей эталон (с учетом допусков, позволяющих неточное воспроизведение эталона в рабочем режиме, а лишь приблизительное — нетвердой рукой, с зашумлением и т.д.), и нейроном выходного слоя, "отвечающим" за этот эталон. Веса связей — единичные. Данный принцип изложен в лекции 2.
На рис. 15.12 показаны связи, отображающие запоминание эталона "яблоко". Для упрощения выбран экран в 6x4 клеток. Покрываемые эталоном клетки закрашены.
(рис 15.12) Обучение яблокуПосле обучения яблоку, т.е. после фиксации введенных связей, введем эталон "морковка". Отдельно его расположение на экране может быть проиллюстрировано на рис. 15.13.
(рис 15.13) Расположение морковки на экранеЗакрепим за морковкой нейрон выходного слоя и свяжем его со всеми закрашенными клетками экрана.
Совместное запоминание двух эталонов показано на рис. 15.14.
(рис 15.14) Совместное запоминание эталонов яблока и морковки
(рис 15.15) Матрица следования нейросети, обученной двум эталонамОднако очевидно, что при сквозной нумерации рецепторов однослойной нейросети достаточно хранить и анализировать лишь строки, соответствующие нейронам выходного слоя, т.к. остальные строки — нулевые. В данном случае это две последние строки.
Выберем Vi
возбуждения нейронов выходного
слоя считаем
где $$\xi (х)$$ — не раз используемая функция отклонения отрицательных значений.
Здесь j принимает значение номеров
рецепторов, участвующих с единичными весами (поэтому
веса не указаны в Gj
— число таких рецепторов.
Делением на Gj
производится приведение
всех величин возбуждения по эталонам в один диапазон изменения.
Это необходимо для того, чтобы "большие" образы, частично
засвеченные вследствие возмущения "маленьких" образов, не
подавляли эти последние. Так, в данном примере "морковка"
засвечивает 16 клеток, а "яблоко" — только 13.
Порог h определяет предел допустимости
вывода.
Конечно, в примере экран содержит всего 24 клетки, поэтому его разрешающая способность, а следовательно, вероятность распознавания очень низки. Тем не менее с достаточной уверенностью можно считать, что если на экране произвольно нарисовать яблоко, то, скорее всего, рисунок более засветит те рецепторы, которые связаны с нейроном "яблоко", и в меньшей степени — рецепторы "морковки". Тогда при расчете возбуждения нейронов выходного слоя следует ожидать, что нейрон "яблоко" будет обладать большей величиной возбуждения.
Однако в любом случае величина возбуждения должна преодолеть порог на тот случай, если это и не морковка, и не яблоко, а также при большом "зашумлении".
Алгоритм обработки выделенных строк
Последовательно просматриваются строки, соответствующие
нейронам выходного слоя, и для каждой строки рассчитывается
значение
Работа модели, как системы реального времени, тактируется в соответствии с темпом выдачи кадров, т.е. с частотой, обеспечивающей комфортное восприятие.
Проблема анимации заключается в выдаче промежуточных
кадров по
С целью демонстрации потенциальных возможностей
воспользуемся упрощенным алгоритмом
А именно, при формировании промежуточных кадров
будем руководствоваться смещением контрольных точек
и разрезов в системе координат, связанной с объектом.
Список координат контрольных точек, а также координат
точек начала и конца каждого разреза, сопровождает каждый
На рис. 15.16
показаны два смежных K и кадр L.
Однако кадр К в общем случае — некоторый начальный
( i (значению i = 0 соответствует кадр К ),
от показа которого необходимо плавно, через показ ряда промежуточных кадров, перейти
к показу кадра L. Тогда следующий, i+1 -й кадр, выдаваемый в
следующем такте работы модели, должен быть получен на основе одного шага изменения кадра i.
Пусть на рисунке К1-К5
— исходные контрольные точки (конечно, невидимые), заданные своими
координатами (xKj, yKj)
; L1-L5
- соответствующие им контрольные точки (xLj, yLj)
в результирующем
кадре L, j = 1, ..., 5.
(рис 15.16) Кадры анимацииКонтрольные точки Kj
через N тактов должны перейти в контрольные точки Lj
, увлекая за собой некоторую окрестность $$\Delta _{j}$$. Причем моделируется свойство "вязкости",
при котором более удаленные от центра (Kj)
точки смещаются меньше.
Более того, если область $$\Delta _{j}$$ пересекается разрезом, то перенос
точек по другую сторону разреза не производится (см. открытие рта). В примере задан такой отрезок [A1, A2]
, который должен перейти в отрезок [B1,
B2]
.
Алгоритм
К и следующим L. Взводится счетчик показа промежуточных кадров
СПК. Для упрощения демонстрационной модели считаем, что между
любыми двумя смежными СПК := 20.L. Выполняется 9. Если СПК не равно нулю, выполняется
10.L загружается в БП, далее выполняется
2.j
(шаги 11-16) перебора контрольных точек объекта. По окончании цикла
организуется переход к 20.Для контрольной точки Kj (xKj,
yKj)
отыскивается соответствующая ей точка Lj
(xLj, yLj)
из СКТ кадра L. Отыскивается
область $$\Delta _{j}$$ радиуса Rj
с центром
в точке Kj
, включающая точку Lj
(ее проекцию
на кадр К ). Радиус Rj
вычисляется из соотношения
2Rj = r(Kj, Lj)
+ l,
где r — расстояние, l
— поправка, подбираемая экспериментально.
Организуется цикл перебора точек P(x,
y)
из окрестности $$\Delta _{j}$$
контрольной точки Kj
. Этот
перебор осуществляется "циклом в цикле":
По окончании перебора выполняется 17.
Проверяется, разделены ли точки P
и L разрезами. Данная проверка производится
в результате решения следующей задачи.
Пусть на рис. 15.17
точки P(x, y) и L(xL, yL)
(индекс j опустим) находятся по разные стороны отрезка [A, B],
где A = (xA, yA)
, B = (xB,
yB)
, так, что отрезки [P, L] и [A, B]
пересекаются. (Именно этот случай запрещает перемещение точки Р за разрез
— в окрестность точки L.)
(рис 15.17) Анализ разрезаРассмотрим параметрическое описание этих отрезков и запишем уравнения для нахождения точки пересечения $$(\xi , \eta )$$.
$$[P,L]: \left \{ \begin{array}{l} \xi = x+k_1(x_L –x) \\ \eta = y + k_1(y_L-y) \end{array} \right , 0\le k_1 \le 1,$$ $$[A,B]: \left \{ \begin{array}{l} \xi = x_A+k_2(x_B –x_A) \\ \eta = y_A + k_2(y_B-y_A) \end{array} \right , 0\le k_2 \le 1.$$Или:
$$\begin{array}{l} x + k_{1}(x_{L} - x) = x_{A} + k_{2}(x_{B} - x_{A}),\\ y + k_{1}(y_{L} - y) = y_{A} + k_{2}(y_{B} - y_{A}). \end{array}$$Отсюда
$$\begin{array}{l} k_1 = \cfrac{(x-x_A) (y_B-y_A) - (y-y_A) (x_B-x_A)}{ (x_B-x_A) (y_L-y) - (y_B-y_A) (x_L-x)} \\ k_2 = \cfrac{(x-x_A)}{ (x_B-x_A)}+ k_1\cfrac{(x_L-x)}{(x_B-x_A)}. \end{array}$$Если отрезки пересекаются, выполняется условие 0 <= k1 <= 1, 0 <= k2 <= 1. В
противном случае отрезки не пересекаются, и перемещение
точки Р в направлении к точке Lj
допустимо. Если точки P и L разделены разрезом,
производится переход к 12. В противном случае выполняется 14.
Рассчитываются координаты переноса точки Р
при формировании очередного промежуточного кадра К*:
Здесь учитывается удаление точки Р
от центра — от точки Kj
. Так,
на окружности радиуса Rj
перенос
затихает вовсе. Текущее значение СПК характеризует оставшуюся
часть смещения.
Kj*
,
если это была контрольная точка) в СКТ промежуточного кадра K*.
Далее выполняется 12.P(x, y) этой окрестности,
подобно организованному в блоке 12.Если точка "пустая", находится ее усредненное значение на основе непустых окружающих ее точек:
$$\begin{array}{rl}(P(x, y)) := \cfrac{1}{S}[(P(x_{n-1}, y_{m-1})) + (P(x_{n-1}, y_{m})) + \\(P(x_{n-1}, y_{m+1})) + (P(x_{n}, y_{m-1})) + \\ + (P(x_{n}, y_{m+1})) + (P(x_{n+1}, y_{m-1})) + \\(P(x_{n+1}, y_{m})) + (P(x_{n+1}, y_{m+1})) \end{array}$$где P(x, y) отождествляется с точкой P(xn, ym)
для отображения
окружающих точек, S — число таких "непустых" точек.
К*.
После обработки всех разрезов выполняется 24.P(x,
y)
, образованного прямоугольника.P(x, y) — "пустая"?Если да, отыскивается точка Q(x, y)
в кадре L (с теми же координатами) и налагается
на точку Р: P(x, y) := Q(x, y).
Далее выполняется 20.
К* полностью сформирован. Производится
загрузка сформированного кадра в буфер показа БП и управление
передается 2 для продолжения работы модели.Программная реализация
Внешний вид экрана для работы пользователя с моделью представлен на рис. 15.18.
(рис 15.18) Вид экрана для работы с клип-модельюОбласть рисования вводимых для показа компьютерному персонажу объектов реализована в виде простого графического редактора на основе примера, приведенного в [6]. Данный графический редактор позволяет создавать контурные рисунки в области рисования с помощью набора предлагаемых инструментов (карандаш, ластик) и заливать замкнутые контуры выбранным из палитры цветом с помощью инструмента "кисть".
Размер
Область демонстрации клипов, показывающих реакцию
компьютерного персонажа, реализована с помощью компонента Animate из библиотеки компонент Delphi5. Данный
компонент обладает свойством FileName, которое позволяет
программным способом указывать имя файла, содержащего требуемый для проигрывания
клип. Кроме того, у компонента Animate имеется метод Play
с параметрами FromFrame (начальный кадр), ToFrame (конечный
кадр) и Count (число повторений анимации). Этот метод позволяет программным
способом, динамически указывать, с какого кадра начинать и каким заканчивать проигрывание
анимации. Таким образом, остается с помощью любой программы, позволяющей разрабатывать клипы,
создать базу клипов, демонстрирующих реакции компьютерного персонажа на внешние раздражители.
В модели введены ограничения на качественные характеристики изображаемых объектов. Объекты могут быть только двух видов: съедобными и несъедобными. Соответственно компьютерный персонаж имеет только три реакции на внешнюю среду: 1 — состояние ожидания, оно же — если предмет незнакомый, 2 — состояние удовольствия, если узнан съедобный предмет, 3 — состояние неудовольствия, если узнан несъедобный предмет.
Для демонстрации достаточно, чтобы база данных
содержала всего один клип, созданный с помощью программы
Flash4 [17]. Данный клип содержит четыре фрагмента, разделенных
Первоначально компьютерный персонаж "ничего
не знает", т.е. база данных, где хранятся матрицы
следования, значения
На рис. 15.19 показан результат предъявления необученному компьютерному персонажу изображения цветка.
(рис 15.19) Реакция на предъявлении цветка до обученияВидно, что реакция отсутствует, а в поле названия
написано "Не знаю, что это". Теперь, если в
поле названия написать "Цветок", указать признак
"несъедобное" и нажать кнопку "ЗАПОМНИТЬ",
то начинает работать блок обучения модели. Прежде всего, вдоль
контура рисунка производится закрашивание тех клеточек, которые
захватываются контуром, затем каждая закрашенная клетка обрамляется
закрашенными клетками справа, слева, сверху и снизу. Таким образом,
вдоль контура формируется полоса допуска для учета "дрожания руки"
при рисовании. Далее вычисляется значение
(рис 15.20) Реакция на знакомое съедобноеКогда компьютерный персонаж уже обучен, т.е. база данных не пуста, то при нажатии на кнопку "ЧТО ЭТО?" после сканирования области рисования и "фокусирования зрения" запускается блок распознавания. В нем сначала осуществляется закрашивание клеточек вдоль контура рисунка, а затем производится перебор эталонов базы данных и попытка "уложить предъявленный" образ в границы эталонов, хранимых в базе данных; при этом формируется список эталонов, в границы которых вписывается предъявленный образ. Если список пуст, то образ не узнан. В противном случае в качестве узнанного выбирается эталон в соответствии с максимальным возбуждением нейрона выходного слоя. В поле названия записывается имя эталона, указывается значение качественного признака (съедобное, несъедобное) и запускается клип реакции компьютерного персонажа. Пример такого результата показан на рис. 15.20.
***
Изложенный в лекции материал имеет скорее принципиальный
характер, затрагивая широкий спектр вопросов экспериментального
моделирования. Несомненно, что задача "живого" моделирования,
как и проблема создания на основе
Вместе с тем все более проявляется возможность
не только научно-технического, например, в робототехнике,
но и художественного воплощения и использования таких моделей,
могущих определить новое направление в области искусства: изобразительного,
зрелищного, сценического (театр марионеток), культурно-развлекательного и просветительного
(исторические реконструкции), в технике кино, в компьютерных играх, в рекламе, в учебных наглядных
пособиях, в новых способах
Тогда возникает и проблема отображения коллективного
разума. Это может быть актуально как для систем вида "человек
— модель ИИ", так и для систем взаимодействующих моделей ИИ. При
компьютерной реализации
"Мы, собаки, в смысле нервной восприимчивости в семь и еще много раз тоньше людей… Я чувствую тайными, неведомыми, дрожащими путями, как их души краснеют, бледнеют, трепещут, завидуют, любят, ненавидят".
Рассмотрим принципы построения управляемых видимых
объектов в
Во всех предыдущих лекциях в качестве примеров возможного применения обсуждается построение систем с элементами искусственного интеллекта, которые можно отнести к области искусства и развлечений. Фантазия легко связывает создание монстров, объектов компьютерных игр, имитацию их реакции на внешнюю среду или другие предлагаемые им объекты и ситуации с такими "мероприятиями", как парк фантасмагорий, Disneyland, цирк марионеток, распознавание "свой — чужой", сетевые зрелищно-рекламные демонстрации и т.д. Такие системы могут представлять как искусство, так и бизнес.
Существуют два направления реализации указанных систем ИИ: натурное и компьютерное.
В современном парке (культуры и отдыха) можно в натуральном виде встретить не одно существо, мало отличающееся от живого и совершающее действия и движения по заложенной программе. Технологии их построения можно считать отработанными, имитация движений, включая работу "мышечного" аппарата, вполне совершенна. Отсутствие элементов ИИ, предполагающих непредсказуемость реакции, — основной недостаток таких объектов.
Компьютерная реализация сегодня ограничена мультимедийными средствами двумерной и трехмерной графики. Возможности создаваемых этими средствами систем и образов огромны. Достаточно отметить такое средство, как 3D-MAX, позволяющее создавать целые кинофильмы. Однако основной недостаток всех известных систем кроется в априорном знании возможных сцен, сглаживание перехода через которые в реальном времени имитирует движение. Это подобно табличному заданию огромного количества значений функции многих переменных при игнорировании непосредственного расчета.
Непредсказуемость сцен, возникающая при имитации реакции моделируемого объекта на внешние воздействия, может потребовать огромного, практически нереализуемого числа предполагаемых возможных сцен.
В этом случае желательно при построении объекта
(монстра, человека и др.) снабжать его управляемыми
органами движения (модификации, деформации, имитирующей
улыбку, движение руки и т.д.), подобными
Таким образом, построение реального объекта в памяти
компьютера, а не его математического образа, задание ряда
рычагов —
Становятся видными новые возможности для создания кинофильмов, сценических постановок и других видеосценариев.
Построение реальных объектов требует имитации объемной,
Заметим, что проблемы компьютерной реализации "живого" моделирования целиком включают в себя проблемы натурного моделирования, оставляя второму лишь проблемы химического, технологического и электротехнического (возврат к релейно-контактным схемам?) свойства, что, как сказано выше, сейчас успешно решается.
Поскольку компьютер, реализующий "живую" модель, несомненно, должен обладать рядом свойств, обнаруживаемых в процессе дальнейшего изложения, справедливо назвать его видеонейрокомпьютером (ВНК). Это тем более справедливо, что обработка большого числа ячеек памяти предъявляет те же требования к распараллеливанию, что и обработка большого числа нейронов сети.
Отметим, что современные персональные компьютеры
(РС) и рабочие станции, реализующие системы мультимедиа,
вполне способны выполнять функции такого
Назовем ячейку, занятую элементом объекта, клеткой этого объекта. Как видно далее, клетка минимально должна содержать информацию о цвете (пиксель), коэффициенте освещенности, указателе вершины стека.
Пусть адресное пространство ВНК при сквозной линейной
адресации ячеек определяется N разрядами. Адрес
разбивается на четыре части (рис. 15.1).
(рис 15.1) Преобразование линейного адреса в трехмерный
Здесь x, y, z — координаты клетки
в s разрядов отводятся для адресации стека, сопровождающего
каждую клетку. Стек необходим для сохранения информации в случае сжатия
объекта — для более точного его восстановления. Таким образом, адресное
пространство хранения клеток объекта или целой сцены составляет 2N-s
,
что говорит о необходимом весьма большом значении N. Значение s практически
может быть не более трех.
При моделировании S[0:P; 0:P; 0:P] переменных S[i, j, k], где значения индексов являются координатами соответственно x, y, z. Тогда задача деформации или перемещения объектов преобразуется
в задачу нахождения новых значений этих индексов для каждой переменной, являющейся клеткой
объекта — для выполнения соответствующего переноса.
При этом линейный адрес переноса или текущего нахождения клетки объекта находится так:
<S[i, j, k]> = C + i + jP + kP2.
Здесь С — базовый адрес массива.
Стек моделировать нецелесообразно. Информация, потерянная при сжатии объекта, может быть восстановлена с помощью интерполяции.
Пусть объект в трехмерном пространстве задан своей оболочкой. Каждый элемент оболочки является клеткой. Оболочка формируется при создании объекта. В общем случае объект может быть заполнен значащей информацией и внутри, если его вид в разрезе интересует пользователя.
(рис 15.2) Применение мышцыТаким образом, АВ, связывающий
точки A(x1, y1, z1)
и B(x2, y2, z2)
, отображающий
некоторое геометрическое место клеток объекта. Этот отрезок связан с объектом
и может сокращаться при подаче управляющих импульсов и восстанавливаться при их
отсутствииМ(xM, yM, zM)
.
Сокращение
Параметрическая система уравнений, описывающих
отрезок АВ, имеет вид
Напоминаем, что координаты точек объекта совпадают
с адресами памяти, по которым находятся соответствующие
клетки, так что систему уравнений (15.1) с точностью до
целочисленной дискретности адресации можно рассматривать
относительно
Пусть l — коэффициент сжатия АМ
необходимо преобразовать в отрезок А*М с длиной lx|А*М|, а отрезок МВ — в отрезок МВ* с длиной lx |МВ*|.
Рассматривая по каждой координате отдельно, убеждаемся,
что отрезок x1xM
необходимо
преобразовать в отрезок x1* xM
с длиной l(xM- x1)
, отрезок xMx2
необходимо преобразовать в отрезок xMx2*
c длиной l(x2
- xM)
. Аналогично отрезок y1yM
должен быть преобразован
в отрезок y1* yM
с длиной l(yM - y1)
и
т.д.
Это, в частности, означает, что клетка с координатой x1
должна быть переслана в ячейку,
определяемую соответствующей составляющей адреса l(xM
- x1)
и т.д.
Однако изменение адреса пересылки клеток по разным
координатам различно, что определяется положением
Пусть 045 451 714 — А в восьмеричной
системе счисления. Это означает, что А = (x1, y1,
z1) = (045, 451, 714)
. Аналогично, пусть В = (x2,
y2, z2) = (055, 471, 720)
, а неподвижная точка находится
в середине отрезка АВ, M = (xM, yM, zM)
= (051, 461, 716)
. Зададим l = 0,610
(в десятичной системе счисления).
Адресное расстояние между точками А
и М составляет $$\Delta A_{x} = 4$$, $$\Delta A_{y} = 10 = 8_{10}$$, $$\Delta A_{z} = 2$$. Максимальное адресное расстояние
по всем координатам $$\Delta А = 8_{10}$$.
Тогда очевидно, что если по y, определяя
точку переноса, следует шагать с переадресацией, определяемой
коэффициентом сжатия, то при том же числе переносов по x
следует производить переадресацию в два раза реже, а по z
— в четыре раза. Тогда по некоторым координатным адресам переноса возможна
неоднократная запись. Однако, поскольку происходит сокращение и диапазона изменения
координаты у, по некоторым адресам переноса возможна неоднократная запись.
Здесь и приходит на помощь стек, позволяющий сохранить информацию для последующего восстановления
(расслабления)
Пусть i — параметр цикла переноса
точек отрезка АМ для его преобразования
в отрезок А*М, i = 1, ..., 11. Здесь
граничное значение цикла определяется максимальным значением
точек переноса по всем координатам, равным $$\Delta А + 1$$.
Программно перенос производится с конца отрезка к его началу — чтобы не
уничтожать еще не перенесенную информацию. Тогда адреса переноса отдельно
по координатам находятся как
В указанном порядке рассчитаем адреса переноса
отдельно по координате x, не допуская
при округлении выхода адресов из адресного пространства
051 - 1 x 0,610 x 0,510 = 051
051 - 2 x 0,610 x 0,510 = 050
051 - 3 x 0,610 x 0,510 = 050
051 - 4 x 0,610 x 0,510 = 050
051 - 5 x 0,610 x 0,510 = 047
051 - 6 x 0,610 x 0,510 = 047
051 - 7 x 0,610 x 0,510 = 046
051 - 10 x 0,610 x 0,510 = 046
051 - 11 x 0,610 x 0,510 = 046
Рассчитаем координату у:
461 - 1 x 0,610 x 1 = 460
461 - 2 x 0,610 x 1 = 460
461 - 3 x 0,610 x 1 = 457
461 - 4 x 0,610 x 1 = 456
461 - 5 x 0,610 x 1 = 456
461 - 6 x 0,610 x 1 = 455
461 - 7 x 0,610 x 1 = 454
461 - 10 x 0,610 x 1 = 453
461 - 11 x 0,610 x 1 = 452
Адреса переноса по координате z:
716 - 1 x 0,610 x 0,2510 = 716
716 - 2 x 0,610 x 0,2510 = 716
716 - 3 x 0,610 x 0,2510 = 716
716 - 4 x 0,610 x 0,2510 = 716
716 - 5 x 0,610 x 0,2510 = 715
716 - 6 x 0,610 x 0,2510 = 715
716 - 7 x 0,610 x 0,2510 = 715
716 - 10 x 0,610 x 0,2510 = 715
716 - 11 x 0,610 x 0,2510 = 715
Найдены адреса, по которым необходимо осуществить
пересылку при сокращении левой части
Аналогично, для правой части МВ, найдем адресные расстояния $$\Delta A_{x} = -4$$, $$\Delta A_{y} = -10 = -8_{10}$$, $$\Delta A_{z} = -2$$, $$\Delta А = -8_{10}$$. По (15.2) для адресов переноса по x, y, z находим
051 + 1 x 0,610 x 0,510 = 051 461 + 1 x 0,610 x 1 = 462 716 + 1 x 0,610 x 0,2510 = 716 051 + 2 x 0,610 x 0,510 = 052 461 + 2 x 0,610 x 1 = 463 716 + 2 x 0,610 x 0,2510 = 716 051 + 3 x 0,610 x 0,510 = 052 461 + 3 x 0,610 x 1 = 463 716 + 3 x 0,610 x 0,2510 = 716 051 + 4 x 0,610 x 0,510 = 052 461 + 4 x 0,610 x 1 = 464 716 + 4 x 0,610 x 0,2510 = 716 051 + 5 x 0,610 x 0,510 = 053 461 + 5 x 0,610 x 1 = 464 716 + 5 x 0,610 x 0,2510 = 717 051 + 6 x 0,610 x 0,510 = 053 461 + 6 x 0,610 x 1 = 465 716 + 6 x 0,610 x 0,2510 = 717 051 + 7 x 0,610 x 0,510 = 053 461 + 7 x 0,610 x 1 = 465 716 + 7 x 0,610 x 0,2510 = 717 051 + 10 x 0,610 x 0,510 = 054 461 + 10 x 0,610 x 1 = 466 716 + 10 x 0,610 x 0,2510 = 717 051 + 11 x 0,610 x 0,510 = 054 461 + 11 x 0,610 x 1 = 466 716 + 11 x 0,610 x 0,2510 = 717
Таким образом, найдены адреса ячеек памяти, куда следует пересылать информацию
при сокращении
Свяжем перебор искомых точек с тем же параметром цикла организации пересылки
$$x = x_{M} - i\cfrac {\Delta A_x}{\Delta A} y = y_{M }- i\cfrac {\Delta A_y}{\Delta A} z = z_{M} - i\cfrac {\Delta A_z}{\Delta A}.$$Найдем отдельно для x, y, z отрезка АМ адреса пересылаемых
точек:
051 - 1 x 0,510 = 050 461 - 1 x 1 = 460 716 - 1 x 0,2510 = 716 051 - 2 x 0,510 = 050 461 - 2 x 1 = 457 716 - 2 x 0,2510 = 715 051 - 3 x 0,510 = 047 461 - 3 x 1 = 456 716 - 3 x 0,2510 = 715 051 - 4 x 0,510 = 047 461 - 4 x 1 = 455 716 - 4 x 0,2510 = 715 051 - 5 x 0,510 = 046 461 - 5 x 1 = 454 716 - 5 x 0,2510 = 715 051 - 6 x 0,510 = 046 461 - 6 x 1 = 453 716 - 6 x 0,2510 = 714 051 - 7 x 0,510 = 045 461 - 7 x 1 = 452 716 - 7 x 0,2510 = 714 051 - 10 x 0,510 = 045 461 - 10 x 1 = 451 716 - 10 x 0,2510 = 714 051 - 11 x 0,510 = 045 461 - 11 x 1 = 450 716 - 11 x 0,2510 = 714
Для отрезка МВ находим
051 + 1 x 0,510 = 052 461 + 1 = 462 716 + 1 x 0,2510 = 716 051 + 2 x 0,510 = 052 461 + 2 = 463 716 + 2 x 0,2510 = 716 051 + 3 x 0,510 = 053 461 + 3 = 464 716 + 3 x 0,2510 = 716 051 + 4 x 0,510 = 053 461 + 4 = 465 716 + 4 x 0,2510 = 716 051 + 5 x 0,510 = 054 461 + 5 = 466 716 + 5 x 0,2510 = 716 051 + 6 x 0,510 = 054 461 + 6 = 467 716 + 6 x 0,2510 = 716 051 + 7 x 0,510 = 055 461 + 7 = 470 716 + 7 x 0,2510 = 716 051 + 10 x 0,510 = 055 461 + 10 = 471 716 + 10 x 0,2510 = 716 051 + 11 x 0,510 = 055 461 + 11 = 471 716 + 11 x 0,2510 = 716
"Склеим" координатные части адресов и
обозначим ее окончательно в двух столбцах: в левом
— пересылку для левой части
(050 460 716) => 051 460 716 (052 462 716) => 051 462 716
(050 457 715) => 050 460 716 (052 463 717) => 052 463 716
(047 456 715) => 050 457 716 (053 464 717) => 052 463 716
(047 455 715) => 050 456 716 (053 465 717) => 052 464 716
(046 454 715) => 047 456 715 (054 466 717) => 053 464 717
(046 453 714) => 047 455 715 (054 467 720) => 053 465 717
(045 452 714) => 046 454 715 (055 470 720) => 053 465 717
(045 451 714) => 046 453 715 (055 471 720) => 054 466 717
(045 450 714) => 046 452 715 (055 471 720) => 054 466 717
В строках 2 и 3, в 6 и 7, а также в 8 и 9 видно формирование стеков при неоднократной записи в одну клетку.
Однако вся проделанная выше работа по сжатию А
и В. Переносить ее клетки следует в таком случае лишь тогда, когда
она принадлежит оболочке или пересекается с ней.
Сокращение
Таким образом, каждый перенос клетки
Рассмотрим взаимодействие
Пусть, как и ранее, задано значение 0 <=
l <= 1
, приводящее к сокращению объекта в направлении АВ (рис. 15.3). Объект должен преобразиться, как показано
на рисунке пунктиром. М, как и прежде, — неподвижная (относительно
неподвижного объекта) точка М, перпендикулярную l.
(рис 15.3) Сокращение твердого телаПлоскость М описывается уравнением
Пусть точка (xj, yj,
zj)
— текущая клетка объекта с адресом xjyjzj
, подлежащая
указанному переносу. Найдем координаты xj(M),
yj(M), zj(M)
ее проекции
на плоскость М. Так как точка с этими координатами принадлежит
плоскости М и минимизирует квадрат расстояния точки (xj,
yj, zj)
до этой плоскости, задача такой условной минимизации
формулируется так:
найти значение xj(M),
yj(M), zj(M)
,
удовлетворяющее требованию
(xj(M) - xj )2
+ (yj(M) - yj)2 + (zj(M)
- zj)2 -> min
при условии
(xj(M) - xM)(x1
- xM) + (yj(M) - yM)(y1
- yM) + (zj(M) - zM)(z1
- zM) = 0.
Решим данную задачу, используя уравнение Лагранжа
$$(x_{j}^{(M)} - x_{j})^{2} + (y_{j}^{(M)} - y_{j})^{2} + (z_{j}^{(M)} - z_{j})^{2} + \lambda [(x_{j}^{(M)} - x_{M})(x_{1} - x_{M}) + (y_{j}^{(M)} - y_{M})(y_{1} - y_{M}) + (z_{j}^{(M)} - z_{M})(z_{1} - z_{M})] \to min$$.
Дифференцируя по всем переменным, включая $$\lambda,$$ и приравнивая производные нулю, получим систему линейных уравнений
$$2(x_{j}^{(M)} - x_{j}) + \lambda (x_{1} - x_{M}) = 0$$
$$2(y_{j}^{(M)} - y_{j}) + \lambda (y_{1} - y_{M}) = 0$$
$$2(z_{j}^{(M)} - z_{j}) + \lambda (z_{1} - z_{M}) = 0$$
(xj(M) - xM)(x1 - xM) + (yj(M) - yM)(y1 - yM) + (zj(M) - zM)(z1 - zM) = 0.
Решая систему, находим
$$\begin{array}{l} x^{(M)}_{j} = 0,5\lambda(x_{M} - x_{1}) + x_{j}\\ y^{(M)}_{j} = 0,5\lambda(y_{M} - y_{1}) + y_{j} \\ z^{(M)}_{j} = o,5\lambda(z_{M} - z_{1}) + z_{j}\\ \lambda =2 \cfrac{(x_j - x_M) (x_1 - x_M)+ (y_j - y_M) (y_1 - y_M)+ (z_j - z_M) (z_1 - z_M)} {(x_1 - x_M)^2 +(y_1 - y_M)^2 +(z_1 - z_M)^2}. \end{array}$$Таким образом, получена xj, yj,
zj
и с концом в точке xj(M), yj(M),
zj(M)
. Эта же точка является неподвижной. Тогда по (14.2) и (14.3) имитируется
сжатие
Найдем квадрат r2 кратчайшего
расстояния между произвольной текущей точкой объекта или
только его оболочки xj, yj, zj) и мышцей. Это расстояние определяется
с помощью проекции xj0, yj0, zj0)
данной точки на А ), или ее удаленностью от концов А ).
(рис 15.4) Сокращение вязкого телаПредполагая, что данная проекция принадлежит kmin из соотношения
Значение kmin, которое
определяет клетку k:
(xj0 - x1 - k(x2
- x1)(x2 - x1) + (yj0
- y1 - k(y2 - y1)(y2 -
y1) + (zj0 - z1 - k(z2
- z1)(z2 - z1) = 0
Откуда
$$k_{min} = \frac{(x_{j0}-x_1) (x_2-x_1)+ (y_{j0}-y_1)(y_2-y_1)+ (z_{j0}-z_1) (z_2-z_1)} { (x_2-x_1)^2+ (y_2-y_1)^2+ (z_2-z_1)^2 }.$$Если выполняется условие 0 <= kmin <= 1,
искомая проекция действительно принадлежит r2 отыскивается в результате подстановки (15.7) в (15.6).
Если kmin < 0, ближайшей точкой А.
В этом случае
r2 = (x1 - xj)2
+ (y1 - yj)2 + (z1 - zj)2.
Если kmin > 1, ближайшей
точкой В:
r2 = (x2 - xj)2
+ (y2 - yj)2 + (z2 - zj)2.
Чтобы определить направление переноса клетки (xj,
yj, zj)
, необходимо по (15.5) найти ее проекцию
на плоскость М. Тогда для нахождения адресов циклической пересылки
значащих клеток объекта воспользуемся формулами
Здесь $$\rho$$ — коэффициент вязкости
и R2
— заведомо большое число,
ограничивающее значение r2
, где
смещение полностью затухает.
Перебор клеток объекта для пересылки выполняется
по (15.3). Пересылка выполняется для обоих полупространств,
разделяемых плоскостью М.
Сокращение вязкой и упругой среды, такой
как резина, губка, упитанные щеки и др., обычно сопровождается
явлением, которое можно назвать попыткой сохранения объема в результате
Пусть, как и прежде, xj, yj,
zj
— составляющие адрес координаты текущей
клетки
(рис 15.5) Сокращение тела с "выпучиванием"По (15.7), подставив вместо xj0,
yj0, zj0
значение найденной
по (15.8) точки переноса (xj пер, y
j
пер
, zj пер)
, найдем kmin
и, невзирая на его значение, найдем проекцию (xj0пер,
yj0пер, zj0пер)
на
(Заметим, что уравнения (1) при 0 <= k
<= 1
определяют собственно
Запишем систему параметрических уравнений прямой,
проходящей через точки (xj пер, y
j
пер
, zj пер)
и (xj пер0,
yj пер0, zj пер0)
:
Задав малое приращение $$\Delta m > 0$$,
зависящее от r2пер = (xj пер0
- xj)2 + (yj пер0 - yj)2
+ (zj пер0 - zj пер)2
, и приняв $$m = 1 +\Delta m$$, получим окончательно точку переноса (xj пер*,
yj пер*, zj пер*)
, отстоящую от точки
переноса, найденной по (15.8), и смещенную в перпендикулярном направлении от
Эмпирическую зависимость коэффициента смещения $$\Delta m$$ от указанного выше расстояния можно выбрать как
$$\Delta m = l\rho \left (1 - \frac{r^2_{пер}}{R^2} \right ).$$Тогда из (9) находим
$$\begin{array}{l} x^*_{j пер} = (1 + \Delta m)(x^0_{j пер} - x_{j пер})+ x_{j пер}\\ y^*_{j пер} = (1 + \Delta m)(y^0_{j пер} - y_{j пер})+ y_{j пер}\\ z^*_{j пер} = (1 + \Delta m)(z^0_{j пер} - z_{j пер})+ z_{j пер}. \end{array}$$Таким образом, сокращая АВ, показанную на рис. 15.2,
можно, например, изобразить то подобие улыбки, которая
обозначена пунктиром. Введение других А1В1 под нижней губой, может значительно
усилить правдоподобие улыбки.
Координаты O(x0, y0, z0)
внутри объекта (рис. 15.6). АВ связывает лучи (элементы скелета),
исходящие из точки О. Сокращение
(рис 15.6) Деформация объекта вокруг шарнираПрактический интерес представляет случай, когда
неподвижная точка
По аналогии с (15.1), луч ОА описывается
параметрической системой уравнений
Если 0 <= k <= 1, то уравнения
отображают отрезок ОА. Нас же интересует
вся прямая, исходящая из точки О.
Отобразим сокращение А в клетку А' (x1',
y1', z1'
), в упрощенной форме воспользовавшись
(15.2) и (15.3). Этим установим новое положение ОА' луча ОА.
Уравнения этого луча имеют вид
$$\begin{array}{l} x = k'(x_{1}' - x_{0}) + x_{0}\\ y = k'(y_{1}' - y_{0}) + y_{0} \\ z = k'(z_{1}' - z_{0}) + z_{0}. \end{array}$$Если 0 <= k' <= 1, то уравнения
отображают отрезок ОА'. Однако точка А'
не отображает факт вращения луча ОА вокруг точки О.
При этом вращении точка А должна переместиться в точку А1
,
отстоящую от О на расстояние, равное длине отрезка ОА. Найдем координаты
этой точки на луче ОА' из соотношения
(x11 - x0)2
+ (y11 - y0)2 + (z11
- z0)2 = r2 = (x1 - x0)2
+ (y1 - y0)2 + (z1 - z0)2.
В параметрической форме представления (12) точке (x11, y11, z11)
соответствует некоторое значение k1'
параметра.
Подставим вместо координат этой точки их параметрическое представление:
(k1')2((x1'
- x0)2 + (y1' - y0
)2 + (z1' - z0)2) =
r2
.
Откуда
$$k_{1}' = \frac{r}{\sqrt{(x_1'-x_0)^2+(y_1'-y_0)^2+(z_1'-z_0)^2}}$$Очевидно, k1' > 0
. Таким
образом, точка А1
переноса конца А
Для синхронных действий при переносе всех клеток
объекта, подлежащих перемещению вокруг ОА1
в зависимости
от того же параметра k, определяющего положение
(15.12) луча ОА
Пусть (xj, yj, zj)
— точка (клетка), подлежащая переносу, в соответствии с сокращением О, но с исключением других деформаций объекта. Чтобы найти
координаты (xj(OA), yj(OA),
zj(OA))
проекции этой точки на луч ОА,
решим задачу минимизации расстояния между этой точкой и лучом ОА, описанным
системой (15.12):
(xj - k(x1 - x0)- x0)2 + (yj - k(y1 - y0) - y0)2 + (zj - k(z1 - z0) - z0)2 -> min.
Приравняв производную по k нулю, получим
(xj - k(x1 - x0) - x0)(x1 - x0) +
(yj - k(y1 - y0)
- y0 )(y1 - y0) +
(zj - k(z1 - z0) -
z0)(z1 - z0) = 0.
Отсюда
$$k_{(min)} = \frac{(x_j-x_0) (x_1-x_0)+ (y_j-y_0) (y_1-y_0)+ (z_j-z_0) (z_1-z_0)}{(x_1-x_0)^2+ (y_1-y_0)^2+ (z_1-z_0)^2 }.$$Подставим (15.16) в (15.12) и найдем координаты (xj(OA), yj(OA),
zj(OA))
искомой проекции.
Вычислим разности координат точки (xj,
yj, zj)
и найденной ее проекции
на луч ОА, определяющие смещение этой точки:
Подстановкой (15.15) в (15.14) найдем координаты (xj(OA1), yjOA1),
zj(OA1))
"образа" точки (xj(OA),
yjOA), zj(OA))
при повороте луча. Тогда координаты x
j
пер
, yj пер, zj пер
переноса точки (xj, yj,
zj)
отыскиваются так:
Организовав цикл по j - по всем точкам
объекта (или оболочки) в окрестности луча ОА,
выполним требуемую имитацию движения.
До сих пор рассматривалось поведение объекта в
единственной системе координат. Взаимодействие многих
объектов требует наличия центральной системы координат,
в которой происходят все перемещения объектов относительно
друг друга, и систем координат, связанных с каждым объектом
— объектовых систем координат. Объект создается в его объектовой
системе координат. Его движения "относительно себя" — сокращение
Это означает, что каждая n-я объектовая система координат связана с центральной системой матрицей пересчета:
$$\left ( \begin{array}{c} x \\ y \\ z \end{array} \right ) = \left ( \begin{array}{ccc} cos(x, x_n) cos(x, y_n) cos(x, z_n) \\ cos(y, x_n) cos(y, y_n) cos(y, z_n) \\ cos(z, x_n) cos(z, y_n) cos(z, z_n) \end{array} \right ) \left ( \begin{array}{c} x_n \\ y_n \\ z_n \end{array} \right ) +\\+ \left ( \begin{array}{c} x_{n0} \\ y_{n0} \\ z_{n0} \end{array} \right )$$Здесь элементы матрицы — направляющие косинусы
углов между осями, xn0, yn0,
zn0
— координаты начала объектовой системы.
Все указанные величины являются переменными. Только плавно изменяя
их значения, можно добиться перемещения, поворота или вращения объекта
среди других объектов общей сцены, связанной с центральной системой координат.
Отсюда важная рекомендация: чтобы имитировать относительное
движение объектов, необходимо плавно, в реальном времени, давать
приращения
Такое воздействие необходимо не только при определенном взаимодействии различных объектов, но и на уровне формирования, "ваяния" объекта. Идея такого ваяния заключается в следующем.
Пусть в память введена некоторая заготовка, имеющая наиболее близкую форму для желаемого объекта. (Например шар — для формирования головы.) Приближая к заготовке объект-"инструмент", например молоток, необходимо потребовать, чтобы при угрозе прикосновения к объекту, ближайшие его клетки отступали, и оболочка, продавливаясь, принимала форму проникающего инструмента. Эта операция напоминает ковку или штамповку. Таким многократным воздействием с разных сторон можно добиться любой формы объекта.
Можно допустить не только вдавливание инструмента в объект, но и вытягивания близлежащей области, подобно нарыву. В этом случае после соприкосновения с объектом следует отводить инструмент от него. Близкая область оболочки должна вытягиваться вслед за инструментом.
Если не деформировать оболочку, а позволить инструменту проникать в объект, то подобное действие сравнимо с действием ножа. Таким образом от объекта могут отсекаться части, — для последующего уничтожения или для создания новых объектов.
Роль подобных инструментов могут играть объекты друг для друга. Это позволит, например, имитировать некоторые разрушительные события.
Для построения объектов целесообразно воспользоваться тремя координатными проекциями, подобно 3D-MAX. Сначала в одной из проекций рисуется пока неточный, предполагаемый разрез объекта. На других проекциях автоматически сформируются отрезки — боковые проекции этого разреза. На разрезе определяется точка для дальнейшей деформации объекта в двух других проекциях. Проекция этой точки высвечивается на двух других проекциях.
Подведя мышь к одной из проекций точки, следует повести ее (мышь) вверх или вниз, формируя выпуклость вслед за этим движением так, чтобы первоначально заданная плоская поверхность образовала выпуклость. Так сформируется объемное изображение. Если при этом придерживать клавишу control (или другим способом), плоская поверхность сохранится для замкнутости объема или для последующей аналогичной деформации в ту или другую сторону.
Повороты получившейся объемной фигуры позволяют производить указанным способом различные деформации.
Такой способ формирования объектов может быть признан
основным. Однако выше указывалось на возможность "ваяния"
с помощью временно создаваемых
Необходимо помнить, что объекты в z = 0 в центральной системе координат. Эта плоскость и представляет
экран. Значит, каждая прямая, исходящая из точки xi, yi,
0
и перпендикулярная экрану, продолжается (здесь рассматриваем только прозрачную
среду) до первого пересечения с одним из объектов или с фоном. Полученная точка обеспечивает
изображение в данной текущей точке экрана.
Для получения различных срезов (подобно томографии)
экран может формироваться и в других плоскостях вида z = a > 0.
Для получения различных ракурсов центральная система координат должна быть преобразована.
Введение
<сократить мышцу m с l = 0,8>;
<повернуть объект Р по матрице S>;
<приблизить объект Р>;
<перенести объект Р>;
<показать срез z = 5> и т.д.
Таким образом, могут планироваться и исполняться сцены, основанные на имитации движения объектов, их мимики, преобразования и т.д.
Как каждая управляющая система, работа рассматриваемой
системы тактируется. Поскольку видео — основное ее назначение,
то тактовую частоту целесообразно совместить с частотой следования
кадров. (Если хватит производительности! Иначе придется получать промежуточные
кадры путем интерполяции.) Тогда программа ориентируется на имитацию движения в
отдельном кадре в системе реального времени. Это значит, что если дан приказ сократить
Эмпирические зависимости для такого дробления целесообразно получить экспериментально.
Воспроизводя принципы живых организмов, необходимо
учитывать, что
Программа управления объектами, как и каждая компьютерная программа, должна предусматривать альтернативные действия в случае выполнения предусмотренных условий, т.е. содержать команды условного перехода.
Занимаясь "живым" моделированием на основе компьютерных и информационных технологий, следует быть приверженным точным наукам, в которых любые построения начинаются с исчерпывающих, непротиворечивых определений.
Что есть жизнь? Какое существо можно назвать живым?
В качестве комментариев отметим, что даже внутренние
болезни имеют внешние причины: экологические, политические,
наследственные, бактериологические и т.д. В то же время философски
уместно говорить о жизни существа не в абсолютном аспекте, а в аспекте
моделирования: вся жизнь представляет собой
Посчитаем достаточными положения 1 и 2 для настоящего уровня решения задачи "живого" моделирования. Однако мы понимаем, что достичь такого уровня обучения, когда система сама начинает осознавать, что хорошо, а что плохо, на основе индуктивного и дедуктивного мышления, вряд ли сейчас возможно практически. Мы вынуждены решать задачу-минимум, требуя, в основном для культурно-развлекательных целей, адекватности реакции. Степень этой адекватности в соответствии с означенным критерием мы уж предусмотрим сами.
Например, можно научить объект улыбаться, если он видит картинку с преобладанием розовых тонов, но гневаться, если на картинке превалирует коричневый цвет и т.д.
Таким образом, ближайшей практической задачей является закладка инструментальных основ. Позволим проблеме развиваться на базе нейросетевых технологий более глобально в дальнейшем.
Пусть сотворенный объект ( рис. 15.7 ) в компьютерном или материальном воплощении наделен некоторым фоновым поведением, реализуемым программно. Например, такое поведение может быть аналогичным поведению зверя в клетке, нервно дефилирующего вдоль решетки. Целесообразно в программе использовать и элементы случайности на основе ДСЧ — датчика случайных чисел. Это может ввести разнообразие в фоновое поведение объекта: внезапный поворот головы, смена направления движения и т.д. Такое поведение уже само по себе является занимательным для зрителя.
Однако представим себе, что фоновая программа предусматривает периодическое прерывание для включения "внимания" объекта к внешней обстановке — к "картинке", циклически вводимой в его память с помощью видеоввода.
Включается программа анализа "картинки",
питающая
(рис 15.7) Возможный объект натурного моделирования
Ограничиваясь только цветом, можно, в терминах алгебры высказываний, представить следующий пример алгоритма реакции объекта.
"В квадрате i, j преобладает зеленый цвет" ∧ "отсутствуют резкие переходы в оттенках" ->
-> "Запустить программу умиротворения";
"В квадрате i, j преобладает зеленый цвет" ∧ "наблюдаются резкие переходы в оттенках" ->
-> "Запустить программу тоски по лесным далям";
"В квадрате i, j преобладает голубой цвет" ∧ "наблюдаются темные вкрапления" ->
-> "Запустить программу приветствия";
"В квадрате i, j преобладает красный цвет" ->
-> "Запустить программу повторного обзора квадрата" ∧ "Запустить программу гнева";
"В квадрате i, j обнаружен круг с преобладанием телесного цвета" ->
-> "Запустить программу приветствия";
"В квадрате i, j преобладает коричневый цвет" ->
-> "Запустить программу презрения";
"В квадрате i, j преобладает желто-оранжевый цвет" ->
-> "Запустить программу радостного возбуждения" и т.д.
Тогда обученная для реализации данного алгоритма
однослойная
(рис 15.8) Нейросеть для "живого" моделированияЗдесь нейрон-рецептор 1 принимает значение достоверности
высказывания "В квадрате преобладает зеленый цвет" как величину возбуждения.
Рецептору 2 сообщается значение достоверности высказывания "Отсутствуют резкие переходы в оттенках".
Рецептор 3 принимает значение достоверности высказывания "Наблюдаются резкие переходы в оттенках".
Рецептор 4 возбуждается на величину достоверности высказывания "В квадрате преобладает голубой цвет".
Рецептор 5 принимает значение достоверности высказывания о похожести на полет птиц.
Рецептор 6 возбуждается на преобладание красного цвета.
Рецептор 7 возбуждается на величину достоверности
обнаружения круга телесного цвета.
Рецептор 8 принимает значение достоверности преобладания
коричневого цвета.
Рецептор 9 принимает значение достоверности преобладания
желто-оранжевого цвета.
И так далее — по расширяемому на основе бесконечного совершенствования количеству используемых факторов.
Практически за эту достоверность можно принимать
частоту появления или "удельный вес" определенного
цвета (соответствующих пикселей) в анализируемом квадрате. Подавая
значения достоверности на
Рекомендуемая передаточная функция имеет вид
$$\begin{array}{l} V_{Вых} = \xi \left ( \sum_{\nu} \omega_{\nu} V_{\nu} – h \right ), \\ \left(\xi (s) = \left \{ \begin{array}{ll} s, \mbox{при } s \ge 0 \\ 0, \mbox{при } s < 0 \end{array} \right \right ) \end{array}.$$Порог h целесообразно выбрать достаточно
высоким, например h = 0,5, так, чтобы объект
не выглядел слишком "нервным", возбуждаясь понапрасну
из-за малой причины возбуждения.
Таким образом, "живое" моделирование — это экспериментальное направление, позволяющее проверить и осуществить все достижения на пути развития технологий искусственного интеллекта. Это реальный путь воплощения новых направлений в искусстве, в шоу-бизнесе, в учебной, игровой и развлекательной деятельности.
Вместе с тем, наряду с разработкой инструментария
и постановкой задачи дальнейших исследований в области
Прежде всего это задача оценки современных компьютерных возможностей реализации столь большого объема работ в реальном времени. Очевидно, что лишь высокопараллельная архитектура, подобная мозгу, может эффективно исполнять функции видеонейрокомпьютера.
Следует проанализировать эффективность применения современных суперкомпьютеров, таких, например, как Эльбрус-E2k.
Анализ приведенных выше математических построений
говорит в пользу
Реализация
Управление сложными системами с возможным участием операторов и диспетчеров предъявляет высокие требования к динамическому отображению их состояния для оперативного анализа ситуации и принятия решений. Задача оператора значительно усложняется в случае территориальной разобщенности средств системы, превращаясь в задачу многоуровневого контроля и диагностики. Возникает необходимость интеллектуальной надстройки всей системы отображения, контроля и принятия решений, производящей оперативную первичную обработку многообразной регистрирующей, отображающей и управляющей информации для предварительного, грубого отображения происходящего процесса. Задачей такого предварительного, поверхностного отображения является выяснение того, протекает ли процесс в пределах нормы, грозит ли уход за эти пределы, а также установление факта и причин тревоги.
Отображение должно быть наглядным, доступным и понятным широкому кругу наблюдателей, бесспорным и образным, а также не должно требовать постоянных кропотливых усилий операторов. Важна и эстетическая составляющая.
Требование образности и эстетики, обеспечивающих
наибольшее понимание, приводит к целесообразности использования
Для такой предварительной, грубой оценки применимы
принципы
Таким образом, на вход
На данном этапе утверждения важности данного направления
не следует брать на себя смелость заявления о
Модели
Все три типа моделей предполагают связь нейронов выходного слоя с соответствующими программами (процедурами) имитации реакции объектов на ситуацию по принципу ассоциативного мышления. При этом величина возбуждения нейрона выходного слоя служит основным параметром соответствующей программы, определяющим реакцию. Этим обеспечивается возможность совмещения различных реакций, дающих некоторую результирующую.
Натурная модель, ввиду значительного применения элементов механики, электротехники и других технологий, по-видимому, имеет ограниченное применение в сфере развлечений или при медленно изменяющихся факторах (реакция на прогноз погоды) и др.
Электронная графическая модель при кажущейся доступности технологий требует критического рассмотрения и развития достаточно разнообразных современных средств для реализации динамики их поведения, как реакции на входные сигналы. В этом случае решающую роль играет проблема управляемой анимации в реальном времени — проблема "живого" моделирования.
Тем не менее все возможности должны быть экспериментально исследованы на моделях.
Помимо актуальной задачи
Основная часть экрана для работы пользователя с
моделью
(рис 15.9) Экран моделиОсновными элементами этого экрана являются два
поля: поле показываемых (создаваемых) с помощью мыши
образов (ПО) и поле
Если ПО пусто или контурно нарисованный в нем объект
не узнан
Если в реальном времени, независимо от текущего
состояния
Однако этот переход может быть прерван показом
нового образа на поле ПО. Тогда, если предъявленный
объект узнан, переход в новое состояние осуществляется
из достигнутого текущего состояния. Если объект не узнан,
но прошлое содержимое ПО потеряно,
В ограниченной демонстрационной реализации
Увеличение числа клеток экрана ПО (повышение разрешающей способности) служит увеличению возможного числа эталонов и вероятности распознавания.
Для имитации настроения
На основе этих кадров формируются
(рис 15.10) Образы для комплектации сюжетных рядовДинамическая подстановка
Система анимации на основе текущего
Функциональная схема модели показана на рис. 15.11.
(рис 15.11) Функциональная схема моделиБаза данных содержит пополняемое в процессе эксплуатации
множество
Поведение
Каждая реакция (веселье, огорчение и т.д.) приводит
к медленному, в реальном времени, переходу к соответствующему
выражению лица. Для этого выделяется текущий
Этот переход осуществляет аниматор. Он отображает
на демонстрационном экране кадры
Для облегчения понимания перейдем к рассмотрению
"видимых" объектов — образов: букв, фруктов,
зверей и т.д. В общем случае очевидно, что каждую точку
в
Тогда, на экране образа производится асинхронное, по отношению к демонстрации, задание образа — контурного рисунка (с помощью мыши или джойстика) некоторого объекта, как из числа тех, которые могут быть распознаны, так и произвольного.
С каждым объектом, которые система "знает",
связан свой
Выбор нового
Ее
На основе максимального возбуждения одного нейрона
выходного слоя нейросети производится определение реакции:
выбор соответствующего этому нейрону
Для начального этапа разработки — эксперимента
и демонстрации — достаточно выбрать однослойную
Запоминание образа-эталона, т.е. обучение, производится непосредственным установлением связей между клетками области экрана, включающей эталон (с учетом допусков, позволяющих неточное воспроизведение эталона в рабочем режиме, а лишь приблизительное — нетвердой рукой, с зашумлением и т.д.), и нейроном выходного слоя, "отвечающим" за этот эталон. Веса связей — единичные. Данный принцип изложен в лекции 2.
На рис. 15.12 показаны связи, отображающие запоминание эталона "яблоко". Для упрощения выбран экран в 6x4 клеток. Покрываемые эталоном клетки закрашены.
(рис 15.12) Обучение яблокуПосле обучения яблоку, т.е. после фиксации введенных связей, введем эталон "морковка". Отдельно его расположение на экране может быть проиллюстрировано на рис. 15.13.
(рис 15.13) Расположение морковки на экранеЗакрепим за морковкой нейрон выходного слоя и свяжем его со всеми закрашенными клетками экрана.
Совместное запоминание двух эталонов показано на рис. 15.14.
(рис 15.14) Совместное запоминание эталонов яблока и морковки
(рис 15.15) Матрица следования нейросети, обученной двум эталонамОднако очевидно, что при сквозной нумерации рецепторов однослойной нейросети достаточно хранить и анализировать лишь строки, соответствующие нейронам выходного слоя, т.к. остальные строки — нулевые. В данном случае это две последние строки.
Выберем Vi
возбуждения нейронов выходного
слоя считаем
где $$\xi (х)$$ — не раз используемая функция отклонения отрицательных значений.
Здесь j принимает значение номеров
рецепторов, участвующих с единичными весами (поэтому
веса не указаны в Gj
— число таких рецепторов.
Делением на Gj
производится приведение
всех величин возбуждения по эталонам в один диапазон изменения.
Это необходимо для того, чтобы "большие" образы, частично
засвеченные вследствие возмущения "маленьких" образов, не
подавляли эти последние. Так, в данном примере "морковка"
засвечивает 16 клеток, а "яблоко" — только 13.
Порог h определяет предел допустимости
вывода.
Конечно, в примере экран содержит всего 24 клетки, поэтому его разрешающая способность, а следовательно, вероятность распознавания очень низки. Тем не менее с достаточной уверенностью можно считать, что если на экране произвольно нарисовать яблоко, то, скорее всего, рисунок более засветит те рецепторы, которые связаны с нейроном "яблоко", и в меньшей степени — рецепторы "морковки". Тогда при расчете возбуждения нейронов выходного слоя следует ожидать, что нейрон "яблоко" будет обладать большей величиной возбуждения.
Однако в любом случае величина возбуждения должна преодолеть порог на тот случай, если это и не морковка, и не яблоко, а также при большом "зашумлении".
Алгоритм обработки выделенных строк
Последовательно просматриваются строки, соответствующие
нейронам выходного слоя, и для каждой строки рассчитывается
значение
Работа модели, как системы реального времени, тактируется в соответствии с темпом выдачи кадров, т.е. с частотой, обеспечивающей комфортное восприятие.
Проблема анимации заключается в выдаче промежуточных
кадров по
С целью демонстрации потенциальных возможностей
воспользуемся упрощенным алгоритмом
А именно, при формировании промежуточных кадров
будем руководствоваться смещением контрольных точек
и разрезов в системе координат, связанной с объектом.
Список координат контрольных точек, а также координат
точек начала и конца каждого разреза, сопровождает каждый
На рис. 15.16
показаны два смежных K и кадр L.
Однако кадр К в общем случае — некоторый начальный
( i (значению i = 0 соответствует кадр К ),
от показа которого необходимо плавно, через показ ряда промежуточных кадров, перейти
к показу кадра L. Тогда следующий, i+1 -й кадр, выдаваемый в
следующем такте работы модели, должен быть получен на основе одного шага изменения кадра i.
Пусть на рисунке К1-К5
— исходные контрольные точки (конечно, невидимые), заданные своими
координатами (xKj, yKj)
; L1-L5
- соответствующие им контрольные точки (xLj, yLj)
в результирующем
кадре L, j = 1, ..., 5.
(рис 15.16) Кадры анимацииКонтрольные точки Kj
через N тактов должны перейти в контрольные точки Lj
, увлекая за собой некоторую окрестность $$\Delta _{j}$$. Причем моделируется свойство "вязкости",
при котором более удаленные от центра (Kj)
точки смещаются меньше.
Более того, если область $$\Delta _{j}$$ пересекается разрезом, то перенос
точек по другую сторону разреза не производится (см. открытие рта). В примере задан такой отрезок [A1, A2]
, который должен перейти в отрезок [B1,
B2]
.
Алгоритм
К и следующим L. Взводится счетчик показа промежуточных кадров
СПК. Для упрощения демонстрационной модели считаем, что между
любыми двумя смежными СПК := 20.L. Выполняется 9. Если СПК не равно нулю, выполняется
10.L загружается в БП, далее выполняется
2.j
(шаги 11-16) перебора контрольных точек объекта. По окончании цикла
организуется переход к 20.Для контрольной точки Kj (xKj,
yKj)
отыскивается соответствующая ей точка Lj
(xLj, yLj)
из СКТ кадра L. Отыскивается
область $$\Delta _{j}$$ радиуса Rj
с центром
в точке Kj
, включающая точку Lj
(ее проекцию
на кадр К ). Радиус Rj
вычисляется из соотношения
2Rj = r(Kj, Lj)
+ l,
где r — расстояние, l
— поправка, подбираемая экспериментально.
Организуется цикл перебора точек P(x,
y)
из окрестности $$\Delta _{j}$$
контрольной точки Kj
. Этот
перебор осуществляется "циклом в цикле":
По окончании перебора выполняется 17.
Проверяется, разделены ли точки P
и L разрезами. Данная проверка производится
в результате решения следующей задачи.
Пусть на рис. 15.17
точки P(x, y) и L(xL, yL)
(индекс j опустим) находятся по разные стороны отрезка [A, B],
где A = (xA, yA)
, B = (xB,
yB)
, так, что отрезки [P, L] и [A, B]
пересекаются. (Именно этот случай запрещает перемещение точки Р за разрез
— в окрестность точки L.)
(рис 15.17) Анализ разрезаРассмотрим параметрическое описание этих отрезков и запишем уравнения для нахождения точки пересечения $$(\xi , \eta )$$.
$$[P,L]: \left \{ \begin{array}{l} \xi = x+k_1(x_L –x) \\ \eta = y + k_1(y_L-y) \end{array} \right , 0\le k_1 \le 1,$$ $$[A,B]: \left \{ \begin{array}{l} \xi = x_A+k_2(x_B –x_A) \\ \eta = y_A + k_2(y_B-y_A) \end{array} \right , 0\le k_2 \le 1.$$Или:
$$\begin{array}{l} x + k_{1}(x_{L} - x) = x_{A} + k_{2}(x_{B} - x_{A}),\\ y + k_{1}(y_{L} - y) = y_{A} + k_{2}(y_{B} - y_{A}). \end{array}$$Отсюда
$$\begin{array}{l} k_1 = \cfrac{(x-x_A) (y_B-y_A) - (y-y_A) (x_B-x_A)}{ (x_B-x_A) (y_L-y) - (y_B-y_A) (x_L-x)} \\ k_2 = \cfrac{(x-x_A)}{ (x_B-x_A)}+ k_1\cfrac{(x_L-x)}{(x_B-x_A)}. \end{array}$$Если отрезки пересекаются, выполняется условие 0 <= k1 <= 1, 0 <= k2 <= 1. В
противном случае отрезки не пересекаются, и перемещение
точки Р в направлении к точке Lj
допустимо. Если точки P и L разделены разрезом,
производится переход к 12. В противном случае выполняется 14.
Рассчитываются координаты переноса точки Р
при формировании очередного промежуточного кадра К*:
Здесь учитывается удаление точки Р
от центра — от точки Kj
. Так,
на окружности радиуса Rj
перенос
затихает вовсе. Текущее значение СПК характеризует оставшуюся
часть смещения.
Kj*
,
если это была контрольная точка) в СКТ промежуточного кадра K*.
Далее выполняется 12.P(x, y) этой окрестности,
подобно организованному в блоке 12.Если точка "пустая", находится ее усредненное значение на основе непустых окружающих ее точек:
$$\begin{array}{rl}(P(x, y)) := \cfrac{1}{S}[(P(x_{n-1}, y_{m-1})) + (P(x_{n-1}, y_{m})) + \\(P(x_{n-1}, y_{m+1})) + (P(x_{n}, y_{m-1})) + \\ + (P(x_{n}, y_{m+1})) + (P(x_{n+1}, y_{m-1})) + \\(P(x_{n+1}, y_{m})) + (P(x_{n+1}, y_{m+1})) \end{array}$$где P(x, y) отождествляется с точкой P(xn, ym)
для отображения
окружающих точек, S — число таких "непустых" точек.
К*.
После обработки всех разрезов выполняется 24.P(x,
y)
, образованного прямоугольника.P(x, y) — "пустая"?Если да, отыскивается точка Q(x, y)
в кадре L (с теми же координатами) и налагается
на точку Р: P(x, y) := Q(x, y).
Далее выполняется 20.
К* полностью сформирован. Производится
загрузка сформированного кадра в буфер показа БП и управление
передается 2 для продолжения работы модели.Программная реализация
Внешний вид экрана для работы пользователя с моделью представлен на рис. 15.18.
(рис 15.18) Вид экрана для работы с клип-модельюОбласть рисования вводимых для показа компьютерному персонажу объектов реализована в виде простого графического редактора на основе примера, приведенного в [6]. Данный графический редактор позволяет создавать контурные рисунки в области рисования с помощью набора предлагаемых инструментов (карандаш, ластик) и заливать замкнутые контуры выбранным из палитры цветом с помощью инструмента "кисть".
Размер
Область демонстрации клипов, показывающих реакцию
компьютерного персонажа, реализована с помощью компонента Animate из библиотеки компонент Delphi5. Данный
компонент обладает свойством FileName, которое позволяет
программным способом указывать имя файла, содержащего требуемый для проигрывания
клип. Кроме того, у компонента Animate имеется метод Play
с параметрами FromFrame (начальный кадр), ToFrame (конечный
кадр) и Count (число повторений анимации). Этот метод позволяет программным
способом, динамически указывать, с какого кадра начинать и каким заканчивать проигрывание
анимации. Таким образом, остается с помощью любой программы, позволяющей разрабатывать клипы,
создать базу клипов, демонстрирующих реакции компьютерного персонажа на внешние раздражители.
В модели введены ограничения на качественные характеристики изображаемых объектов. Объекты могут быть только двух видов: съедобными и несъедобными. Соответственно компьютерный персонаж имеет только три реакции на внешнюю среду: 1 — состояние ожидания, оно же — если предмет незнакомый, 2 — состояние удовольствия, если узнан съедобный предмет, 3 — состояние неудовольствия, если узнан несъедобный предмет.
Для демонстрации достаточно, чтобы база данных
содержала всего один клип, созданный с помощью программы
Flash4 [17]. Данный клип содержит четыре фрагмента, разделенных
Первоначально компьютерный персонаж "ничего
не знает", т.е. база данных, где хранятся матрицы
следования, значения
На рис. 15.19 показан результат предъявления необученному компьютерному персонажу изображения цветка.
(рис 15.19) Реакция на предъявлении цветка до обученияВидно, что реакция отсутствует, а в поле названия
написано "Не знаю, что это". Теперь, если в
поле названия написать "Цветок", указать признак
"несъедобное" и нажать кнопку "ЗАПОМНИТЬ",
то начинает работать блок обучения модели. Прежде всего, вдоль
контура рисунка производится закрашивание тех клеточек, которые
захватываются контуром, затем каждая закрашенная клетка обрамляется
закрашенными клетками справа, слева, сверху и снизу. Таким образом,
вдоль контура формируется полоса допуска для учета "дрожания руки"
при рисовании. Далее вычисляется значение
(рис 15.20) Реакция на знакомое съедобноеКогда компьютерный персонаж уже обучен, т.е. база данных не пуста, то при нажатии на кнопку "ЧТО ЭТО?" после сканирования области рисования и "фокусирования зрения" запускается блок распознавания. В нем сначала осуществляется закрашивание клеточек вдоль контура рисунка, а затем производится перебор эталонов базы данных и попытка "уложить предъявленный" образ в границы эталонов, хранимых в базе данных; при этом формируется список эталонов, в границы которых вписывается предъявленный образ. Если список пуст, то образ не узнан. В противном случае в качестве узнанного выбирается эталон в соответствии с максимальным возбуждением нейрона выходного слоя. В поле названия записывается имя эталона, указывается значение качественного признака (съедобное, несъедобное) и запускается клип реакции компьютерного персонажа. Пример такого результата показан на рис. 15.20.
***
Изложенный в лекции материал имеет скорее принципиальный
характер, затрагивая широкий спектр вопросов экспериментального
моделирования. Несомненно, что задача "живого" моделирования,
как и проблема создания на основе
Вместе с тем все более проявляется возможность
не только научно-технического, например, в робототехнике,
но и художественного воплощения и использования таких моделей,
могущих определить новое направление в области искусства: изобразительного,
зрелищного, сценического (театр марионеток), культурно-развлекательного и просветительного
(исторические реконструкции), в технике кино, в компьютерных играх, в рекламе, в учебных наглядных
пособиях, в новых способах
Тогда возникает и проблема отображения коллективного
разума. Это может быть актуально как для систем вида "человек
— модель ИИ", так и для систем взаимодействующих моделей ИИ. При
компьютерной реализации
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.