> For the complete documentation index, see [llms.txt](https://docs.openbrush.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openbrush.app/release-history/v2.31.md).

# v2.31

## Portals Between Sketches

<figure><img src="https://3738774261-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mikdwm98p33AibfiSqN%2Fuploads%2FT5LG0SO1jyrbrFv3E7Vm%2F017%20Portals.png?alt=media&amp;token=d2f788ac-a219-44d1-823e-7ace879a2aa8" alt=""><figcaption></figcaption></figure>

[Portals](/user-guide/portals.md) are new shape widgets that link one sketch to another. You can add one from the Sketchbook, place and resize it in your scene, and use it to connect separate Open Brush creations.

Portal widgets are currently spherical but we hope to give you more control over shape and appearance. They are saved as part of the sketch and we will soon add support for them to GLTF exports to the [Icosa Gallery](https://icosa.gallery/)

## Draw Camera Paths

<figure><img src="https://3738774261-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mikdwm98p33AibfiSqN%2Fuploads%2FQZHroTNcYquZw9tHBvlG%2Fimage.png?alt=media&amp;token=92d397c9-1a28-48a3-a8b5-e74f9dd556c2" alt=""><figcaption></figcaption></figure>

You can now create a [camera path](/user-guide/exporting-videos/camera-paths-tool.md) simply by drawing it through your sketch. Choose the draw option in the Camera Paths panel and paint the route you want the camera to follow; Open Brush converts your stroke into an editable path.

Drawing is useful for quickly laying out sweeping or complex moves. Once the path has been created you can use the existing camera path tools to refine its anchors, direction, speed and field of view.

## Gaussian Splat Pose Export

<figure><img src="https://3738774261-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mikdwm98p33AibfiSqN%2Fuploads%2FIBPsC8cIZS0U5cX01cYz%2Fimage.png?alt=media&amp;token=a232410d-9e67-45d4-ad70-f88a50a69552" alt=""><figcaption></figcaption></figure>

New [Gaussian Capture](/user-guide/exporting-videos/gaussian-capture.md) widgets help generate the sets of camera views needed for Gaussian Splat workflows. Place and scale a box, sphere, hemisphere or ellipsoid around the part of your scene you want to capture, then let Open Brush produce a consistent set of viewpoints around or within that volume.

The capture includes the image and depth information needed by downstream tools such as [Lichtfeld Studio](https://lichtfeld.io/). You can adjust the capture density and orientation by manipulating the widget, making it easier to concentrate more viewpoints where they are useful.

## Colocation for Multiplayer

<figure><img src="https://3738774261-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mikdwm98p33AibfiSqN%2Fuploads%2FhAzn7s7tSKBimB9oZvqi%2F015%20Multiplayer%20Improvements.png?alt=media&amp;token=c945b0c0-2bd5-4c91-b49d-5fb8f6cbef91" alt=""><figcaption></figcaption></figure>

People sharing the same physical room can now [manually align their Open Brush play spaces](/user-guide/multiplayer/manual-colocation.md). One participant records two endpoints on a shared real-world reference; the other participants record the same points to bring their virtual coordinate systems into alignment.

## 360 and Depth Snapshots

The [Camera tool](/user-guide/exporting-videos/camera-tool-gifs-snapshots-video.md#360-snapshot) can now take 360° snapshots as well as conventional images. Depth capture has also been expanded to save viewable and technical depth files alongside the colour image, giving compositing and 3D workflows more information about the scene.

The same colour, depth and normal capture is available through a new API command for automated workflows. Open Brush freezes the scene while rendering 360° output so animated brushes remain consistent across the completed panorama.

## Better Camera Path API

The [Lua plugin API](/user-guide/using-plugins/writing-plugins/camera-paths.md) now provides more complete control over camera paths and their knots. Plugins can create and edit paths more reliably, sample positions and rotations along them, and work with speed and field-of-view values in clearer real-world units.

These additions make camera paths more useful for procedural drawing, automated rendering and links to external creative tools. The update also fixes camera path rotations on transformed canvases and keeps knots correctly ordered after editing their times.

## Full Change Log:

[Full release details](https://github.com/icosa-foundation/open-brush/releases/tag/2.31.0)

### 🚀 Features

* Better camera Path API ([PR #1067](https://github.com/icosa-foundation/open-brush/pull/1067) by @andybak)
* Camera path by drawing ([PR #1110](https://github.com/icosa-foundation/open-brush/pull/1110) by @andybak)
* Portals and Gaussian Capture via new Shape Widgets ([PR #1014](https://github.com/icosa-foundation/open-brush/pull/1014) by @andybak)
* Multicam 360 and depth ([PR #1023](https://github.com/icosa-foundation/open-brush/pull/1023) by @andybak)
* Manual Colocation flow ([PR #1126](https://github.com/icosa-foundation/open-brush/pull/1126) by @andybak)
* Better Steam Frame support ([PR #1064](https://github.com/icosa-foundation/open-brush/pull/1064) by @andybak)

### 🐛 Fixes

* Only broadcast MoveWidgetCommand when final ([PR #851](https://github.com/icosa-foundation/open-brush/pull/851) by @andybak)
* Fix export crash ([PR #1062](https://github.com/icosa-foundation/open-brush/pull/1062) by @andybak)
* Make video library path handling robust to paths outside the library ([PR #1115](https://github.com/icosa-foundation/open-brush/pull/1115) by @andybak)
* Fix widget drift bug ([PR #1125](https://github.com/icosa-foundation/open-brush/pull/1125) by @andybak)
* UI tweaks ([PR #1129](https://github.com/icosa-foundation/open-brush/pull/1129) by @andybak)
* Fix splat capture paths ([PR #1132](https://github.com/icosa-foundation/open-brush/pull/1132) by @andybak)
* Fix [View-only Mode](/user-guide/view-only-mode.md) issues ([PR #1133](https://github.com/icosa-foundation/open-brush/pull/1133) by @andybak)
* Steam Frame fixes ([PR #1138](https://github.com/icosa-foundation/open-brush/pull/1138) by @andybak)

### 🛠️ Infrastructure

* Fix upload issues; Rift failing and Pico 3 not supported ([PR #1127](https://github.com/icosa-foundation/open-brush/pull/1127) by @mikeage)
* Switch iOS MinimumOSVersion to 15.0 as per ITMS-90068 ([PR #1134](https://github.com/icosa-foundation/open-brush/pull/1134) by @mikeage)

### 📦 Dependencies / Maintenance

* Bump excon from 0.112.0 to 1.5.0 in the bundler group across 1 directory ([PR #1104](https://github.com/icosa-foundation/open-brush/pull/1104) by @dependabot\[bot])
* Bump json from 2.19.5 to 2.19.9 in the bundler group across 1 directory ([PR #1128](https://github.com/icosa-foundation/open-brush/pull/1128) by @dependabot\[bot])


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.openbrush.app/release-history/v2.31.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
