Камера

Последнее обновление: 13.03.2016

Теперь перейдем к последнему моменту в нашем приложении - к камере. От настроек камеры зависит, как трехмерная сцена будет отображаться на экране.

В WPF имеются три типа типа камер:

  • PerspectiveCamera. Создает перспективную проекцию трехмерной сцены. В итоге те предметы, которые находятся дальше, выглядят меньше. А те, которые ближе, выглядят больше - в принципе как и в реальной жизни.

  • OrthographicCamera. Создает ортогональную проекцию сцены, в которой не применяется перспектива. И предметы сохраняют свои размеры.

  • MatrixCamera. Позволяет задать матрицу преобразования трехмерной сцены в двухмерное содержимое для вывода на экран.

Камера в WPF

PerspectiveCamera и OrthographicCamera имеют следующие свойства, которые позволяют настроить камеру:

  • Position. Задает точку трехмерного пространства, в котором находится камера. Например:

    <Viewport3D>
        <Viewport3D.Camera>
            <PerspectiveCamera Position="0,0,2" LookDirection="0,0,-2" />
        </Viewport3D.Camera>
                
        <Viewport3D.Children>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <DirectionalLight Color="White" Direction="-1,-1,-2" />
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions="-0.5,0,0 0,0.5,0 0.5,0,0" TriangleIndices="0,2,1" />
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial Brush="Red" />
                        </GeometryModel3D.Material>
                    </GeometryModel3D>
                </ModelVisual3D.Content>
            </ModelVisual3D>
        </Viewport3D.Children>
    </Viewport3D>
    

    Здесь камера устанавливается в точку (0,0,2), то есть фактически находится впереди треугольника на 2 единицы - как-бы между нами и экраном монитора, на котором изображен треугольник.

  • LookDirection. Определяет вектор направления камеры. Чтобы правильно определить направление камеры, нам надо выбрать точку, на которую будет направлена камера. И затем из координат этой точки вычесть координаты в свойстве Position.

  • Координаты камеры в WPF
  • UpDirection. Задает вектор вертикальной ориентации камеры, точнее ее наклон. В нашем случае данное свойство не было задано, поэтому оно приняло значения по умолчанию - (0,1,0). Данное значение указывает, что камера направлена прямо вверх. Но мы можем наклонить камеру немного по оси Х, указав, например, следующее значение:

    <PerspectiveCamera Position="0,0,2" LookDirection="0,0,-2" UpDirection="-0.15,1,0" />
  • NearPlaneDistance. Это свойство задает переднюю плоскость отсечения. А все та часть сцены, которая находится к камере ближе значения этого свойства, отображаться не будет. По умолчанию имеет значение 0.125

  • FarPlaneDistance. Это свойство задает заднюю плоскость отсечения. А все та часть сцены, которая находится к камере дальше значения этого свойства, отображаться не будет. По умолчанию имеет значение Double.PositiveInfinity

Кроме этих свойств камеры имеют еще свойство, которое задает ширину обзора или угол обзора. Только для различных камер оно называется по разному. Для PerspectiveCamera это свойство FieldOfView. Для OrthographicCamera это свойство Width. Чем больше значение этого свойства, тем угол обзора камеры.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850