---
title: "vuer.schemas.scene_components"
section: "Python API"
order: 12
description: "Python API reference for vuer.schemas.scene_components"
---

# vuer.schemas.scene_components

## SceneElement

```python
class SceneElement(BlockElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L9)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `tag` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

## Frustum

```python
class Frustum(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L13)

Camera Frustum

:param position: An optional tuple of three numbers representing the position.
:type position: tuple[float, float, float]
:param rotation: An optional tuple of three numbers representing the rotation.
:type rotation: tuple[float, float, float]
:param matrix: An optional tuple of sixteen numbers representing the matrix.
:type matrix: tuple[float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float]
:param aspect: An optional number representing the aspect.
:type aspect: float
:param focus: An optional number representing the focus.
:type focus: float
:param fov: An optional number representing the field of view.
:type fov: float
:param near: An optional number representing the near field.
:type near: float
:param far: An optional number representing the far field.
:type far: float
:param scale: An optional number representing the scale.
:type scale: float
:param upScale: An optional number representing the up scale.
:type upScale: float
:param focalLength: An optional number representing the focal length.
:type focalLength: float
:param showUp: An optional boolean indicating whether to show up.
:type showUp: bool
:param showFrustum: An optional boolean indicating whether to show the frustum.
:type showFrustum: bool
:param showFocalPlane: An optional boolean indicating whether to show the focal plane.
:type showFocalPlane: bool
:param showImagePlane: An optional boolean indicating whether to show the image plane.
:type showImagePlane: bool
:param src: An optional string representing the source.
:type src: str
:param colorOrigin: An optional ColorRepresentation for the origin color.
:type colorOrigin: ColorRepresentation
:param colorFrustum: An optional ColorRepresentation for the frustum color.
:type colorFrustum: ColorRepresentation
:param colorCone: An optional ColorRepresentation for the cone color.
:type colorCone: ColorRepresentation
:param colorFocalPlane: An optional ColorRepresentation for the focal plane color.
:type colorFocalPlane: ColorRepresentation
:param colorUp: An optional ColorRepresentation for the up color.
:type colorUp: ColorRepresentation
:param colorTarget: An optional ColorRepresentation for the target color.
:type colorTarget: ColorRepresentation
:param colorCross: An optional ColorRepresentation for the cross color.
:type colorCross: ColorRepresentation

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Frustum'
```

## CameraHelper

```python
class CameraHelper(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L67)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'CameraHelper'
```

## group

```python
class group(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L71)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'group'
```

```python
children = []
```

## mesh

```python
class mesh(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L76)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'mesh'
```

```python
children = []
```

## TriMesh

```python
class TriMesh(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L81)

```python
vertices: NDArray[np.float16] = None
```

```python
faces: NDArray[np.uint32] = None
```

```python
colors: NDArray[np.uint8] = None
```

```python
uv: NDArray[np.float16] = None
```

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'TriMesh'
```

```python
children = []
```

## PointCloud

```python
class PointCloud(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L112)

PointCould element, highly optimized for payload size and speed.

:param vertices: An optional numpy array of shape (N, 3) containing the vertices of the pointcloud.
:type  vertices: NDArray[np.float16]
:param colors: An optional numpy array of shape (N, 3) containing the colors of the point cloud.
:type  color: NDArray[np.uint8]
:param size: An optional float that sets the size of the points.
:type  size: float
:param key: str An optional string that sets the key of the element.
:type  key: str

Usage::

    sess.upsert @ PointCloud(
        vertices=np.random.rand(1000, 3),
        colors=np.random.rand(1000, 3),
        size=0.01,
        key="pointcloud",
    )

```python
tag: str = 'PointCloud'
```

```python
vertices: NDArray[np.float16] = None
```

