Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Система координат и размещение камеры






Реализация трехмерных сцен в приложении WPF возможно, как в разметке XAML, так и в процедурном коде, используя предоставляемые платформой.Net возможности двумерной графики. В данной лабораторной работе рассмотрим возможности XAML.

Графическое содержимое трехмерных сцен в приложении WPF инкапсулировано в элементе Viewport3D, который может участвовать в структуре двумерного элемента. Графическая система рассматривает объект Viewport3D как двумерный визуальный элемент в ряду других элементов приложения WPF. Объект Viewport3D функционирует как окно просмотра трехмерной сцены. Говоря точнее, это поверхность, на которую проецируется 3D сцена.

 

В традиционном приложении двухмерный элемент Viewport3D используется как любой другой контейнерный элемент, например «Grid» или «Canvas».

Начало системы координат WPF для двухмерной графики расположено в левом верхнем угле области отрисовки (обычно экрана или окна). В этом случае положительные значения оси x откладываются вправо, а положительные значения оси y — сверху вниз. Однако в трехмерной системе начало координат располагается в центре отрисовываемой области, положительные значения оси x откладываются вправо, оси y — снизу вверх, а оси z — из центра к наблюдателю (рис. 11.1). WPF принята правостороння система координат, поэтому указание положительного значения угла поворота приведет к повороту против часовой стрелки вокруг оси.

 

Рис. 11.1. 2D и 3D Системы координат

 

Поскольку трехмерная сцена выглядит по-разному в зависимости от точки наблюдения, необходимо указать эту точку наблюдения. Задание точки наблюдения позволяет класс Camera. Для описания способа проецирования используются классы OrthographicCamera и PerspectiveCamera (для получения ортографической и перспективной проекции соответственно).

Свойства NearPlaneDistance и FarPlaneDistance камеры определяют расстояния до передней секущей плоскости и задней секущей плоскости области видимого объема.

Рассмотрим пример описания получения перспективной проекции[5]:

< ViewPort3D.Camera>

< PerspectiveCamera

Position=" -250, 250, 200"

LookAtPoint=" 0, 0, 0"

UpDirection=" 0, 1, 0"

FieldOfView=" 40"

NearPlaneDistance=" 1"

FarPlaneDistance=" 500"

/>

Свойство Position задает позицию камеры в мировых координатах (центр проекции). Свойство LookAtPoint задает вектор, который определяет направление просмотра камеры в мировых координатах. Свойство UpDirection задает объект вектор, определяющий направление вверх для камеры. Свойство FieldOfView определяет угол между боковыми секущими плоскостями видимого объема.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.