# Class: Camera

相机组件，一般被代理到[XRCamera](XRCamera)元素。

## Hierarchy

- [`Component`](Component)

  ↳ **`Camera`**

## Table of contents

### Constructors

- constructor

### Events

- onAdd
- onRelease
- onRemove
- onTick
- onUpdate

### Properties

- priority
- schema
- EVENTS

### Accessors

- allowFeatures
- background
- bgStates
- bgStatesClear
- cullMask
- depth
- el
- far
- features
- hdr
- near
- postProcess
- scene
- target
- version

### Methods

- changeProjectMatrix
- changeViewMatrix
- clearBackgroundRenderStates
- convertClipPositionToWorld
- convertWorldPositionToClip
- getData
- setBackgroundRenderStates
- setData
- setDataOne

## Constructors

### constructor

• **new Camera**()

#### Inherited from

[Component](Component).[constructor](Component#constructor)

## Events

### onAdd

▸ **onAdd**(`parent`, `data`): `void`

所挂载的`element`被挂载到场景时触发的回调。

#### Parameters

| Name | Type |
| :------ | :------ |
| `parent` | [`Element`](Element) |
| `data` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Returns

`void`

#### Inherited from

[Component](Component).[onAdd](Component#onAdd)

___

### onRelease

▸ **onRelease**(`data`): `void`

从被挂载的`element`上被移除，或是`element`被销毁时，触发的回调。
一般用于释放持有的资源。

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Returns

`void`

#### Inherited from

[Component](Component).[onRelease](Component#onRelease)

___

### onRemove

▸ **onRemove**(`parent`, `data`): `void`

所挂载的`element`从父节点`parent`被移除时，或者自己从`element`上被移除时，触发的回调。
一般用于消除功能的运作。
**如果一个组件的元素直接被销毁了，那这个组件就不会经历onRemove而是直接进入onRelease。**

#### Parameters

| Name | Type |
| :------ | :------ |
| `parent` | [`Element`](Element) |
| `data` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Returns

`void`

#### Inherited from

[Component](Component).[onRemove](Component#onRemove)

___

### onTick

▸ **onTick**(`deltaTime`, `data`): `void`

渲染每帧触发的回调。

#### Parameters

| Name | Type |
| :------ | :------ |
| `deltaTime` | `number` |
| `data` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Returns

`void`

#### Inherited from

[Component](Component).[onTick](Component#onTick)

___

### onUpdate

▸ **onUpdate**(`data`, `preData`): `void`

数据更新时触发的回调。

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |
| `preData` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Returns

`void`

#### Inherited from

[Component](Component).[onUpdate](Component#onUpdate)

## Properties

### priority

• `Readonly` **priority**: `number` = `200`

自定义组件的更新优先级。

#### Overrides

[Component](Component).[priority](Component#priority)

___

### schema

• `Readonly` **schema**: [`IComponentSchema`](/miniprogram/dev/reference/xr-frame/api/interfaces/IComponentSchema)

详见[CameraSchema](../modules#CameraSchema)。

#### Overrides

[Component](Component).[schema](Component#schema)

___

### EVENTS

▪ `Static` **EVENTS**: `string`[] = `[]`

#### Inherited from

[Component](Component).[EVENTS](Component#EVENTS)

## Accessors

### allowFeatures

• `get` **allowFeatures**(): `string`[]

#### Returns

`string`[]

___

### background

• `get` **background**(): [`TCameraBackground`](../modules#TCameraBackground)

#### Returns

[`TCameraBackground`](../modules#TCameraBackground)

___

### bgStates

• `get` **bgStates**(): `Object`

**`internal。`**

#### Returns

`Object`

___

### bgStatesClear

• `get` **bgStatesClear**(): `boolean`

**`internal。`**

#### Returns

`boolean`

___

### cullMask

• `get` **cullMask**(): `number`

#### Returns

`number`

___

### depth

• `get` **depth**(): `number`

相机深度。

#### Returns

`number`

___

### el

• `get` **el**(): [`Element`](Element)

挂载的元素。

#### Returns

[`Element`](Element)

___

### far

• `get` **far**(): `number`

#### Returns

`number`

___

### features

• `get` **features**(): `Object`

当前渲染特性集合。

#### Returns

`Object`

___

### hdr

• `get` **hdr**(): `boolean`

#### Returns

`boolean`

___

### near

• `get` **near**(): `number`

#### Returns

`number`

___

### postProcess

• `get` **postProcess**(): [`PostProcess`](PostProcess)[]

#### Returns

[`PostProcess`](PostProcess)[]

___

### scene

• `get` **scene**(): [`Scene`](Scene)

当前场景。

#### Returns

[`Scene`](Scene)

___

### target

• `get` **target**(): [`Transform`](Transform)

#### Returns

[`Transform`](Transform)

___

### version

• `get` **version**(): `number`

当前版本，每次有数据更新都会增加，可以用作和其他组件合作的依据。

#### Returns

`number`

## Methods

### changeProjectMatrix

▸ **changeProjectMatrix**(`manual`, `mat4?`): `void`

修改projectMatrix的设置类型。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `manual` | `boolean` | 是否要设置为手动模式。 |
| `mat4?` | `Float32Array` \| [`Matrix4`](Matrix4) | 手动模式下，要设置的值。 |

#### Returns

`void`

___

### changeViewMatrix

▸ **changeViewMatrix**(`manual`, `mat4?`): `void`

修改viewMatrix的设置类型。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `manual` | `boolean` | 是否要设置为手动模式。 |
| `mat4?` | `Float32Array` \| [`Matrix4`](Matrix4) | 手动模式下，要设置的值。 |

#### Returns

`void`

___

### clearBackgroundRenderStates

▸ **clearBackgroundRenderStates**(): `void`

清空相机背景渲染状态。

#### Returns

`void`

___

### convertClipPositionToWorld

▸ **convertClipPositionToWorld**(`clipPos`, `dst?`): [`Vector3`](Vector3)

将齐次裁剪空间转换到世界坐标系位置。

#### Parameters

| Name | Type |
| :------ | :------ |
| `clipPos` | [`Vector3`](Vector3) |
| `dst?` | [`Vector3`](Vector3) |

#### Returns

[`Vector3`](Vector3)

___

### convertWorldPositionToClip

▸ **convertWorldPositionToClip**(`worldPos`, `dst?`): [`Vector3`](Vector3)

将世界坐标系位置转换到齐次裁剪空间。

#### Parameters

| Name | Type |
| :------ | :------ |
| `worldPos` | [`Vector3`](Vector3) |
| `dst?` | [`Vector3`](Vector3) |

#### Returns

[`Vector3`](Vector3)

___

### getData

▸ **getData**(`key`): [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData)[`T`]

获取一个当前值。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends keyof [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `T` |

#### Returns

[`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData)[`T`]

#### Inherited from

[Component](Component).[getData](Component#getData)

___

### setBackgroundRenderStates

▸ **setBackgroundRenderStates**(`states`): `void`

修改相机背景的渲染状态。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `states` | `Object` | 同[Material.setRenderStates](Material#setRenderStates) |

#### Returns

`void`

___

### setData

▸ **setData**(`data`): `void`

不通过`xml`而是直接设置`data`，注意值的类型需要和`schema`中一致。

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Partial` |

#### Returns

`void`

#### Inherited from

[Component](Component).[setData](Component#setData)

___

### setDataOne

▸ **setDataOne**(`key`, `value`): `void`

设置一个数据。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends keyof [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `T` |
| `value` | [`ICameraData`](/miniprogram/dev/reference/xr-frame/api/interfaces/ICameraData)[`T`] |

#### Returns

`void`

#### Inherited from

[Component](Component).[setDataOne](Component#setDataOne)