```python
colors: NDArray[np.uint8] = None
```

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
children = []
```

## Box

```python
class Box(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L162)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Box'
```

## Capsule

```python
class Capsule(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L166)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Capsule'
```

## Cone

```python
class Cone(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L170)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Cone'
```

## Circle

```python
class Circle(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L174)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Circle'
```

## Cylinder

```python
class Cylinder(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L178)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Cylinder'
```

## Dodecahedron

```python
class Dodecahedron(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L182)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Dodecahedron'
```

## Edges

```python
class Edges(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L186)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Edges'
```

## Extrude

```python
class Extrude(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L190)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Extrude'
```

## Icosahedron

```python
class Icosahedron(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L194)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Icosahedron'
```

## Lathe

```python
class Lathe(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L198)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Lathe'
```

## Octahedron

```python
class Octahedron(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L202)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Octahedron'
```

## Plane

```python
class Plane(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L206)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Plane'
```

## Polyhedron

```python
class Polyhedron(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L210)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Polyhedron'
```

## Ring

```python
class Ring(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L214)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Ring'
```

## Shape

```python
class Shape(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L218)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Shape'
```

## Sphere

```python
class Sphere(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L222)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Sphere'
```

## Tetrahedron

```python
class Tetrahedron(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L226)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Tetrahedron'
```

## Torus

```python
class Torus(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L230)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Torus'
```

## TorusKnot

```python
class TorusKnot(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L234)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'TorusKnot'
```

## Tube

```python
class Tube(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L238)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Tube'
```

## Fog

```python
class Fog(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L242)

Fog is a scene element that adds fog to the scene. This
can be used to approximate depth.

Args:
    color: The color of the fog.
    near: The distance to the near plane.
    far: The distance to the far plane.

Example Usage:

    Fog(color="green", near=3, far=7)

## Fog.__init__

```python
def __init__(self, *, children=None, color=None, near=None, far=None, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L259)

### Inherited members

- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'fog'
```

## Wireframe

```python
class Wireframe(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L264)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Wireframe'
```

## Splat

```python
class Splat(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L268)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Splat'
```

## LumaSplats

```python
class LumaSplats(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L272)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Splats'
```

## Pcd

```python
class Pcd(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L276)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Pcd'
```

## CameraView

```python
class CameraView(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L280)

CameraView for rendering from arbitrary camera poses.

:param fov: The vertical field of view of the camera. Defaults to 50.
:type fov: float, optional
:param width: The width of the camera image. Defaults to 320.
:type width: int, optional
:param height: The height of the camera image. Defaults to 240.
:type height: int, optional
:param key: The key of the camera view. Defaults to "ego".
:type key: str, optional
:param position: The position of the camera. Defaults to [0, 0, 0].
:type position: List[float], optional
:param rotation: The rotation of the camera. Defaults to [0, 0, 0]
:type rotation: List[float], optional
:param stream: The stream of the camera. Defaults to "ondemand".
:type stream: str, optional
:param fps: The frames per second of the camera. Defaults to 30.
:type fps: int, optional
:param near: The near field of the camera. Defaults to 0.1.
:type near: float, optional
:param far: The far field of the camera. Defaults to 20.
:type far: float, optional
:param renderDepth: Whether to render depth. If set, returns value["depthFrame"]. Defaults to True.
:type renderDepth: bool, optional
:param showFrustum: Whether to show the frustum. Defaults to True.
:type showFrustum: bool, optional
:param downsample: The downsample rate. Defaults to 1.
:type downsample: int, optional
:param distanceToCamera: The distance to the camera. Defaults to 2.
:type distanceToCamera: float, optional

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'CameraView'
```

## SceneBackground

```python
class SceneBackground(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L316)

Sets the background of the scene to a static image. Does not work well
with high frame rates. For displaying movies, use the ImageBackground element.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'SceneBackground'
```

## ImageBackground

```python
class ImageBackground(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L324)

Sets the background of the scene to an image, Supports high frame rates.

We use a plane that is always facing the camera to display the image.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'ImageBackground'
```

## HUDPlane

```python
class HUDPlane(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L333)

A Head-up display (HUD) plane that is always facing the camera. Requires
mounting a material.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'HUDPlane'
```

## VideoMaterial

```python
class VideoMaterial(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L340)

A Video Material for loading from a file hosted at a url.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'VideoMaterial'
```

