AnyLogic
Развернуть
Размер шрифта

3D Окно

3D окно представляет собой элемент, задающий на диаграмме агента область, в которой во время запуска модели будет отображаться трехмерная анимация этого объекта.

Если вы хотите, чтобы у вашего объекта была трехмерная анимация, то этот элемент будет необходимо добавить на диаграмму этого объекта.

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

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

Демо-модель: Multiple 3D Windows and Cameras Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Чтобы добавить на презентацию окно трехмерной анимации (3D окно)

  1. Перетащите элемент 3D Окно из секции 3D палитры Презентация на диаграмму агента.
  2. Вы увидите в графическом редакторе закрашенную серым область.
  3. Перейдите в панель Свойства.
  4. Выберите подходящий вам Тип навигации (все типы навигации 3D окна описаны ниже).
  5. Если вы хотите, чтобы при запуске модели окно показывало именно нужные вам фигуры презентации, задайте для этого окна камеру, которая будет "снимать" то, что будет "показывать" окно трехмерной анимации. Для этого вначале добавьте на диаграмму агента камеру, как это описано здесь, а затем выберите имя этой камеры в опции Камера.
  6. Если вы планируете перемещать камеру во время работы модели, и вы хотите, чтобы окно трехмерной анимации следовало за этой камерой, показывая то, что в текущий момент будет попадать в ее объектив, то выберите опцию Следовать за камерой.
  7. Если вы хотите, вы можете включить отображение сетки, которая будет отображаться в плоскости с координатой Z=0. Для этого перейдите в секцию свойств Сцена и выберите цвет, которым вы хотите рисовать сетку, с помощью элемента Цвет сетки.
  8. Здесь же вы можете выбрать и цвет фона для сцены трехмерной анимации. Обратите внимание, что изменение настроек как сетки, так и фона применяются не к данному конкретному 3D окну, а к общей для всех окон сцене трехмерной анимации данного агента.

Свойства

Основные

Имя — Имя окна. Это имя будет использоваться для идентификации элемента и доступа к нему из кода

Исключить — Если опция выбрана, то окно будет исключено из модели.

Камера — Здесь вы можете задать камеру, которая будет "снимать" то, что данное окно будет "показывать", то есть определять, какая часть трехмерной сцены будет отображаться в данном окне.

Следовать за камерой — [Доступно, только если задана Камера] Определяет, будет ли при движении связанной с этим окном камеры окно сопровождать ее, показывая текущий контекст, попадающий в перемещающийся объектив этой камеры.

Тип навигации — Здесь вы можете выбрать тип навигации 3D окна. Тип навигации определяет то, какая степень свободы будет предоставлена пользователю при навигации по отображаемой в окне сцене с помощью мыши.

Полная — Навигация возможна без каких бы то ни было ограничений. Этот тип навигации доступен только тогда, когда окно не следует за указанной камерой.
Ограничена по Z: выше 0 — Навигация возможна только выше плоскости Z=0. Этот тип навигации доступен только тогда, когда окно не следует за указанной камерой.
Только вращение — Тип навигации, в котором пользователю разрешается только вращать содержимое окна. Этот тип навигации может использоваться тогда, когда окно следует за указанной камерой.
Нет — Навигация запрещена. Этот тип навигации используется по умолчанию в том случае, если окно следует за указанной камерой.
Сцена

Свойства, располагающиеся в секции Сцена, применяются не к данному конкретному 3D окну, а к общей для всех окон сцене трехмерной анимации данного агента. Задав, например, отображение сетки в свойствах одного 3D окна, вы включите отображение сетки у всех окон трехмерной анимации данного агента.

Цвет сетки — цвет сетки сцены трехмерной анимации. По умолчанию отображение сетки отключено (выбрано значение Нет цвета).

Цвет фона — цвет фона сцены трехмерной анимации.

Местоположение и размер

X — x-координата верхнего левого угла окна.

Y — y-координата верхнего левого угла окна.

Ширина — Ширина окна, в пикселях.

Высота — Высота окна, в пикселях.

Дополнительные

Создать область просмотра в режиме запуска модели — Если опция выбрана, то будет создана область просмотра, включающая в себя это 3D окно. Это облегчит навигацию к окну трехмерной анимации во время выполнения модели. Эта область просмотра не будет видна в режиме разработки модели, вы сможете только переходить к ней при помощи обычных инструментов навигации. В качестве заголовка этой области просмотра будет задано имя этого 3D окна.

Отображать имя — Если опция выбрана, то имя окна будет отображаться в графическом редакторе.

Дальность отрисовки — Расстояние (в пикселях), определяющее видимую область трехмерной сцены, то есть расстояние от камеры до видимого края сцены. Сцена не будет отображаться за пределами области видимости.

Во время работы модели вы можете перемещаться по сцене трехмерной анимации, отображаемой в 3D окне, с помощью команд мыши, описанных здесь. AnyLogic поддерживает несколько режимов навигации в 3D окне, предоставляющих пользователю различные степени свободы при навигации по отображаемой в этом окне сцене:

  • Полная — Навигация возможна без каких бы то ни было ограничений. Этот тип навигации доступен только тогда, когда окно не следует за указанной камерой.
  • Ограничена по Z: выше 0 — Навигация возможна только выше плоскости Z=0. Этот тип навигации доступен только тогда, когда окно не следует за указанной камерой.
  • Только вращение — Тип навигации, в котором пользователю разрешается только вращать содержимое окна. Этот тип навигации может использоваться тогда, когда окно следует за указанной камерой.
  • Нет — Навигация запрещена. Этот тип навигации используется по умолчанию в том случае, если окно следует за указанной камерой.

