Only this pageAll pages
Powered by GitBook
1 of 25

Open Blocks Docs

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Blog

Loading...

Loading...

Loading...

Loading...

Getting Open Blocks

Open Blocks will always be free and open source. We depend on contributions from our community and from our sponsors to support and continue developing new features.

Windows

Meta Quest

Other Devices and Platforms

We aim to work on all OpenXR compatible devices. We're currently fixing some issues that affect other popular Android-based headsets but this link will point to the latest release if you want to try it out on your hardware.

Home

Welcome to the Open Blocks Documentation

There is content here for both users of Open Blocks and for people that want to contribute to its development.

It's currently a massive work in progress and various links and info will be incorrect but we're just trying to get all the information currently available in one place.

Writing good docs takes time. We'd love people to help. Hop on our Discord or just write some docs and let us know about them. There's a bunch of you out there who know more about actually using Open Blocks than we as developers do and your contribution would be invaluable.

Saving and Sharing on the Web

Coming Soon

When it was originally released - Google Blocks was designed to closely integrate with Google Poly - the 3d model sharing website by Google.

We have nearly finished work on a complete replacement - The Icosa Gallery which will be fully open source. You'll be able to save and publish your work and view or remix the work of others.

We hope to make a preview release of this functionality available in Q3 2024

Exporting To Other Apps

Paint Tool

Change the color and material of entire shapes or just the chosen faces.

Controls:

Controller
Input
Result

Main

Directional left

Snapping

The ability to snap objects, edges and vertices together helps make your creations precise. However, we heard that the existing snapping behavior was often unpredictable or difficult to control. To ensure every snap you make does what you expect it to do, we’ve vastly improved our snapping algorithm and introduced a brand new user experience to guide you.

When trying to snap two objects together, make sure to half-press the alternate trigger to see a helpful guide line. The line will preview the spot to which your object will snap if the trigger is fully pressed. Use this guide to locate your snapping gesture to the exact face you intend before pressing the trigger all the way down.

You can also more easily snap meshes together. Let’s say, for example, that you’d like to snap a torus around a cylinder. Half-press the alternate trigger while placing the torus to get helpful guidelines for placing one mesh around the other. Fully press the trigger to snap the torus in place.

Repaint whole object

Directional right

Repaint faces

Trigger

Paint

Environment Options

You can pick from four modeling environments. there is a night version of the current environment for those who find the desert a bit too bright after long creation sessions. You’ll also find plain white and black options. Make sure to look up while creating in the black environment for a night sky surprise. Plus, we’ll remember which environment you used in your last session and automatically default to that selection your next time around.

Tools

Contacting Us

Open Blocks is developed and managed by the Icosa Foundation

You can email us at [email protected]

We are also active on Discord

All code is available on our Github account

We are gratefully accepting donations via Open Collective

Social Media: https://linktr.ee/OpenBlocks

v0.2.0