## WebRTCVideoMaterial

```python
class WebRTCVideoMaterial(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L346)

A Video Material for loading from a media stream.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'WebRTCVideoMaterial'
```

## VideoPlane

```python
class VideoPlane(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L352)

A Head-up display (HUD) plane that is always facing the camera. Requires
mounting a material.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'VideoPlane'
```

## WebRTCVideoPlane

```python
class WebRTCVideoPlane(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L359)

A Head-up display (HUD) plane that is always facing the camera. Requires
mounting a material.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'WebRTCVideoPlane'
```

## StereoVideoPlane

```python
class StereoVideoPlane(Image, SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L366)

A Head-up display (HUD) plane that is always facing the camera. Requires
mounting a material.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.Image`](/python-api/schemas/html_components#image)
- `serialize` — from [`vuer.schemas.html_components.Element`](/python-api/schemas/html_components#element)

```python
tag = 'StereoVideoPlane'
```

## WebRTCStereoVideoPlane

```python
class WebRTCStereoVideoPlane(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L373)

A Head-up display (HUD) plane that is always facing the camera. Requires
mounting a material.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'WebRTCStereoVideoPlane'
```

## Group

```python
class Group(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L389)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'VuerGroup'
```

## HemisphereLight

```python
class HemisphereLight(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L393)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'HemisphereLight'
```

## RectAreaLight

```python
class RectAreaLight(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L397)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'RectAreaLight'
```

## Stage

```python
class Stage(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L401)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Stage'
```

## Gamepads

```python
class Gamepads(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L405)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Gamepads'
```

## DirectionalLight

```python
class DirectionalLight(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L409)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'DirectionalLight'
```

## PointLight

```python
class PointLight(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L413)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'PointLight'
```

## SpotLight

```python
class SpotLight(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L417)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'SpotLight'
```

## AmbientLight

```python
class AmbientLight(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L421)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'AmbientLight'
```

## Html

```python
class Html(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L425)

Usage::

    as='div' // Wrapping element (default: 'div')
    wrapperClass // The className of the wrapping element (default: undefined)
    prepend // Project content behind the canvas (default: false)
    center // Adds a -50%/-50% css transform (default: false) [ignored in transform mode]
    fullscreen // Aligns to the upper-left corner, fills the screen (default:false) [ignored in transform mode]
    distanceFactor=&#123;10&#125; // If set (default: undefined), children will be scaled by this factor, and also by distance to a PerspectiveCamera / zoom by a OrthographicCamera.
    zIndexRange=&#123;[100, 0]&#125; // Z-order range (default=[16777271, 0])
    portal=&#123;domnodeRef&#125; // Reference to target container (default=undefined)
    transform // If true, applies matrix3d transformations (default=false)
    sprite // Renders as sprite, but only in transform mode (default=false)
    calculatePosition=&#123;(el: Object3D, camera: Camera, size: &#123; width: number; height: number &#125;) =&gt; number[]&#125; // Override default positioning function. (default=undefined) [ignored in transform mode]
    occlude=&#123;[ref]&#125; // Can be true or a Ref&lt;Object3D&gt;[], true occludes the entire scene (default: undefined)
    onOcclude=&#123;(visible) =&gt; null&#125; // Callback when the visibility changes (default: undefined)
    &#123;...groupProps&#125; // All THREE.Group props are valid
    &#123;...divProps&#125; // All HTMLDivElement props are valid

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Html'
```

## Pivot

```python
class Pivot(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L450)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Pivot'
```

## Movable

```python
class Movable(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L454)

A universal component that can be grabbed and moved using pointers, hands, controllers.

:param offset: Optional [x, y, z] offset from the position. Defaults to [0, 0, 0].
:param position: Optional [x, y, z] position. Defaults to [0, 1, -1].
:param quaternion: Optional [x, y, z, w] quaternion rotation.
:param rotation: Optional [x, y, z] euler rotation.
:param scale: Optional float or [x, y, z] scale factor. Defaults to 0.1.
:param handle: Optional float or [x, y, z] handle size. Overrides scale for the handle geometry.
:param showFrame: Optional boolean to show coordinate frame. Defaults to True.
:param wireframe: Optional boolean for wireframe rendering. Defaults to False.
:param localRotation: Optional boolean to use local rotation. Defaults to False.

The component can be grabbed using:
- Hand pinch gestures (left/right hand)
- Controller trigger buttons (left/right controller)

When grabbed, the component follows the hand/controller movement and rotation.
A coordinate frame can be displayed to visualize the current transformation.

The component supports both AR and VR modes through the WebXR versions of these components.

```python
localRotation: bool = False
```

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Movable'
```

## Hands

```python
class Hands(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L481)

.. admonition:: tip Setting stream to True

    Important: You need to set the `stream` option to `True` to
    start streaming the hand movement.


The Hand component offers a way to stream the current pose of the hand to the server.
You can get the full pose of the hands by listening to the `HAND_MOVE` event.
You can add flags `left` and `right` to specify which hand you want to track.
The returned data looks like the following:

.. code-block:: typescript

    /**
     * Left and right pose are relative to the wrist transformations.
     */
    export type HandsData = &#123;
      left?: Float32Array;       // 25 * 16 values.
      right?: Float32Array;      // 25 * 16 values.
      leftState: HandState;
      rightState: HandState;
    &#125;;

    export type HandState = &#123;
      pinch: boolean;
      squeeze: boolean;
      tap: boolean;

      pinchValue: number;
      squeezeValue: number;
      tapValue: number;
    &#125;

**Matrix format**

All 4x4 transform matrices used in WebGL are stored in 16-element `Float32Arrays`.
The values are stored in the array in column-major order; that is, each column is
written into the array top-down before moving to the next column to the right and
writing it into the array. Therefore, for the array [a0, a1, a2, …, a13, a14, a15],
the matrix looks like this:

.. code-block::
                                  ⌈  a0 a4 a8 a12  ⌉
                                  |  a1 a5 a9 a13  |
                                  |  a2 a6 a10 a14 |
                                  ⌊  a3 a7 a11 a15 ⌋


For details, refer to the MDN documentation on [XR Rigid Body Transformation](https://developer.mozilla.org/en-US/docs/Web/API/XRRigidTransform/matrix)

**Hand Landmarks**

We follow the [XR Hand](https://developer.mozilla.org/en-US/docs/Web/API/XRHand)
conventions, and return the landmarks in a single array of `25 * 16` values in
the following order:

.. list-table::
   :widths: 40 10 40 10
   :header-rows: 1

   * - Hand joint
     - Index
     - Hand joint (continue)
     - Index
   * - wrist
     - 0
     - middle-finger-phalanx-distal
     - 13
   * - thumb-metacarpal
     - 1
     - middle-finger-tip
     - 14
   * - thumb-phalanx-proximal
     - 2
     - ring-finger-metacarpal
     - 15
   * - thumb-phalanx-distal
     - 3
     - ring-finger-phalanx-proximal
     - 16
   * - thumb-tip
     - 4
     - ring-finger-phalanx-intermediate
     - 17
   * - index-finger-metacarpal
     - 5
     - ring-finger-phalanx-distal
     - 18
   * - index-finger-phalanx-proximal
     - 6
     - ring-finger-tip
     - 19
   * - index-finger-phalanx-intermediate
     - 7
     - pinky-finger-metacarpal
     - 20
   * - index-finger-phalanx-distal
     - 8
     - pinky-finger-phalanx-proximal
     - 21
   * - index-finger-tip
     - 9
     - pinky-finger-phalanx-intermediate
     - 22
   * - middle-finger-metacarpal
     - 10
     - pinky-finger-phalanx-distal
     - 23
   * - middle-finger-phalanx-proximal
     - 11
     - pinky-finger-tip
     - 24
   * - middle-finger-phalanx-intermediate
     - 12
     - -
     - -

Usage Example:

.. code-block:: python

    from vuer import Vuer, VuerSession
    from vuer.schemas import Hands
    from asyncio import sleep

    app = Vuer()


    @app.add_handler("HAND_MOVE")
    async def handler(event, session):
        print(f"Movement Event: key-&#123;event.key&#125;", event.value)


    @app.spawn(start=True)
    async def main(session: VuerSession):
        # Important: You need to set the `stream` option to `True` to start
        # streaming the hand movement.
        session.upsert @ Hands(stream=True, key="hands")

        while True:
            await sleep(1)

## Hands.__init__

```python
def __init__(self, key='hands', stream=True, disableLeft=False, disableRight=False, hideLeft=False, hideRight=False, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L630)

### Inherited members

- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Hands'
```

## MotionControllers

```python
class MotionControllers(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L653)

MotionController for tracking XR controller poses and button states.

:param key: Unique identifier for the controller.
:type key: str, optional
:param eventTypes: A tuple or list of events to track (e.g., "trigger", "squeeze").
:type eventTypes: tuple or list, optional
:param stream: Whether to enable streaming of controller data.
:type stream: bool, optional
:param left: Boolean indicating if the left controller should be tracked.
:type left: bool, optional
:param right: Boolean indicating if the right controller should be tracked.
:type right: bool, optional
:param showLeft: Boolean indicating if the left controller visualization should be shown.
:type showLeft: bool, optional
:param showRight: Boolean indicating if the right controller visualization should be shown.
:type showRight: bool, optional

## MotionControllers.__init__

```python
def __init__(self, key='motionControllers', eventTypes=('trigger', 'squeeze'), stream=True, left=None, right=None, showLeft=True, showRight=True, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L675)

### Inherited members

- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'MotionControllers'
```

## Obj

```python
class Obj(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L698)

## Obj.__init__

```python
def __init__(self, src=None, mtl=None, text=None, buff=None, materials=None, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L701)

:param src: The source of the obj file. Can be a url or a local file.
:type  src: str
:param mtl: The source of the mtl file. Can be a url or a local file.
:type  mtl: str
:param text: The text content of the obj file, allow one to load a scene from a string.
:type  text: str
:param buff: The binary content of the obj file. This is the most efficient, because you are sending binaries..
:type  buff: bytes
:param materials: A list of materials to be used for the obj file.
:type  materials: List[String]

todo: In the future we probably want to enable the loading of multiple material files.

### Inherited members

- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Obj'
```

## CoordsMarker

```python
class CoordsMarker(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L725)

Coordinates Marker Component.

Args:
    position: A list of 3 numbers representing the position.
    rotation: A list of 3 numbers representing the rotation.
    matrix: A list of 16 numbers representing the matrix. Overrides position and rotation.
    scale: 1.0
    headScale: 1.0
    lod: Level of detail. The number of segments for the cone and the stem.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'CoordsMarker'
```

## Arrow

```python
class Arrow(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L740)

Coordinates Marker Component.

Args:
    matrix: A list of 16 numbers representing the matrix. Overrides position and rotation.
    position: A list of 3 numbers representing the position.
    rotation: A list of 3 numbers representing the rotation.
    scale: 1.0
    headScale: 1.0
    lod: Level of detail. The number of segments for the cone and the stem.

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Arrow'
```

## Ply

```python
class Ply(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L755)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Ply'
```

## Glb

```python
class Glb(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L759)

Glb Component

# this follows the material type

:param materialType: Literal["basic", ...]
:param material: &#123;
  side=0: inside, side=1: outsie, side=2: both.
&#125;

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Glb'
```

## Urdf

```python
class Urdf(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L773)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Urdf'
```

## Gripper

```python
class Gripper(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L777)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Gripper'
```

## SkeletalGripper

```python
class SkeletalGripper(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L781)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'SkeletalGripper'
```

## Grid

```python
class Grid(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L785)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Grid'
```

## GrabRender

```python
class GrabRender(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L789)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'GrabRender'
```

```python
key = 'DEFAULT'
```

## TimelineControls

```python
class TimelineControls(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L796)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'TimelineControls'
```

## PointerControls

```python
class PointerControls(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L801)

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'PointerControls'
```

## AccumulativeShadows

```python
class AccumulativeShadows(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L806)

A planar, Y-up oriented shadow-catcher that accumulates soft shadows with zero performance impact after accumulation.

The shadow-catcher can operate in temporal mode (accumulating over time) or instantaneous mode. It must be paired with
light sources and scene objects that cast shadows as children. Works best with RandomizedLight components for realistic
raycast-like shadows and ambient occlusion.

:param frames: Number of frames to render. More frames yield cleaner results but take longer. Defaults to 40.
:type frames: int
:param blend: Controls the refresh ratio when frames=Infinity. Defaults to 100.
:type blend: int
:param limit: Limits rendered frames when frames=Infinity to regain performance once scene settles. Defaults to Infinity.
:type limit: int
:param scale: Scale of the shadow plane. No default.
:type scale: float
:param temporal: Whether to accumulate shadows over time (more performant but has visual regression). Defaults to False.
:type temporal: bool
:param opacity: Opacity of the shadow plane. Defaults to 1.
:type opacity: float
:param alphaTest: Threshold for discarding alpha pixels. Defaults to 0.65.
:type alphaTest: float
:param color: Shadow color. Defaults to black.
:type color: str
:param colorBlend: How much colors turn to black (0 is black). Defaults to 2.
:type colorBlend: float
:param resolution: Buffer resolution. Defaults to 1024.
:type resolution: int

Example Usage::

    AccumulativeShadows(
        temporal=True,
        frames=100,
        scale=10,
        children=[
            RandomizedLight(amount=8, position=[5, 5, -10])
        ]
    )

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'AccumulativeShadows'
```

## Trail

```python
class Trail(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L849)

A declarative, three.MeshLine based Trails implementation. You can attach it to any mesh and it will give it a beautiful trail.

:param width: Width of the line. Defaults to 0.2.
:type width: float
:param color: Color of the line. Defaults to 'hotpink'.
:type color: str
:param length: Length of the line. Defaults to 1.
:type length: float
:param decay: How fast the line fades away. Defaults to 1.
:type decay: float
:param local: Whether to use the target's world or local positions. Defaults to False.
:type local: bool
:param stride: Min distance between previous and current point. Defaults to 0.
:type stride: float
:param interval: Number of frames to wait before next calculation. Defaults to 1.
:type interval: int
:param target: Optional target. This object will produce the trail.
:type target: Any
:param attenuation: A function to define the width in each point along it.
:type attenuation: callable

Note: If `target` is not defined, Trail will use the first `Object3D` child as the target.
You can optionally define a custom meshLineMaterial to use.

Example Usage::

    Trail(
        width=0.2,
        color='hotpink',
        length=1,
        decay=1,
        local=False,
        stride=0,
        interval=1
    )

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Trail'
```

## Center

```python
class Center(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L890)

Centers its children by calculating their boundary box.

The Center component automatically centers child elements by calculating their bounding box.
It allows fine control over which axes to center along.

:param top: Align to top edge instead of center on Y axis
:type top: bool
:param right: Align to right edge instead of center on X axis
:type right: bool
:param bottom: Align to bottom edge instead of center on Y axis
:type bottom: bool
:param left: Align to left edge instead of center on X axis
:type left: bool
:param front: Align to front edge instead of center on Z axis
:type front: bool
:param back: Align to back edge instead of center on Z axis
:type back: bool
:param disable: Disable centering on all axes
:type disable: bool
:param disableX: Disable centering on X axis
:type disableX: bool
:param disableY: Disable centering on Y axis
:type disableY: bool
:param disableZ: Disable centering on Z axis
:type disableZ: bool
:param precise: Use precise boundary box calculation (default: True)
:type precise: bool

Example Usage::

    Center(
        top=True,
        left=True,
        children=[mesh]
    )

### Inherited members

- `__init__` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)
- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Center'
```

## Text3D

```python
class Text3D(SceneElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L931)

Renders 3D text using ThreeJS's TextGeometry.

Text3D will suspend while loading the font data. It requires fonts in JSON format
generated through typeface.json, either as a path to a JSON file or a JSON object.
If you face display issues try checking "Reverse font direction" in the typeface tool.

:param font: Font URL or JSON object with font data
:type font: str
:param smooth: Merges vertices with a tolerance and calls computeVertexNormals
:type smooth: float
:param lineHeight: Line height in threejs units (default: 0)
:type lineHeight: float
:param letterSpacing: Letter spacing factor (default: 1)
:type letterSpacing: float

You can align the text using the Center component:

.. code-block:: python

    Center(
        Text3D(
            "Hello world!",
            font="fonts/helvetiker.json",
            smooth=1,
            lineHeight=0.5,
            letterSpacing=-0.025
        )
    )

## Text3D.__init__

```python
def __init__(self, *text, font=None, smooth=None, lineHeight=0, letterSpacing=1, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L964)

### Inherited members

- `serialize` — from [`vuer.schemas.html_components.BlockElement`](/python-api/schemas/html_components#blockelement)

```python
tag = 'Text3D'
```

## Scene

```python
class Scene(BlockElement)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L968)

