Студопедия

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

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

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






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






    Реализация трехмерных сцен в приложении 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.