Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
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.
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.
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

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
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.




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
Change local save button action to one not requiring login (PR #9 by @andybak)
Fix camera rig errors (PR #6 by @andybak)
Fix Tutorial (PR #15 by @andybak)
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)
Merge upstream (PR #10 by @andybak)
Sync with upstream (PR #21 by @mikeage)
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
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
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)
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)
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)
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])
CSG improvements ( by @andybak)
Technology filter button ( by @andybak)
Fix rendering of modify tool ( by @andybak)
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:
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.
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])
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.
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
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.
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.
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.
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.
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.
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.

Previous shape
Directional right
Next shape
Directional up
Increase number of sides
Directional down
Decrease number of sides
Trigger
Draw
Secondary
Trigger
Snap/Align






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...
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...
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.
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.
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
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
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.
