ArrayCamera 分屏是否启用
画中画是否启用
获取所有小窗视图(只读)
分屏专属 ArrayCamera(启用后非空)
获取所有分屏视图(只读)
添加一个画中画小窗 scissor + viewport 多次 render
小窗配置
清除 ArrayCamera 分屏
清除所有画中画小窗
开启 ArrayCamera 多分屏(单次 render 自动分屏)
分屏配置:views 数量或 cols*rows 决定分屏数
ArrayCamera
聚焦模型
模型
距离系数,越大越远,默认 2
创建透视相机
容器
相机参数
Optionalaspect: number可选宽高比,不传则用容器宽高比
检查是否有动画正在运行
查询指定小窗是否正在动画
窗口尺寸变化时更新分屏 viewport / 分隔线
窗口尺寸变化时重排所有小窗位置和 DOM 尺寸
相机观察某物体
模型名称
动画时长
OptionalscaleRadius: number = 1以半径为单位,让相机距离多远观察
移除指定画中画小窗
小窗名称
渲染 ArrayCamera 分屏(由 ThingOrigin.update 调用,替换主相机渲染)
渲染器
是否实际渲染
渲染所有画中画小窗(由 ThingOrigin.update 在主渲染后调用) 内部使用 scissor + viewport,逐个区域 clear + render,互不污染
渲染器
设置渲染相机
相机类型
相机路径动画 支持贝塞尔曲线和分段线性两种插值方式
动画配置
OptionalonProgress: (progress: number) => void进度回调函数
OptionalonComplete: () => void完成回调函数
// 场景1:展示视频 - 需要流畅的曲线路径,但匀速播放
{
interpolationType: "bezier", // 路径要平滑
easingType: "linear" // 但速度要匀速(像视频播放)
}
// 场景2:漫游动画 - 精确经过每个景点,但有自然的加速减速
{
interpolationType: "linear", // 必须精确经过每个点
easingType: "cubic" // 但速度要有变化(更自然)
}
// 场景3:电影镜头 - 既要有流畅路径,又要有速度变化
{
interpolationType: "bezier", // 路径平滑
easingType: "cubic" // 速度有变化(电影感)
}
停止所有小窗动画
停止当前相机动画
停止指定小窗的动画
同步分屏子相机 followMain:复制主相机旋转 + 本地偏移位置(不用 lookAt,避免与 OrbitControls 抖动) 固定视角:还原开启时的位置/旋转快照
同步 followMain 小窗到主相机 把小窗 lookAt 更新为 OrbitControls.target(主相机当前关注的目标点), 小窗自身位置不变,仅朝向跟着主相机走,由 ThingOrigin.update 每帧调用
平滑移动相机到指定位置 主相机:不传 pipName,每帧同步 OrbitControls.target 小窗相机:传 pipName 指定小窗名称,每帧同步该 view.lookAt
切换主相机视角到指定小窗 用小窗相机自身的 position 和 lookAt 覆盖主相机,同步 OrbitControls target 并立即 update
小窗名称
更新指定分屏视图(位置/朝向/跟随等)
分屏名称
更新配置
更新小窗相机位置 / 朝向 / 布局
更新分屏 OrbitControls(含拖拽中与阻尼衰减)
相机