Open Brush Docs
  • Home
  • How to get Open Brush
  • Differences between Open Brush and Tilt Brush
  • User Guide
    • Get started with Open Brush
    • Painting with Open Brush
    • The Open Brush UI
      • Admin Panel
        • Settings Panel
        • Labs Panel
      • Tools Panel
        • Selection Options
        • Repaint Options
      • Brushes Panel
      • Extras Panel
        • Environment Panel
        • Lights Panel
        • Backdrop Panel
        • Guides Panel
        • Media Library
        • Camera Paths Panel
        • Snap Settings Panel
        • Transform Panel
        • Layers Panel
      • UI Differences Between Basic Mode and Advanced Mode
    • Grid and Angle Snapping
    • Repaint Tool and Jitter
    • Selection/Erase Filter
    • Lazy Input
    • Bimanual Input and Revolver
    • World Axis Unlock
    • Saving and sharing your Open Brush sketches
    • Troubleshooting issues with Open Brush
    • Check out Labs features
    • Multi Mirror
    • Importing Images, Videos and 3D Models
    • Experimental Mode
    • Make moving creations using audio reactive brushes
    • Using Reference Images on Oculus Quest
    • Remixing and Creative Commons
    • Accessing Autosave Files
    • The Open Brush config file
    • Exporting Open Brush sketches to other apps
      • Exporting to Unreal Engine 5
      • Exporting to Snapchat Lens Studio
      • Configuring Export
    • Plugins
      • Example Plugins
        • Example Pointer Plugins
        • Example Symmetry Plugins
        • Example Tool Plugins
        • Example Background Plugins
      • Writing Plugins
        • Getting Started
        • Tweaking existing plugins
        • Writing a Pointer Plugin
        • Writing a Symmetry Plugin
        • Writing a Tool Plugin
        • Writing a Background Plugin
        • Defining and Drawing Brush Strokes
      • Plugin API Scripting Reference
    • Open Brush Unity SDK
    • Open Brush API
      • Retrieving a preview image
      • API Commands List
    • Cameras and Exporting Video
    • Brushes
      • Brush List
      • Memory limits and brush costs
      • Experimental Brushes
      • Hiding Brushes with Brush Tags
    • Using Open Brush without a VR headset
    • Command Line Arguments
    • Tilt Brush Version 23 Release Notes
  • Get Involved!
    • How to help with Testing
  • Pre-release and Experimental Builds
    • Installing the Beta Release
    • "Experimental Mode" Builds
    • Feature: 3D Shapes Tool
    • Feature: Animation Timeline
    • Feature: Icosa Gallery Support
    • Feature: Brush Editing
    • Feature: Plugin Scripting
    • Feature: Sculpting
    • Combined Testing Build
    • Old or Completed Feature Builds
      • Feature: Polyhedra
      • Feature: Snip Tool
      • Feature: Layers
      • Insominx's (michael-g) Experimental Build
      • XR Framework Beta
      • Feature: Transform Panel and Snap Enhancements
      • Feature: Improved GLTF Importer
      • Feature: Multi-Mirror
      • Feature: New Monoscopic Mode
      • Feature: Improved Import/Export
      • Feature: Multiplayer
  • Case Studies
  • Other Resources
  • Developer Notes
    • UI Elements
    • Unity shader examples
    • Setting up CI for Open Brush using Github Actions
    • Open Brush File Format
    • Previous Github Wiki
      • Brushes
      • BuildingOpenBrush
      • BurstCompiler
      • Comparison
      • MonoscopicMode
      • PseudoCode
      • UserInterface
    • Differences between Standard and Experimental Mode
    • Open Brush AsCanvas Notes
    • Unity Versions
  • Release History
    • v2.10 Multiplayer
    • v2.9 (Maintenance)
    • v2.8 Import/Export
    • v2.7 (Maintenance)
    • v2.6 (Maintenance)
    • v2.5 (Maintenance)
    • v2.4 "Prismatic"
    • v2.2: Settings and Sketches
    • v2.1 Hotfix
    • 🚀v2.0: XR Update
    • v1.0: Happy Birthday to Us!
    • Current Beta Release Notes
  • Docs TODO
  • Contacting Us
Powered by GitBook
On this page
  • What does it do?
  • How do I install it?
  • How do I use it?
  • Import Differences between GLTFast (existing) and UnityGLTF (new)
  • Differences with the new UnityGLTF export
  • Platform Support
  • Breaking Apart Imported Models
  • Importing Lights
  • Known Issues
  • How do I get help
  • Can I see it in action?
Edit on GitHub
Export as PDF
  1. Pre-release and Experimental Builds
  2. Old or Completed Feature Builds

Feature: Improved Import/Export

PreviousFeature: New Monoscopic ModeNextFeature: Multiplayer

Last updated 2 months ago

