Меню
Бесплатно
Главная  /  Установка и настройка  /  Слежка - скрытое наружное наблюдение за человеком. Элементы управления и меню

Слежка - скрытое наружное наблюдение за человеком. Элементы управления и меню

Глава 15: Работа с Ограничителями

Слежение за объектом

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

Давайте рассмотрим как работает ограничитель "Track To " на примере. Добавьте в сцену объект, за которым будет следить камера. Перейдите к его кнопкам редактирования (F9 ). Для дальней работы вам необходимо знать имя этого объекта. Вызовите информационное окошко с помощью кнопки "N ", измените имя объекта на Actor для удобства.

Теперь выберите камеру, перейдите к кнопкам Объекта (F7 ). Найдите здесь вкладку Constraints , нажмите в ней кнопку Add Constraint и выберите из списка ограничителей "Track To ". В панели опций Track To , найдите поле Target OB: Впишите в него имя нашего объекта, то есть Actor . После этого меду объектом и камерой появится пунктирная линия, обозначающая слежение камеры за объектом. Если Вы сейчас посмотрите в камеру - перед вами встанет одна проблема - Камера не видит объект! Чтобы решить эту проблему, нажмите кнопку To: -Z , а также Up: Y в панели Constraints . Вот и все! Теперь куда бы вы не передвигали объект - он всегда будет виден из камеры. Есть другой способ создания слежения камеры за объектом. Выберите камеру, затем объект и нажмите Ctrl T , в появившемся меню выберите тип "Track To Constraint ".

Опции панели Constraints:

To: X,Y или Z и -X,-Y или -Z - оси, по которым происходит слежение. Обычно необходимо выбрать ось -Z

Influence - Степень слежения. Чем меньше значение этого поля, тем слабее слежение камеры за объектом.

Target - имя объекта слежения

Up - направление слежения обычно используется "Y"

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

Предположим, что по некоторой достаточно длинной криволинейной трассе движется объект (в нашем случае примитив Torus Knot ), перемещение которого должно фиксироваться камерой крупным планом - значит, в конкретный момент времени наблюдать можно только за отдельным участком трассы. Кроме того, небольшой фрагмент трассы с объектом в каждый конкретный момент времени должен освещаться тремя разноцветными прожекторами, напоминающими разноцветные театральные софиты. Получается, что помимо движения объекта по сложной траектории требуется также организовать слежение за ним камеры и трех источников света. Создайте плоскость и объект Torus Knot , а затем настройте освещение посредством внедрения в сцену слабого Omni -источника для общего освещения сцены и трех направленных прожекторов, например с лучами синего, красного и зеленого цветов и небольшими световыми конусами (в данном случае параметр Hotspot /Beam равен 10, а Falloff /Field - 20) - рис. 41. Добавьте трассу в виде произвольного криволинейного сплайна и переместите объект в начало трассы (рис. 42).

Анимируем перемещение объекта. Создайте объект-пустышку и организуйте его перемещение по траектории (команда Animation =>Constraints =>Path Constraint с включенным на панели Motion флажком Follow ). Свяжите объект Torus Knot с фиктивным объектом и выровняйте его по объекту-пустышке по всем трем осям, убедитесь, что при проигрывании анимации объект Torus Knot совершает запланированное перемещение по траектории.

Теперь нужно настроить слежение источников света. В нашем случае источники направленные ( Target Spot ), то есть для них уже задан контроллер Look At (Смотреть на), ограничивающий их вращение таким образом, чтобы они всегда были направлены на свои мишени. Поэтому самым простым решением представляется указать в качестве мишеней Dummy -объект, что автоматически приведет к тому, что источники всегда будут направлены на движущийся объект. Для этого достаточно выделить первый источник (без мишени), на панели Motion открыть свиток Look At Parameters (Параметры контроллера «Смотреть на»), щелкнуть на кнопке Pick Target (Указать мишень) и указать в одном из окон проекций объект Dummy 01 (рис. 43). Затем данную операцию следует проделать в отношении двух других источников. После этого источники света будут действительно следить за движущимся объектом, только вот эффект разноцветных театральных софитов окажется утраченным, поскольку все три источника станут освещать одну и ту же область пространства, а значит, их разноцветные световые лучи полностью сольются (рис. 44). Получается, что мишень для каждого источника должна быть своя, но при этом все три мишени должны следовать за объектом Dummy 01. Поэтому создайте еще три фиктивных объекта и разместите их так, чтобы они находились в центрах предполагаемых световых пятен (рис. 45). Выделите все три дополнительных объекта-пустышки и свяжите их с объектом Dummy 01 (рис. 46). Теперь софиты будут не только следить за движущимся объектом, но и освещать каждый свою зону, что и обеспечит наличие трех разноцветных световых пятен (рис. 47).

Рис. 43. Настройка параметров свитка LookAtParameters для первого Spot -источника

