UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

32 lines (31 loc) 1.16 kB
"use strict"; import { ParamConfig } from "../../engine/nodes/utils/params/ParamsConfig"; import { CameraNodeType } from "../../engine/poly/NodeContext"; import { ThreejsViewer } from "../../engine/viewers/Threejs"; import { CoreCameraPerspectiveFrameMode } from "./frameMode/CoreCameraPerspectiveFrameMode"; import { PerspectiveCamera } from "three"; export const PERSPECTIVE_CAMERA_DEFAULT = { fov: 50, fovRange: [1e-3, 180] }; export function PerspectiveCameraParamConfigMixin(Base) { return class Mixin extends Base { constructor() { super(...arguments); /** @param field of view */ this.fov = ParamConfig.FLOAT(PERSPECTIVE_CAMERA_DEFAULT.fov, { range: PERSPECTIVE_CAMERA_DEFAULT.fovRange }); } }; } export const registerPerspectiveCamera = (poly) => { poly.registerCameraNodeType(CameraNodeType.PERSPECTIVE); poly.registerCamera(PerspectiveCamera, (options) => { const viewer = new ThreejsViewer({ ...options, updateCameraAspect: (aspect, resolution) => { CoreCameraPerspectiveFrameMode.updateCameraAspect(options.camera, aspect, { resolution }); } }); return viewer; }); };