Skip to content

控制器(废弃)

soonspacejs 的控制器是完全通过 属性配置 来约定如何工作的,因此用户可以灵活修改配置来自定义控制器特性。

修改配置的方式共有两种

提示

v2.5.0 之后控制器新增了 type 属性用于切换不同类型的控制器

setControlsOptions

设置控制器配置

样例:

定义:

ts
type FreeControlsType = 'free';

type OrbitControlsType = 'orbit';

interface FreeControlsOptions {
  type: FreeControlsType;

  enabled?: boolean;
  enabledMousePointInteractive?: boolean;

  fallbackInteractivePosition?: Vector3 | null;

  enableZoom?: boolean;
  zoomSpeed?: number;
  zoomMinDistance?: number;
  zoomMaxDistance?: number;
  zoomMinStepDistance?: number;
  zoomMaxStepDistance?: number;

  enableRotate?: boolean;
  enableRotateX?: boolean;
  enableRotateY?: boolean;
  rotateSpeed?: number;
  rotateTiltRange?: {
    max: number;
    min: number;
  };

  enableAutoRotate?: boolean;
  autoRotateSpeed?: number;
  autoRotateClockwise?: boolean;

  enableOutOfScene?: boolean;
  unOffsetOfScene?: number;

  enablePan?: boolean;
  enablePanX?: boolean;
  enablePanY?: boolean;
  enablePanAxisX?: boolean;
  enablePanAxisY?: boolean;
  enablePanAxisZ?: boolean;
  panSpeed?: number;
}

interface OrbitControlsOptions {
  type: OrbitControlsType;

  enableAutoRotate?: boolean;
  autoRotateSpeed?: number;

  dampingFactor?: number;

  enabled?: boolean;
  enableDamping?: boolean;
  enablePan?: boolean;
  enableRotate?: boolean;
  enableZoom?: boolean;

  maxAzimuthAngle?: number;
  maxDistance?: number;
  maxPolarAngle?: number;
  maxZoom?: number;

  minAzimuthAngle?: number;
  minDistance?: number;
  minPolarAngle?: number;
  minZoom?: number;

  panSpeed?: number;
  rotateSpeed?: number;

  screenSpacePanning?: boolean;

  target?: Vector3;

  zoomSpeed?: number;
}

type ControlsOptions = FreeControlsOptions | OrbitControlsOptions;

function setControlsOptions(options: ControlsOptions): void;

用法:

js
ssp.setControlsOptions({
  type: 'orbit',
  enableDamping: true,
});

参数:

options

ControlsOptions
属性描述类型必填默认值
type控制器类型free | orbitfree
FreeControlsOptions
属性描述类型必填默认值
enabled启用控制器booleantrue
enabledMousePointInteractive开启鼠标对象相交检测booleantrue
fallbackInteractivePosition开启鼠标对象相交检测时,没有相交对象的备用点Vector3{x:0,y:0,z:0}
enableZoom开启缩放booleantrue
zoomSpeed缩放速度number1
zoomMinDistance缩放最小距离number50
zoomMaxDistance缩放最大距离number100000
zoomMinStepDistance单步缩放最小距离number5
zoomMaxStepDistance单步缩放最大距离number20000
enableRotate开启旋转booleantrue
enableRotateX开启屏幕水平旋转booleantrue
enableRotateY开启屏幕垂直旋转booleantrue
rotateSpeed旋转速度number1
rotateTiltRange旋转倾斜范围object{ "max": 3.141592653589793, "min": 0 }
enablePan开启移动booleantrue
enablePanX开启屏幕水平移动booleantrue
enablePanY开启屏幕垂直移动booleantrue
enablePanAxisX开启空间 X 轴 移动booleantrue
enablePanAxisY开启空间 Y 轴 移动booleantrue
enablePanAxisZ开启空间 Z 轴 移动booleantrue
enableAutoRotate开启自动旋转booleanfalse
panSpeed移动速度number2
autoRotateSpeed自动旋转速度number1
autoRotateClockwise自动旋转顺时针booleantrue
OrbitControlsOptions
属性描述类型必填默认值
enabled启用控制器booleantrue
enableAutoRotate开启自动旋转booleanfalse
autoRotateSpeed自动旋转速度number1
dampingFactor阻尼系数number0.05
enableDamping启用阻尼效果booleanfalse
enablePan开启移动booleantrue
enableRotate开启旋转booleantrue
enableZoom开启缩放booleantrue
maxAzimuthAngle最大水平角度numberInfinity
minAzimuthAngle最小水平角度number-Infinity
maxDistance最远滚动距离numberInfinity
minDistance最小滚动距离number0
maxPolarAngle最大垂直角度numberMath.PI
minPolarAngle最小垂直角度number0
maxZoom最大缩放距离(适用于正交相机)numberInfinity
minZoom最小缩放距离(适用于正交相机)number0
panSpeed移动速度number1
rotateSpeed旋转速度number1
zoomSpeed缩放速度number1
screenSpacePanning上下拖动时,相机垂直还是相对于 y 轴正交移动booleantrue
target控制器内部维护的相机的朝向点,也可以手动设置。Vector3{x:0,y:0,z:0}

注意

在使用 orbit 控制器时,相机的 rotation 无法直接修改。

请通过设置 target 来控制相机的 rotation

浙ICP备16043491号