## Scene.__init__

```python
def __init__(self, *children, rawChildren=None, htmlChildren=None, bgChildren: List[Element]=None, up=[0, 1, 0], background=None, grid=True, toneMapping: str=None, toneMappingExposure: float=None, frameloop: Literal['always', 'demand']=None, enableOrbitControl: bool=None, camPosition: List[float]=None, camRotation: List[float]=None, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L971)

## Scene.serialize

```python
def serialize(self)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L1021)

```python
tag = 'Scene'
```

## DefaultScene

```python
class DefaultScene(Scene)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L1032)

Default Scene that includes a basic setup of ambient lights.


:param children: list of children elements to be rendered in the scene.
:type children: SceneElement, ...
:param rawChildren: list of children elements to be rendered in the scene.
:param htmlChildren: list of children elements to be rendered in the scene.
:param bgChildren: list of children elements to be rendered in the scene.
:param show_helper: list of children elements to be rendered in the scene.
:param startStep: list of children elements to be rendered in the scene.
:param endStep: list of children elements to be rendered in the scene.
:param up: list of children elements to be rendered in the scene.
:param kwargs: list of children elements to be rendered in the scene.

Example Usage::

    DefaultScene(
        # Ambient Light does not have helper because it is ambient.
        AmbientLight(intensity=1.0, key="default_ambient_light"),
        DirectionalLight(
            intensity=1, key="default_directional_light", helper=show_helper
        ),
        *children,
        rawChildren=rawChildren,
        htmlChildren=htmlChildren,
        bgChildren=[
            GrabRender(),
            *[
                # we use a key here so that we can replace the timeline controls via update
                TimelineControls(start=startStep, end=endStep, key="timeline")
                if endStep
                else None,
            ],
            PointerControls(),
            Grid(),
            *bgChildren,
        ],
        up=up,
        **kwargs,
    )

## DefaultScene.__init__

```python
def __init__(self, *children: SceneElement, rawChildren: List[SceneElement]=None, htmlChildren: List[Element]=None, bgChildren: List[SceneElement]=[], show_helper=True, startStep=0, endStep=None, up=[0, 1, 0], grid=True, **kwargs)
```

[Source](https://github.com/vuer-ai/vuer-docs/blob/docs/v0.0.52/vuer/schemas/scene_components.py#L1075)

### Inherited members

- `tag` — from [`vuer.schemas.scene_components.Scene`](/python-api/schemas/scene_components#scene)
- `serialize` — from [`vuer.schemas.scene_components.Scene`](/python-api/schemas/scene_components#scene)

## Public imports

These symbols are available from this module. Their definitions are documented in the linked modules.

- [`BlockElement`](/python-api/schemas/html_components#blockelement) — `vuer.schemas.html_components.BlockElement`
- [`Element`](/python-api/schemas/html_components#element) — `vuer.schemas.html_components.Element`
- [`Image`](/python-api/schemas/html_components#image) — `vuer.schemas.html_components.Image`
