Виды
Ниже мы рассмотрим параметры камеры для управления графическим видом.
Для управления ориентацией обзора при изменении текущих параметров камеры можно использовать команду CameraOrientationCommand. Также есть возможность установить продолжительность анимации камеры с помощью поля duration.
Добавлено в версии 1.7.0: Добавлена команда CameraCaptureCommand.
Стандартные виды
Чтобы установить один из стандартных режимов просмотра, следует выполнить команду CameraOrientationCommand, указав тип StandardCameraOrientation в поле ‘params’.
Команда CameraOrientationCommand:
export type CameraOrientationCommand = {
name:"CameraOrientationCommand" // name of command
params:StandardCameraOrientation|CustomCameraOrientation // field to set parameters of a camera
duration?:number // field to set camera animation duration
}
Тип StandardCameraOrientation:
export type StandardCameraOrientation = {
type:"standard", // name of type
value:StdCameraOrientationsList
}
Пример (TypeScript):
// run CameraOrientationCommand to set front camera orientation
view.runCommand({
name:"CameraOrientationCommand", // name of command
// next arguments
params:{
type:"standard", // name of params
value: c3dvision.StdCameraOrientationsList.Front
},
duration:200, // camera animation duration (ms)
})
Настройка пользовательского вида
Вы можете изменить ориентацию камеры, выполнив команду CameraOrientationCommand с типом параметров CustomCameraOrientation и задав значения положения камеры (eyeVector, upVector). Также вы можете добавить поле target для перемещения камеры.
Тип CustomCameraOrientation:
export type CustomCameraOrientation = {
type:"custom",
// The eye vector on target
eyeVector: {
x:number,
y:number,
z:number,
},
// The up vector of the camera
upVector: {
x:number,
y:number,
z:number,
},
// Target position of the camera
target?: {
x:number,
y:number,
z:number,
},
// The distance from the target to the eye position
distance?:number,
}
Пример (TypeScript):
// run CameraOrientationCommand to set front camera orientation
view.runCommand({
name:"CameraOrientationCommand", // name of command
// next arguments
params:{
type:"custom", // name of params
eyeVector:{
x:0,
y:0,
z:-1,
},
upVector:{
x:0,
y:1,
z:0,
}
},
duration:200, // camera animation duration(ms)
})
Сохранение текущего вида
Вы можете сохранить текущие параметры камеры, чтобы использовать их позже. Чтобы получить параметры камеры, необходимо выполнить команду GetParametersCommand с типом Camera.
Пример (TypeScript):
// run GetParametersCommand to get current camera orientation
let result = view.runCommand({
name:"GetParametersCommand", // name of command
// next arguments:
type:"Camera"
})
if( result.name == "GetParametersResult" )
{
// save parameters
switch(result.params.name)
{
case "Camera":
savedOrientation = result.params.orientation
break
}
}
Затем запустите команду CameraOrientationCommand с сохраненными параметрами, чтобы восстановить ориентацию камеры.
Пример (TypeScript):
// run CameraOrientationCommand to load saved camera orientation
view.runCommand({
name:"CameraOrientationCommand", // name of command
// next arguments
params: savedOrientation,
duration:200, // camera animation duration(ms)
})
Захват событий камеры
Команда CameraCaptureCommand позволяет обрабатывать событие, когда камера меняет свои параметры (положение, проекцию и т. д.). Когда параметры изменяются, он запускает указанные пользователем функции обратного вызова.
Важно
Обратный вызов запускается только один раз, поскольку он удаляется сразу после запуска. Если вы запустите новую команду до того, как предыдущая выполнит обратный вызов, последняя никогда не будет запущена, поскольку она уже переписана.
CameraCaptureCommand (TypeScript):
export type CameraCaptureCommand = {
name: "CameraCaptureCommand"
onChange: () => void
}
Пример (TypeScript):
// run command "zoom to fit"
view.runCommand({
name: "CameraCaptureCommand", // name of command
// next arguments
onChange: () => {...}
})
Масштабировать по размеру
Команда ZoomFitCommand позволяет масштабировать объект или сцену так, чтобы они поместились в камере. Поле uuid — это идентификатор узла, который необходимо разместить в камере.
Пример (TypeScript):
// run command "zoom to fit"
view.runCommand({
name: "ZoomFitCommand", // name of command
// next arguments
uuid: node.id, // node`s id to fit in camera
duration: 200 // camera animation duration (ms)
})
Создание снимка вида
Команда MakeSnapshot позволяет создать изображение области просмотра.
export type MakeSnapshot = {
name: "MakeSnapshot"
width?: number
height?: number
params?: SnapshotCameraParams
}
type SnapshotCameraParams = {
orientation?: StandardCameraOrientation | CustomCameraOrientation
projection?: CameraProjection
}
Рассмотрим варианты этой команды.
width — ширина изображения. Если не передано, команда принимает текущую ширину области просмотра.
height — высота изображения. Если не передано, команда принимает текущую высоту области просмотра.
params — предпочтительные параметры камеры сцены, учитываемые при создании снимка. Если не передано, команда принимает текущие параметры камеры сцены.
Пример (TypeScript):
view.runCommand({
name: "MakeSnapshot" // name of command
})