Виды

Ниже мы рассмотрим параметры камеры для управления графическим видом.

Для управления ориентацией обзора при изменении текущих параметров камеры можно использовать команду 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
}

Рассмотрим варианты этой команды.

  1. width — ширина изображения. Если не передано, команда принимает текущую ширину области просмотра.

  2. height — высота изображения. Если не передано, команда принимает текущую высоту области просмотра.

  3. params — предпочтительные параметры камеры сцены, учитываемые при создании снимка. Если не передано, команда принимает текущие параметры камеры сцены.

Пример (TypeScript):

view.runCommand({
    name: "MakeSnapshot" // name of command
})