ThingOrigin.js
    Preparing search index...

    Class TCamera

    相机

    Index

    Accessors

    • get arraySplitEnabled(): boolean

      ArrayCamera 分屏是否启用

      Returns boolean

    • get camera(): PerspectiveCamera | OrthographicCamera

      Returns PerspectiveCamera | OrthographicCamera

    • get cameraView(): Map<string, any>

      Returns Map<string, any>

    • get pipEnabled(): boolean

      画中画是否启用

      Returns boolean

    • get pipViews(): readonly PipView[]

      获取所有小窗视图(只读)

      Returns readonly PipView[]

    • get splitArrayCamera(): ArrayCamera

      分屏专属 ArrayCamera(启用后非空)

      Returns ArrayCamera

    • get splitViews(): readonly SplitView[]

      获取所有分屏视图(只读)

      Returns readonly SplitView[]

    Methods

    • 添加一个画中画小窗 scissor + viewport 多次 render

      Parameters

      Returns PerspectiveCamera | OrthographicCamera

      仅支持webGL渲染器

    • 清除 ArrayCamera 分屏

      Returns void

    • 清除所有画中画小窗

      Returns void

    • 开启 ArrayCamera 多分屏(单次 render 自动分屏)

      Parameters

      • options: ArraySplitOptions = {}

        分屏配置:views 数量或 cols*rows 决定分屏数

      Returns ArrayCamera

      ArrayCamera

      // 2x2 四分屏,均跟随主相机
      createArrayCamera({ cols: 2, rows: 2 })
      // 3 个自定义视角
      createArrayCamera({
      views: [
      { name: 'top', position: {x:0,y:60,z:0}, lookAt: {x:0,y:0,z:0} },
      { name: 'side', position: {x:60,y:0,z:0}, lookAt: {x:0,y:0,z:0} },
      { name: 'main', followMain: true }
      ]
      })
    • 聚焦模型

      Parameters

      • model: Object3D

        模型

      • ratio: number = 2

        距离系数,越大越远,默认 2

      Returns void

    • 根据鼠标位置命中分屏视口(与 calcSplitViewport 同一套坐标)

      Parameters

      • clientX: number
      • clientY: number

      Returns SplitView

    • 创建正交相机

      Parameters

      • container: any

        容器

      • frustumSize: any

        视锥架大小

      • params: any

        相机参数

      • Optionalaspect: number

        可选宽高比,不传则用容器宽高比

      Returns OrthographicCamera

    • 创建透视相机

      Parameters

      • container: any

        容器

      • params: any

        相机参数

      • Optionalaspect: number

        可选宽高比,不传则用容器宽高比

      Returns PerspectiveCamera

    • 检查是否有动画正在运行

      Returns boolean

    • 查询指定小窗是否正在动画

      Parameters

      • name: string

      Returns boolean

    • 窗口尺寸变化时更新分屏 viewport / 分隔线

      Returns void

    • 窗口尺寸变化时重排所有小窗位置和 DOM 尺寸

      Returns void

    • 锁定相机视角

      Parameters

      • direction: "top" | "bottom" | "left" | "right" | "front" | "back"

        方向

      • ratio: number = 1.1

        倍数

      • Optionalmodel: Object3D

        锁定模型(不传则锁定场景)

      Returns void

    • 相机观察某物体

      Parameters

      • modelName: string

        模型名称

      • time: number

        动画时长

      • OptionalscaleRadius: number = 1

        以半径为单位,让相机距离多远观察

      Returns void

    • 移除指定画中画小窗

      Parameters

      • name: string

        小窗名称

      Returns void

    • 渲染 ArrayCamera 分屏(由 ThingOrigin.update 调用,替换主相机渲染)

      Parameters

      • renderer: WebGLRenderer

        渲染器

      Returns boolean

      是否实际渲染

    • 渲染所有画中画小窗(由 ThingOrigin.update 在主渲染后调用) 内部使用 scissor + viewport,逐个区域 clear + render,互不污染

      Parameters

      • renderer: WebGLRenderer

        渲染器

      Returns void

    • 设置渲染相机

      Parameters

      • type: "PerspectiveCamera" | "OrthographicCamera" = 'PerspectiveCamera'

        相机类型

      Returns void

    • 相机路径动画 支持贝塞尔曲线和分段线性两种插值方式

      Parameters

      • config: CameraAnimationConfig

        动画配置

      • OptionalonProgress: (progress: number) => void

        进度回调函数

      • OptionalonComplete: () => void

        完成回调函数

      Returns Promise<void>

      // 场景1:展示视频 - 需要流畅的曲线路径,但匀速播放
      {
      interpolationType: "bezier", // 路径要平滑
      easingType: "linear" // 但速度要匀速(像视频播放)
      }
      // 场景2:漫游动画 - 精确经过每个景点,但有自然的加速减速
      {
      interpolationType: "linear", // 必须精确经过每个点
      easingType: "cubic" // 但速度要有变化(更自然)
      }
      // 场景3:电影镜头 - 既要有流畅路径,又要有速度变化
      {
      interpolationType: "bezier", // 路径平滑
      easingType: "cubic" // 速度有变化(电影感)
      }
    • 停止所有小窗动画

      Returns void

    • 停止当前相机动画

      Returns void

    • 停止指定小窗的动画

      Parameters

      • name: string

      Returns void

    • 同步分屏子相机 followMain:复制主相机旋转 + 本地偏移位置(不用 lookAt,避免与 OrbitControls 抖动) 固定视角:还原开启时的位置/旋转快照

      Returns void

    • 同步 followMain 小窗到主相机 把小窗 lookAt 更新为 OrbitControls.target(主相机当前关注的目标点), 小窗自身位置不变,仅朝向跟着主相机走,由 ThingOrigin.update 每帧调用

      Returns void

    • 平滑移动相机到指定位置 主相机:不传 pipName,每帧同步 OrbitControls.target 小窗相机:传 pipName 指定小窗名称,每帧同步该 view.lookAt

      Parameters

      • targetPosition: xyz

        目标位置

      • targetLookAt: xyz

        目标朝向

      • duration: number = 2000

        动画时长(毫秒)

      • OptionalonProgress: (progress: number) => void

        进度回调函数

      • OptionalonComplete: () => void

        完成回调函数

      • OptionalpipName: string

        小窗名称(不传则操作主相机)

      Returns Promise<void>

    • 切换主相机视角到指定小窗 用小窗相机自身的 position 和 lookAt 覆盖主相机,同步 OrbitControls target 并立即 update

      Parameters

      • name: string

        小窗名称

      Returns void

    • 更新指定分屏视图(位置/朝向/跟随等)

      Parameters

      • name: string

        分屏名称

      • update: Partial<
            Pick<
                SplitViewOptions,
                "position"
                | "lookAt"
                | "offset"
                | "followMain"
                | "fov",
            >,
        >

        更新配置

      Returns void

    • 更新小窗相机位置 / 朝向 / 布局

      Parameters

      • name: string

        小窗名称

      • update: {
            anchor?:
                | "top-left"
                | "top-right"
                | "bottom-left"
                | "bottom-right"
                | "custom";
            fov?: number;
            frustumSize?: number;
            height?: number;
            left?: number;
            lookAt?: xyz;
            padding?: number;
            position?: xyz;
            top?: number;
            width?: number;
        }

        更新信息

      Returns void

    • 更新分屏 OrbitControls(含拖拽中与阻尼衰减)

      Returns void

    Properties

    OrthographicCamera: OrthographicCamera

    正交相机

    PerspectiveCamera: PerspectiveCamera

    透视相机

    pipCameras: Camera[]

    画中画子相机列表(仅作引用持有,真正渲染走 renderArrayViews 的 scissor+viewport)

    type: string

    当前相机类型