Status: Released in

What does it do?

Adds new optional GLTF import and export workflows. Allow import of lights, breaking apart of imported models and other new features that the updated libraries enable.

How do I install it?

How do I use it?

 "Import": {
    "UseUnityGltf": true
  }

We've changed how export in general is configured. Previously all supported formats were exported whether you needed them or not. Some were pretty slow for large scenes (STL - looking at you) and you probably only needed a couple of them. Now you can choose which are available using the config file:

  "Export": {
    "ExportBinaryFbx": true,
    "ExportFbxVersion": "FBX201400",
    "ExportStrokeMetadata": true,
    "KeepStrokes": true,
    "KeepGroups": false,
    "Formats": {
      "fbx": true,
      "glb": true,
      "newglb": true,
      "json": true,
      "latk": true,
      "obj": true,
      "stl": false,
      "usd": true,
      "wrl": false
    }

ExportBinaryFbx and ExportFbxVersion are existing options - but the rest of the entries here are new.

  • ExportStrokeMetadata: todo

  • KeepStrokes: todo

  • KeepGroups: todo

  • Formats: Each item in here corresponds to an existing export format except for "newglb" which is a glb file but we use the new export code to generate it. Note that formats not supported on your platform will be ignored. See below for platform support.

Import Differences between GLTFast (existing) and UnityGLTF (new)

Extensions supported by GLTFast but not UnityGLTF:

  • EXT_mesh_gpu_instancing

  • KHR_materials_pbrSpecularGlossiness (legacy extension - superseded by KHR_materials_specular which is only supported by UnityGLTF)

Extensions supported by UnityGLTF but not GLTFast:

  • KHR_materials_clearcoat

  • KHR_materials_emissive_strength

  • KHR_materials_ior

  • KHR_materials_iridescence

  • KHR_materials_specular

  • KHR_materials_transmission (soon)

  • KHR_materials_volume (soon)

  • MSFT_lod

Extensions supported by both:

  • KHR_draco_mesh_compression

  • KHR_lights_punctual

  • KHR_materials_unlit

  • KHR_mesh_quantization

  • KHR_texture_basisu

  • KHR_texture_transform

(The above list may change as we implement missing features in UnityGLTF. GLTFast also has announced plans to support KHR_materials_variants, EXT_lights_image_based and KHR_materials_transmission)

UnityGLTF has some other differences:

  • Model hierarchy should be faithfully preserved. GLTFast on the other hand doesn't support sub-meshes so any mesh that contains multiple materials will be split into separate objects. (this might be desirable in some cases)

  • In general 3d models should be more robustly handled if you round-trip between Open Brush and other 3D apps

Please report any other differences you find. The reason we are keeping both importers around is to gather feedback on their strengths and weaknesses.

Differences with the new UnityGLTF export

The use of the new exporter is currently optional and we will continue to support the old exporter until the new one is a full replacement.

  • Currently - if you use the Open Brush Toolkit Unity SDK then use the existing exported GLB file

  • Similarly - if you use the Icosa three.js loader this works best with the existing exporter

  • The new GLB export should work better in Blender and other 3D animation apps although we still have work to do to fix support for particle brushes, transparent brushes and other features.

  • Imported 3D models will export much better with the new GLB exporter

Platform Support

Format
Android/iOS (Standalone VR)
PC (Tethered VR)

FBX

✘

✔

GLB

✔

✔

NEWGLB

✔

✔

JSON

✔

✔

LATK

✔

✔

OBJ

✘

✔

STL

✔

✔

USD

✘

✔

WRL

✔

✔

Breaking Apart Imported Models

Importing Lights

Known Issues

If you break apart a model containing lights, the lights themselves can't be selected or moved.

How do I get help

I'm on UK time but I check in fairly regularly.

Can I see it in action?

Download a build for your headset from the link above and unzip it. You can run the Windows exe directly. To install the Quest apk use SideQuest:

To switch to the new importer (which replaces GLTFast that we added in v2.4 with UnityGLTF you need to edit your and add this entry after "Flags":

Use the existing exporter for uploads to

In general new features in the or from other will work better using the new exporter.

This build supports a new feature - The existing "group/ungroup" button on the pop-out tray that appears when you activate the now works on imported models - if they consist of multiple parts. Just select a single imported model and if it does have sub-parts the button will show "ungroup" as an option - the same as if you select a normal grouped set of objects.

If your imported model contains lights then these will appear in the scene and will act upon other objects the same as the . Furthermore imported lights support point lights and spot lights - whereas the existing environment lights only support directional lights.

Come over to the Open Brush Discord: and chat to me @andybak).

https://uploadvr.com/sideloading-quest-how-to/
Open Brush config file
Icosa.
beta
experimental branches
Selection Tool
Environment Lights
https://discord.openbrush.app
v2.8