🚀 Features

  • Initial fixes for PC VR (PR #1 by @andybak)

  • Fix and reserialize assets (PR #8 by @andybak)

Change local save button action to one not requiring login (PR #9 by @andybak)

🐛 Fixes

  • Fix camera rig errors (PR #6 by @andybak)

  • Fix Tutorial (PR #15 by @andybak)

🛠️ Infrastructure

  • Initial CI [copied from Open Brush] (PR #2 by @mikeage)

  • Actually run the release job (PR #5 by @mikeage)

  • Add pre-commit and reformat all files (PR #3 by @mikeage)

  • Add workflow jobs to make it easier to manage unity license secrets (PR #4 by @mikeage)

  • Save caches from branches (these are much smaller than Open Brush, so no need for the optimization here) (PR #18 by @mikeage)

  • Upload releases to Steam (PR #17 by @mikeage)

  • Automatically upload docs to open-blocks-docs (PR #19 by @mikeage)

  • Fix typo in steam release dependencies (cosmetic only) (PR #20 by @mikeage)

📦 Dependencies / Maintenance

  • Merge upstream (PR #10 by @andybak)

  • Sync with upstream (PR #21 by @mikeage)

Controls

Controller
Input
Result

Support

The quickest way to get support is often to come and chat to us on our although you can

We are also active on social media - primarily on (we are winding down our but the account is still active during the transition. We also have accounts on and - and we'll hopefully soon be more active on Tiktok, Mastodon and For more technical issues - especially those related to the code or integrating your software with Open Blocks then we have a

Discord
email us directly
Bluesky
Twitter presence
Instagram
Threads
Reddit
Github Issue Tracker

Release History

This section lists changes in our major releases and point releases.

There is also information on the current beta version.

Redo

Trigger

Snap/Align (depending on tool)

Grip

Move world

A Button

Asset Browser

Both

Both Grips

Move and rotate world

Main

Grip

Move world

Trigger

Activate current tool or interact with a menu

Secondary

Directional left

Undo

Directional right

Current Beta Release Notes

Full release details

🚀 Features

  • Shader and performance fixes (PR #74 by @andybak)

  • Add CSG operations to Shape Tool ( by @andybak)

  • Icosa integration ( by @andybak)

  • Http server and improved login ( by @andybak)

  • Better publish UI ( by @andybak)

  • Switch to zip uploads ( by @andybak)

  • OBJ/GLTF import ( by @andybak)

  • Import .vox files ( by @andybak)

  • Feature/remove colinear vertices ( by @andybak)

🐛 Fixes

  • Fix internet permission on Android ( by @andybak)

  • Fix model menu bugs ( by @andybak)

  • Remove API delete. Fix publish url ( by @andybak)

  • Prevent exception on first run ( by @andybak)

🛠️ Infrastructure

  • Faster cleanup step (saves about 1 minute in the slow case) ( by @mikeage)

  • Add a github action to automatically comment if/when Packages or Project Settings are changed ( by @mikeage)

  • Use literal newline to fix file listing in the warning comment ( by @mikeage)

  • Update pre-commit config ( by @mikeage)

📦 Dependencies / Maintenance

  • Unity version bump ( by @andybak)

  • Bump the all-actions-updates group with 6 updates ( by @dependabot[bot])

  • Bump the all-actions-updates group with 2 updates ( by @dependabot[bot])

  • Bump mikepenz/release-changelog-builder-action from 5 to 6 in the all-actions-updates group ( by @dependabot[bot])

💬 Uncategorized

  • CSG improvements ( by @andybak)

  • Technology filter button ( by @andybak)

  • Fix rendering of modify tool ( by @andybak)

Insert Shape Tool

Inserts one of the predefined shapes:

  • Cone

  • Sphere

  • Box

  • Cylinder

  • Torus

  • Icosahedron (beta release)

Controls:

Controller
Input
Result

Grab Tool

Select entire shapes to move, scale, flip, group or duplicate them.

Controls:

Controller
Input
Result

Tutorials and other Resources

Video Tutorials

Here's a YouTube playlist of various tutorials we have collected:

Experimental Features

At the very bottom of your Blocks menu you'll now see a beaker icon which lets you access prototype versions of your most-asked-for features. Here’s a breakdown:

Non-coplanar face mode

Many of you have noticed that Blocks will create coplanar faces when reshaping meshes. This is helpful in many cases, but in others it creates extraneous triangles that make further operations like perfect subdivision difficult. Now you can enable non-coplanar faces to avoid creation of extra triangles.

Modify Tool

Modifies parts of a shape - either moving, subdividing or extruding.

Controls:

Controller
Input
Result

Eraser Tool

Erase whole shapes or parts of a shape

Controls:

Controller
Input
Result

Privacy Policy

This privacy policy discloses how Icosa Gallery Ltd (hereinafter "Icosa Gallery", “us”, "we") handles and protects, and values your information

The purpose of this page is to inform users of the Open Blocks application (the "App") and/or our customer support service (this service and the App hereinafter referred to as the "Services") regarding our policy with the collection, use, and disclosure of Personal Information of any users of our Service.

By using our Services, you agree to the collection and use of information in relation to this policy. The Personal Information that we collect is used for providing and improving the Services. We will not use or share your information with anyone except as described in this Privacy Policy.

Information Collection and Use

As per Meta requirements, the App receives information about the users' age group, but this information is never stored and is immediately discarded.

In order to provide customer service for our users, you may . During this transaction it is likely that we will receive Personal Information (e-mail address, and any other Personal Information you may include). Your Personal Information will only be used to provide you with the support requested, and will not be processed for any other reason. Any emails we receive will be kept on record to enable us to provide continued customer service, but you are free to request Personal Information deletion at any time by contacting us on the same email:

Add XROrigin component to camera rig (PR #86 by @andybak)

  • Fix edge vertex highlight scale (PR #87 by @andybak)

  • Fix upload bugs (PR #91 by @andybak)

  • Fix startup error (PR #95 by @andybak)

  • Miscellaneous UI fixes (PR #97 by @andybak)

  • Fix api url override (PR #101 by @andybak)

  • Fix icosa login success message (PR #104 by @andybak)

  • Fix opening urls in browser (PR #113 by @andybak)

  • Fix obj import issues (PR #115 by @andybak)

  • Fix polycount metadata (PR #120 by @andybak)

  • Add gitleaks to pre-commit and update all hooks (PR #90 by @mikeage)

  • Fix Windows line endings (PR #93 by @mikeage)

  • Cherry-pick build improvements from Open Brush (PR #99 by @mikeage)

  • Sync tags (PR #103 by @mikeage)

  • Bump actions/checkout from 5 to 6 in the all-actions-updates group (PR #121 by @dependabot[bot])

  • Bump the all-actions-updates group with 2 updates (PR #122 by @dependabot[bot])

  • PR #25
    PR #70
    PR #88
    PR #94
    PR #111
    PR #114
    PR #116
    PR #117
    PR #81
    PR #82
    PR #84
    PR #85
    PR #73
    PR #75
    PR #76
    PR #77
    PR #102
    PR #105
    PR #106
    PR #110
    PR #109
    PR #112
    PR #119
    Privacy policy updates

    We reserve the right to modify this privacy policy at any time, so please review it frequently. Changes and clarifications will take effect immediately upon their posting on the website. If we make material changes to this policy, we will notify you here that it has been updated, so that you are aware of what information we collect, how we use it, and under what circumstances, if any, we use and/or disclose it.

    Updates/Opting Out If you would like to access, correct, amend or delete any personal information we have about you, you are invited to contact us by sending an email.

    contact us via email
    [email protected]

    Trigger

    Create shape

    Secondary

    Trigger

    Snap/Align

    Main

    Directional left

    Previous shape

    Directional right

    Next shape

    Directional up

    Increase size

    Directional down

    Decrease size

    Main

    Directional left

    Duplicate

    Directional right

    Flip

    Directional up

    Size +

    Directional down

    Size -

    Trigger

    Grab

    A button

    Group selected shapes

    Subdivide mode

    Directional right

    Extrude mode

    Directional up

    Modify mode

    Directional down

    Plane cut mode

    Trigger

    Select/extrude/move/subdivide

    Trigger (hold in subdivide mode)

    Loop subdivide

    Secondary

    Trigger

    Snap/Align

    Main

    Directional left

    Directional right

    Erase vertex/edge/face

    Trigger

    Erase

    Main

    Directional left

    Erase shape

    Loop subdivide

    Subdivision can be a really powerful tool. It’s even more powerful if you can cut a loop around an entire mesh. With loop subdivide enabled, simply long press on the trigger while subdividing to see a perfect subdivision loop form around your object.

    Edge, Face and Vertex Deletion

    Many have asked for the ability to delete a single edge, face or vertex. With this feature enabled, use the eraser tool to do just that. We'll “collapse” the mesh based on the edge, face or vertex you delete.

    Worldspace grids

    Another option that helps with precision is enabling worldspace grids. This feature will show grids along every side of your worldspace. The grid units are equivalent to the actual worldspace grid units, so you can precisely measure and place objects along the grids.

    Volume insertion ruler

    Modeling very precisely in Blocks can be difficult without a sense of relative scale. This experimental feature allows you to enable a ruler when you are inserting a mesh. As you insert the object, you'll see relative measurements in meters appear on each axis so you can precisely and accurately measure every object relative to the others.

    Expanded mesh wireframe

    When reshaping a mesh you see a helpful wireframe around the section of the mesh you are reshaping. Many have asked for the ability to turn that wireframe on for the entire mesh, and this feature does exactly that.

    Stepwise selection undo

    Multi-selecting a lot of objects can be frustrating if you select the wrong object in the middle of your selection process. We wanted to make this easier, so we’ve experimented with allowing you to undo and redo steps in your multi-selection. You can use the undo and redo buttons on your non-dominant controller to undo or redo the selection of objects in order. Make sure to keep your trigger held down while undoing or redoing to ensure you can keep multi-selecting after correcting your mistake!

    It’s important to note that since these features are experimental, there may be minor bugs or issues when using them.

    Insert Stroke Tool

    Draws brush strokes of various shapes.

    Controls:

    Controller
    Input
    Result

    Main

    Directional left

    Previous shape

    Directional right

    Next shape

    Directional up

    Increase number of sides

    Directional down

    Decrease number of sides

    Trigger

    Draw

    Secondary

    Trigger

    Snap/Align

    Introducing Open Blocks!

    Blocks is open source 🎉

    Hey VR creators,

    Google Blocks is now open source software! We're extremely excited to announce that our fork, naturally called Open Blocks, is already in development and will be joining Open Brush in providing free XR creation tools to everyone.

    Read on to hear the story so far...

    A short history of Blocks

    Originally developed in-house by Google, Blocks was one of the first VR-native creation apps, designed to make 3D modelling intuitive and accessible for everyone. With just six simple tools - Shape, Stroke, Paint, Modify, Grab, and Ease - users could effortlessly create 3D objects. Blocks’ user-friendly interface lowered the barrier to entry, allowing even beginner modellers to jump into VR content creation.

    Sadly, Blocks was last updated in 2018, and has sat dormant since then. Around the time Tilt Brush , we inquired if the same could happen for Blocks, but we were informed it wasn't possible. We got on with the development of Open Brush and our Poly replacement Icosa Gallery, and Blocks was left in the dark.

    Earlier this year, we thought we'd try again! We reached out to both former and current members of the original Google Blocks team who worked on Blocks, and found they were eager to find a way forward for us. A little while later, Google approved the release of the .

    We've been working hard with the Google Blocks team in the last few weeks to bring the codebase to a usable state, so anyone should now be able to download and run the Unity project.

    However, it's not enough to just release what already exists...

    Our Roadmap for Open Blocks

    We pushed hard for the Blocks code to be released, and we're committed to keeping its spirit alive. Naturally, we are going to release and maintain our own community-led version under the Icosa banner, just as we have done with Open Brush.

    We're working hard to bring the Open Blocks codebase up to modern standards. First up, we've switched to use the OpenXR framework and new input system within Unity, enabling us to target Open Blocks for a much wider range of XR devices. We have created a standalone XR port, which brings Open Blocks to the Quest (and soon Pico) platform. Next, there are be plenty of opportunities to add immersive XR features such as MR passthrough.

    We'll also be adding glTF import support, more base shapes, an improved colour palette and support for our Poly replacement, Icosa Gallery. This will be instrumental in unlocking Open Blocks' full potential for asset creation and remixing.

    Our long term roadmap will transform Open Blocks into a full modelling suite, giving you more control over materials, adding texturing support, and enabling more powerful tools from traditional CSG pipelines.

    You can install Open Blocks from and the (or manually from Github for or ) Other stores/platforms coming soon...

    A community effort

    We invite developers, artists, and XR enthusiasts to join our community and help shape the future of Open Blocks. Thousands of users rely on tools like Open Blocks and Open Brush daily for their XR productivity. Your contributions - whether through code, donations, feedback, or community engagement - are crucial to driving this project forward and ensuring it continues to evolve and improve.

    Check out our , try the pre-release , and share your feedback on our . Together, we can create a powerful, community-driven tool that enhances VR creativity for everyone.

    A heartfelt thank you to Google Blocks team

    We want to extend a big thank you to the Google Blocks team for their hard work with the original application, and for making the source code available to the community. We'd like to give a special shout-out to , who helped us reach out to the team and get the ball rolling. Their support has been instrumental in enabling us to bring Open Blocks to the community.

    Stay tuned for more updates, and let’s create something amazing with Open Blocks!

    Happy modelling, The Icosa Foundation Maintainers

    About Icosa Foundation

    Icosa Foundation was created with the mission of preserving and maintaining the legacy of Google's Poly platform, realized in . We also quickly grew to maintain , a fork of Google’s discontinued VR painting app Tilt Brush. We’re dedicated to preserving and enhancing these creative tools, ensuring they remain accessible and continue to grow with the needs of the ever changing XR landscape.

    If you would like to support us financially, we have an page. Any funds raised go towards maintaining our free software, with contributions going towards bug bounties, freelance developers, store fees, and paying for server infrastructure. Any support is greatly appreciated. Links

    was open sourced
    source code
    Steam
    Meta Quest Store
    PC
    Quest/Standalone
    GitHub
    builds
    Discord
    Jason Toff
    Icosa Gallery
    Open Brush
    Open Collective
    Discord
    Open Collective
    Social Media
    Open Blocks Quest Store Page
    Open Blocks Steam Download Page
    Open Blocks Code on Github
    Icosa Foundation Home Page
    Release 0.5.0 · icosa-foundation/open-blocksGitHub
    Open Blockssteam
    Logo
    Logo

    Sponsors

    We would like to thank Google both for generously releasing the original Blocks source code as open-source and for their financial contribution that helped us port to standalone headsets

    This project is partly funded through NGI0 Entrust, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.