CameraCoordinates

Положение источников света относительно камеры?

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Сводные данные значения

НаследованныйFALSE, или TRUE

Графические примитивы

ОбъектыЗначения по умолчанию CameraCoordinates
plot::DistantLight, plot::PointLight, plot::SpotLightFALSE

Описание

С CameraCoordinates = FALSE, координаты, задающие положение света, интерпретированы, когда модель координирует на 3 пробелах. Таким образом световые сигналы расположены относительно объектов в сцене. Они не перемещаются, когда камера перемещается.

С CameraCoordinates = TRUE, эти координаты интерпретированы как “координаты камеры”. Таким образом световые сигналы присоединены к камере и перемещаются автоматически с камерой, когда это перемещено.

Вектор (x, y, z) в “координатах камеры” должен быть интерпретирован можно следующим образом:

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

y - координата относится к вертикальной оси изображения, которое вы видите в средстве поиска. Положительные значения y выше вас, отрицательных значений y ниже вас.

z - координата относится к положению вдоль оптической оси камеры. Положительные значения z относятся к точкам перед вами, отрицательными значениями z к точкам позади вас.

В координатах камеры положение камеры (0, 0, 0).

Например, свет точки, расположенный в точку (0, 1, 0) в координатах камеры, является “главной лампой”, зафиксированной на расстоянии 1 выше камеры.

3D график может содержать несколько камер. Изменение состояния CameraCoordinates поскольку свет влияет на свое отношение ко всем камерам сцены. С CameraCoordinates = TRUE, положение света в 3 изменениях пробела, когда новая камера выбрана в интерактивном режиме.

Примеры

Пример 1

Мы задаем сферу:

sphere := plot::Spherical(
    [1, u, v], u = 0..2*PI, v = 0..PI,
    FillColorType = Functional,
    FillColorFunction = 
        proc(u, v) begin
          [(2 + cos(2*u))/3, (2 + sin(2*u))/3, 0]
        end_proc):

Мы задаем солнечный свет, сияющий сверху:

sunlight := plot::DistantLight([0, 0, 1], [0, 0, 0]):
plot(sphere, sunlight):

Затем солнечный свет задан относительно камеры. В координатах камеры, “выше камеры” дан Position[0, 1, 0]. Поскольку камера указывает вниз, мы устанавливаем направление солнечного света “позади” камеры также путем выбора направления [0, 1, -1.5] w.r.t. камера:

sunlight := plot::DistantLight([0, 1, -1.5], [0, 0, 0],
                               CameraCoordinates = TRUE):
plot(sphere, sunlight):

delete sphere, sunlight, pointlight:

Пример 2

Мы задаем ту же сферу как в предыдущем примере:

sphere := plot::Spherical(
    [1, u, v], u = 0..2*PI, v = 0..PI,
    FillColorType = Functional,
    FillColorFunction = 
        proc(u, v) begin
          [(2 + cos(2*u))/3, (2 + sin(2*u))/3, 0]
        end_proc):

Мы задаем анимированную камеру. Во-первых, мы используем солнечный свет, зафиксированный на пробеле:

camera := plot::Camera([-3*sin(a), -3*cos(a), 2],
                       [0, 0, 0], 0.3*PI, a = 0..2*PI):
sunlight:= plot::DistantLight([0, -2, 3], [0, 0, 0]):
plot(sphere, camera, sunlight):

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

sunlight:= plot::DistantLight([0, 3, -2], [0, 0, 0],
                              CameraCoordinates = TRUE):
plot(sphere, camera, sunlight):

Мы задаем свет точки, который фиксируется к некоторой точке выше камеры:

pointlight := plot::PointLight([0, 1, 0], 
                               CameraCoordinates = TRUE):
plot(sphere, camera, pointlight):

delete sphere, camera, sunlight, pointlight:

Пример 3

Мы задаем ту же сферу как в предыдущих примерах:

sphere := plot::Spherical(
    [1, u, v], u = 0..2*PI, v = 0..PI,
    FillColorType = Functional,
    FillColorFunction = 
        proc(u, v) begin
          [(2 + cos(2*u))/3, (2 + sin(2*u))/3, 0]
        end_proc):

Мы задаем анимированный свет точки, который расположен ниже камеры первоначально. Это перемещается в некоторую точку выше камеры во время анимации:

pointlight := plot::PointLight([0, 10*a, 0], a = -1..1,
                               CameraCoordinates = TRUE):
plot(sphere, pointlight):

Мы задаем анимированный свет точки, который расположен слева от камеры первоначально. Это перемещается справа от камеры:

pointlight := plot::PointLight([10*a, 0, 0], a = -1 .. 1,
                               CameraCoordinates = TRUE):
plot(sphere, pointlight):

delete sphere, pointlight:

Смотрите также

Функции MuPAD