Функции

Местоположение
Функция Описание
double getX() Возвращает X-координату фигуры (ее верхнего левого угла).
double getY() Возвращает Y-координату фигуры (ее верхнего левого угла).
void setX(double x) Задает X-координату фигуры.

x — новое значение X-координаты.
void setY(double y) Задает Y-координату фигуры.

y — новое значение Y-координаты.
void setPos(double x, double y) Задает новые координаты фигуры.

x — новое значение x-координаты.
y — новое значение y-координаты.
void setPos(Point p) Задает новые координаты фигуры.

p — объект Point, содержащий координаты.
Размер
Функция Описание
double getWidth() Возвращает ширину фигуры.
double getHeight() Возвращает высоту фигуры.
void setWidth(double width) Задает ширину фигуры равной width.
void setHeight(double height) Задает высоту фигуры равной height.
double getScaleX()
double getScaleY()
Возвращает масштаб фигуры по оси X (Y).
void setScaleX(double sx)
void setScaleY(double sy)
Задает масштаб фигуры по оси X (Y).

sx — новое значение масштаба по оси X. *
sy — новое значение масштаба по оси Y. *
void setScale(double sx, double sy) Задает масштаб фигуры по двум осям.

sx — новое значение масштаба по оси X. *
sy — новое значение масштаба по оси Y. *
void setScale(double s) Задает одинаковое значение масштаба по обеим осям.
s — новое значение масштаба по обеим осям. *
* Чтобы сохранить изначальный масштаб, задайте значение 1.
Камера
Функция Описание
void setCamera(Camera3D camera) Настраивает 3D-окно на заданную камеру и при необходимости следует за ней.

camera — камера для 3D-окна.
void setCamera(Camera3D camera, boolean follow) Настраивает 3D-окно на заданную камеру и при необходимости следует за ней.

camera — камера для 3D-окна.
follow — если true, это 3D-окно будет следить за движением камеры. В режиме «следования» поддерживаются два режима: NAVIGATION_NONE и NAVIGATION_ROTATION_ONLY. Если режим навигации не поддерживается, задается значение NAVIGATION_NONE.
void setCamera(Camera3D camera, boolean follow, long transitionTimeout) Настраивает 3D-окно на заданную камеру и при необходимости следует за ней.

camera — камера для 3D-окна.
follow — если true, это 3D-окно будет следить за движением камеры. В режиме «следования» поддерживаются два режима: NAVIGATION_NONE и NAVIGATION_ROTATION_ONLY. Если режим навигации не поддерживается, задается значение NAVIGATION_NONE.
transitionTimeout — если не 0, текущее положение камеры и ее ориентация будут сведены к положению заданной камеры через заданное значение тайм-аута в реальных миллисекундах (не единицах модельного времени).
Navigation mode
Функция Описание
void setNavigationMode(Navigation3DType mode) Задает режим навигации (возможность манипулирования положением камеры с помощью мыши). Если 3D-окно связано с камерой и режим навигации не поддерживается, будет задано значение NAVIGATION_NONE.

mode — режим навигации.
Допустимые значения:
NAVIGATION_FULL — работает, когда 3D-окно не связано с камерой.
NAVIGATION_LIMITED_TO_Z_ABOVE_ZERO — работает, когда 3D-окно не связано с камерой.
NAVIGATION_ROTATION_ONLY
NAVIGATION_NONE
Поворот
Функция Описание
double getRotation() Возвращает угол поворота фигуры по часовой стрелке в радианах.
void setRotation(double r) Задает угол поворота фигуры.

r — новое значение угла поворота в радианах.
Видимость
Функция Описание
boolean isVisible() Проверяет, отображается ли 3D-окно на анимации во время выполнения модели. Если функция возвращает true, то фигура отображается, если false — нет.
void setVisible(boolean v) Задает видимость 3D-окна.

v — видимость: задайте true, чтобы окно было видно, или false, чтобы сделать его невидимым.
Уровень
Функция Описание
Level getLevel() Returns the level, where this 3D window is located.
Group
Функция Описание
ShapeGroup getGroup() Возвращает уровень, на котором размещен объект.
Точки внутри фигуры
Функция Описание
boolean contains(double px, double py) Проверяет, находится ли внутри фигуры точка с заданными координатами (относительно контейнера данной фигуры, то есть в системе с теми же координатами x и y).
Возвращает true, если внутри фигуры есть такая точка.

px — x-координата относительно контейнера фигуры.
py — y-координата относительно контейнера фигуры.
Point randomPointInside() Возвращает случайно выбранную точку внутри объекта.
Функция использует генератор случайных чисел объекта Presentable, содержащего данную фигуру. При создании фигуры из кода при вызове функции появится ошибка, если фигура не была добавлена к какой-либо группе — в этом случае используйте функцию randomPointInside(Random rng).
Point randomPointInside(java.util.Random rng) Возвращает случайно выбранную точку внутри объекта, используя заданный генератор случайных чисел.

rng — генератор случайных чисел.
Как мы можем улучшить эту статью?