Рис. 46. Вид иерархической цепочки после связывания дополнительных Dummy -объектов

В окне Left создайте камеру, окно Perspective замените на окно проекции камеры (команда Views =>Camera из меню окна проекции или клавиша C). Настройте положение и ориентацию камеры так, чтобы она была направлена на движущийся объект (рис. 48). К сожалению, направление ориентации на объект будет выдерживаться лишь для данного конкретного кадра анимации. Поэтому выделите камеру (без мишени), на панели Motion откройте свиток Look At Parameters , щелкните на кнопке Pick Target и укажите в качестве мишени камеры объект Dummy 01 (рис. 49). Проиграйте анимацию - теперь камера добросовестно следит за объектом, вот только расстояние между камерой и объектом постоянно меняется, что затрудняет наблюдение (рис. 50). Поэтому свяжите камеру с объектом Dummy 01 (рис. 51) - теперь камера будет не только продолжать слежение за объектом, но и автоматически настраивать позиционирование, а значит, наблюдение за объектом будет производиться с одного и того же расстояния (рис. 52). К сожалению, это еще не все - внимательно просмотрите всю анимацию, и вы увидите, что освещение софитами движущегося объекта на разных этапах анимации неодинаково, хотя все три световых пятна всегда присутствуют - дело в том, что меняется расстояние от источников света до объекта. Исправляется ситуация точно так же, как и вышерассмотренная с позиционированием камеры - достаточно связать все три источника с объектом Dummy 01 (рис. 53), а затем установить их на желаемом удалении от объекта. Это и приведет к нужному результату - отдельные кадры полученной в итоге анимации представлены на рис. 54.

Рис. 49. Настройка параметров свитка LookAtParameters для камеры

Шевеление щупалец морского обитателя

Применим метод прямой кинематики для имитации шевеления щупалец некоего морского обитателя. Вначале создайте три базовых объекта - один объект Spring 01 и два обычных цилиндра, разместите их друг на друге в направлении оси Z (это и будет основа для щупальца). Между ними включите два Dummy -объекта (рис. 55). Выделите объект Cylinder 02, откройте на панели Motion свиток Assign Controller (Назначение контроллеров), выделите строку Rotation и щелкните на одноименной кнопке Assign Controller (рис. 56). В открывшемся окне выделите опцию LookAt Constrant (рис. 57) и нажмите Ok. Затем щелкните на кнопке Add LookAt Target и в качестве цели, на которую будет смотреть данный цилиндр, укажите нижний объект-пустышку, а в области Select LookAt Axis подсветите ось Z (рис. 58). Аналогичную операцию проведите в отношении объекта Spring 01, только в качестве ограничивающей его вращение цели укажите объект Dummy 02.

Рис. 56. Кнопка AssignController

Рис. 57. Выбор контроллера LookAtConstrant

Рис. 58. Назначение LookAt -цели объекту Cylinder 02

Теперь назначим обоим объектам-пустышкам постепенно затухающие колебания, что можно сделать путем добавления им контроллеров Spring (Пружина). Выделите объект Dummy 01, откройте на панели Motion свиток Assign Controller , выделите строку Position , щелкните на Assign Controller , выберите контроллер Spring и увеличьте его параметр Mass примерно до 500 (рис. 59). Данный параметр отвечает за силу колебаний - чем выше его значение, тем колебания сильнее. Точно таким же образом назначьте контроллер Spring второму фиктивному объекту.

Рис. 59. Назначение контроллера Spring объекту Dummy 01

Свяжите объект Dummy 01 с объектом Cylinder 01, а объект Dummy 02 с объектом Cylinder 02 (рис. 60). В режиме автоматической генерации ключей в одном из начальных кадров (мы выбрали 10-й) переместите объект Cylinder 01, являющийся родительским, на некоторое расстояние относительно осей X и Y (рис. 61). Проиграйте анимацию, и вы увидите, что щупальце шевелится (рис. 62). Размножьте щупальца, применив операцию Array (команда Tools =>Array ) с параметрами как на рис. 63. Это приведет к получению сразу массива щупалец (рис. 64), которыми можно будет воспользоваться при создании какого-нибудь сказочного морского обитателя, только придется прочие элементы данного существа связать с главным родительским объектом сцены Cylinder 01. В силу большого количества объектов сцены это окажется проблематичным. Поэтому вначале щелкните на кнопке Select by Name , выберите объекты, которые требуется связать. Затем активируйте инструмент Select and Link и вновь щелкните на кнопке Select by Name - откроется окно Select Parent (а не Select Object ); укажите в нем объект Cylinder 01 (рис. 65) и щелкните на кнопке Link , что и приведет к требуемому связыванию. Теперь щупальца уже будут перемещаться не сами по себе, а вместе с прочими элементами морского существа. Вид полученной в итоге сцены в некоторых кадрах анимации может напоминать рис. 66.

