Опубликован: 01.06.2007 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет путей сообщения
Лекция 15:

Основы "живого" моделирования

15.8. Перемещение, поворот и вращение

До сих пор рассматривалось поведение объекта в единственной системе координат. Взаимодействие многих объектов требует наличия центральной системы координат, в которой происходят все перемещения объектов относительно друг друга, и систем координат, связанных с каждым объектом — объектовых систем координат. Объект создается в его объектовой системе координат. Его движения "относительно себя" — сокращение мышц, повороты, вращение — удобнее наблюдать в связанной с ним объектовой системе координат. Таким образом, центральная система координат должна быть связана со многими объектовыми системами возможностями пересчета. Объектовые системы не занимают неизменное место в ней, а могут перемещаться и поворачиваться вместе с объектами.

Это означает, что каждая 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 ) ( 15.19)

Здесь элементы матрицы — направляющие косинусы углов между осями, xn0, yn0, zn0 координаты начала объектовой системы. Все указанные величины являются переменными. Только плавно изменяя их значения, можно добиться перемещения, поворота или вращения объекта среди других объектов общей сцены, связанной с центральной системой координат.

Отсюда важная рекомендация: чтобы имитировать относительное движение объектов, необходимо плавно, в реальном времени, давать приращения направляющим косинусам и смещениям так, чтобы сохранялись основные соотношения, связывающие декартовы системы координат. А именно, сумма квадратов элементов строк и столбцов должна быть равна единице.

15.9. Внешнее "механическое" воздействие на объект

Такое воздействие необходимо не только при определенном взаимодействии различных объектов, но и на уровне формирования, "ваяния" объекта. Идея такого ваяния заключается в следующем.

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

Можно допустить не только вдавливание инструмента в объект, но и вытягивания близлежащей области, подобно нарыву. В этом случае после соприкосновения с объектом следует отводить инструмент от него. Близкая область оболочки должна вытягиваться вслед за инструментом.

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

Роль подобных инструментов могут играть объекты друг для друга. Это позволит, например, имитировать некоторые разрушительные события.

15.10. Построение объектов в трехмерной памяти

Для построения объектов целесообразно воспользоваться тремя координатными проекциями, подобно 3D-MAX. Сначала в одной из проекций рисуется пока неточный, предполагаемый разрез объекта. На других проекциях автоматически сформируются отрезки — боковые проекции этого разреза. На разрезе определяется точка для дальнейшей деформации объекта в двух других проекциях. Проекция этой точки высвечивается на двух других проекциях.

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

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

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

15.11. Командно-программное управление объектами

Необходимо помнить, что объекты в трехмерной памяти создаются для их визуального восприятия. Система визуализации может базироваться на проецировании видимой поверхности всех объектов, включая фон, на плоскость z = 0 в центральной системе координат. Эта плоскость и представляет экран. Значит, каждая прямая, исходящая из точки xi, yi, 0 и перпендикулярная экрану, продолжается (здесь рассматриваем только прозрачную среду) до первого пересечения с одним из объектов или с фоном. Полученная точка обеспечивает изображение в данной текущей точке экрана.

Для получения различных срезов (подобно томографии) экран может формироваться и в других плоскостях вида z = a > 0.

Для получения различных ракурсов центральная система координат должна быть преобразована.

Введение мышц, шарниров, объектовых систем координат позволяет программировать действия объектов и их взаимное расположение. Программа создается на базе командного языка, содержащего команды вида

<сократить мышцу m с l = 0,8>;
      <повернуть объект Р по матрице S>;
      <приблизить объект Р>;
      <перенести объект Р>;
      <показать срез z = 5> и т.д.

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

Как каждая управляющая система, работа рассматриваемой системы тактируется. Поскольку видео — основное ее назначение, то тактовую частоту целесообразно совместить с частотой следования кадров. (Если хватит производительности! Иначе придется получать промежуточные кадры путем интерполяции.) Тогда программа ориентируется на имитацию движения в отдельном кадре в системе реального времени. Это значит, что если дан приказ сократить мышцу в 0,6 раза, то движение растягивается во времени на несколько кадров. Например, в отдельном кадре мышца сокращается лишь в 0,98 раз. Тогда в течение нескольких кадров необходимое сокращение будет достигнуто. По-видимому, необходимо задавать то количество кадров, в течение показа которых движение должно быть выполнено.

Эмпирические зависимости для такого дробления целесообразно получить экспериментально.

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

Программа управления объектами, как и каждая компьютерная программа, должна предусматривать альтернативные действия в случае выполнения предусмотренных условий, т.е. содержать команды условного перехода.

Эльвира Герейханова
Эльвира Герейханова

Раньше это можно было зделать просто нажав на тест и посмотреть результаты а сейчас никак

Елена Лобынцева
Елена Лобынцева
Помогите разобраться как можно подобрать НС для распознавания внутренней области выпуклого многоугольника?
Дмитрий Степанов
Дмитрий Степанов
Россия, Москва, МГТУ им. Баумана, 2006
Дмитрий Степаненко
Дмитрий Степаненко
Россия