Чтобы увидеть местоположение объекта на карте, достаточно кликнуть левой кнопкой мыши на названии объекта в списке. Карта будет центрирована по указанному объекту. При этом масштаб карты останется прежним. Перемещайтесь по карте и масштабируйте ее, как Вам удобно. Способы обращения с картой подробно описаны в разделе Карта.

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

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

Чтобы не терять текущее местоположение объекта на карте, поставьте также флажок в графе «Следить за объектом» . Объекты, отмеченные флажками в этой графе, видны на карте всегда. По приходу нового сообщения от таких объектов, карта автоматически центрируется так, чтобы эти объекты были видны.

Еще в данном разделе:

-

Два года назад, когда я только начал заниматься мультикоптерами, мне пришлось сделать небольшой . Поскольку квадрокоптер задумывался сугубо автономным, все что требовалось от этого пульта - это управлять беспилотником во время испытаний и настройки.

В принципе, пульт со всеми возложенными на него задачами справлялся вполне успешно . Но были и серьезные недостатки.

  1. Батарейки в корпус никак не влазили, поэтому приходилось их приматывать к корпусу изолентой:)
  2. Настройка параметров была вынесена на четыре потенциометра, которые оказались очень чувствительными к температуре. В помещении настраиваешь одни значения, выходишь на улицу - а они уже другие, уплыли.
  3. У Arduino Nano, которую я использовал в пульте, есть всего 8 аналоговых входов. Четыре были заняты настроечными потенциометрами. Один потенциометр служил газом. Два входа были подключены к джойстику. Оставался свободен только один выход, а параметров для настройки гораздо больше.
  4. Единственный джойстик был вовсе не пилотным. Управление газом с помощью потенциометра тоже весьма угнетало.
  5. А еще пульт не издавал никаких звуков, что иногда бывает крайне полезно.

Чтобы устранить все эти недостатки, я решил кардинально переделать пульт. И железную часть, и софт. Вот что мне захотелось сделать:

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

Новый корпус

Идея чрезвычайно проста и эффективна. Вырезаем из оргстекла или другого тонкого материала две пластины и соединяем их стойками. Все содержимое корпуса крепится либо к верхней, либо к нижней пластине.

Элементы управления и меню

Чтобы управлять кучей параметров, нужно либо разместить на пульте кучу потенциометров и добавить АЦП, либо делать все настройки через меню. Как я уже говорил, настройка потенциометрами не всегда хорошая идея, но и отказываться от нее не стоит. Так что, решено было оставить в пульте четыре потенциометра, и добавить полноценное меню.

Чтобы перемешаться по меню, и менять параметры обычно используют кнопки. Влево, вправо, вверх, вниз. Но мне захотелось использовать вместо кнопок энкодер. Эту идею я подсмотрел у контроллера 3D-принтера.


Разумеется, за счет добавления меню, код пульта распух в несколько раз. Для начала я добавил всего три пункта меню: "Telemetry", "Parameters" и "Store params". В первом окне отображается до восьми разных показателей. Пока я использую только три: заряд батареи, компас и высота.

Во втором окне доступны шесть параметров: коэффициенты PID регулятора для осей X/Y,Z и корректировочные углы акселерометра.

Третий пункт позволяет сохранять параметры в EEPROM.

Джойстики

Над выбором пилотных джойстиков я долго не размышлял. Так получилось, что первый джойстик Turnigy 9XR я добыл у коллеги по квадрокоптерному делу - Александра Васильева, хозяина небезызвестного сайта alex-exe.ru . Второй такой же заказал напрямую на Hobbyking.


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

Питание

В старом пульте я использовал простой регулятор напряжения LM7805, который кормил связкой из 8 батареек AA. Жутко неэффективный вариант, при котором 7 вольт уходили на нагрев регулятора. 8 батареек - потому что под рукой был только такой отсек, а LM7805 - потому что в то время этот вариант мне представлялся самым простым, и главное быстрым.

Теперь же я решил поступить мудрее, и поставил достаточной эффективный регулятор на LM2596S. А вместо 8-ми AA батареек, установил отсек на два LiIon аккумулятора 18650.


Результат

Собрав все воедино, получился вот такой аппарат. Вид изнутри.


А вот с закрытой крышкой.


Не хватает колпачка на одном потенциометре и колпачков на джойстиках.

Наконец, видеоролик о том, как происходит настройка параметров через меню.


Итог

Физически пульт собран. Сейчас я занимаюсь тем, что дорабатываю код пульта и квадрокоптера, чтобы вернуть им былую крепкую дружбу.

По ходу настройки пульта, были выявлены недостатки. Во-первых, нижние углы пульта упираются в руки:(Наверное я немного перепроектирую пластины, сглажу углы. Во-вторых, даже дисплея 16х4 не хватает для красивого вывода телеметрии - приходится названия параметров сокращать до двух букв. В следующей версии девайса установлю точечный дисплей, либо сразу TFT матрицу.