Tag Archives: Unity3D

Post navigation

It’s been a quiet few months, but we’re happy to say that a new version of Cubiquity has just landed on the asset store. Version 1.1.3 is primarily a bug-fix release but also adds a few new features such as normal mapping of the colored cubes volumes and an example showing how to build and save voxel databases from Unity scripts.

Colored cubes can now have custom diffuse and normal maps applied. Shiny!

We’ve also tidied up a lot of stuff internally, for example all of our PolyVox enhancements have been merged back into the main develop branch and we have overhauled the Cubiquity build system. Perhaps not so exciting for end users but still an important step as development can move a bit more smoothly from here on.

Licensing is the same deal as before – you can use the system free for non-commercial and evaluation use, or for $200 you can buy a commercial license through the Unity asset store:

Looking forwards, the main request has been for larger volume support and better performance with less memory. In other words, we’re going to put some work into optimization and possibly providing some tools (importers, etc.) to help create the larger environments.

We’ll try not to go another three months without posting, and I think the upcoming changes should give us plenty to show off!

Update 3rd Sept 2014: Version 1.1.3 is now out with collision and physics fixes for smooth terrain. The links above have been updated.

Hi all, I’m pleased to announce that we’ve just made the first official release of Cubiquity for Unity3D, and that it’s now available to purchase from the asset store. This is a huge milestone for us and comes just over a year after we first showed our work on Unity3D integration.

The asset has been released at the $200 price point which we’ve been throwing around for a while now, and it remains free for non-commercial and evaluation use. Anyone who has been following our regular snapshots will already have a good idea what the system does, but the uninitiated can get the latest free version below:

This is really just the start of the journey for Cubiquity and we have plenty of ideas for how we want to further develop the system over the coming months. But that can wait for a future post – for now we’d just like to thank everyone who has spent time testing our system, giving feedback, and providing encouragement. You’ve helped get Cubiquity for Unity3D to where it is today!

Time for another Cubiquity update! Over the last two months we’ve put a lot of work into polishing and refining Cubiquity in order to make it fit more naturally with the Unity way of doing things. In particular, voxel terrains now behave much more like other Unity objects in that they can be translated, scaled and rotated, and can also participate in transformation hierarchies. See the video below for an example (the moon orbits the Earth while the Earth orbits the sun):

As you can see this adds a lot of flexibility to the system, and it’s really starting to feel like things are being done ‘the right way’. I can imagine the solar system example above could be ‘gamified’ quite nicely, e.g. you could defend a voxel-based Earth from a barrage of voxel-based meteorites. And I’m sure there are plenty of more interesting game concepts which you guys can think up 🙂

As well as transforms, the video also shows that the material system is much more flexible now. You can still use the TriplanarTexturing material but it’s really just an example. The ‘planet’ material (used for the Earth in the video above) shows how textures can be applied from a cube map, and we have ideas for other approaches too.

Actually setting the material is also more natural now. We’ve introduced ‘VolumeRenderer’ and ‘VolumeCollider’ components which are conceptually similar to their mesh-based cousins, and so the material can be set just by changing the ‘material’ property of the ‘VolumeRenderer’ component. There’s still some work to do with these but it’s starting to take shape.

Sounds great, but when is the release?!
We were originally hoping to be on the asset store by the end of last year, and we’re clearly behind in that regard. This isn’t due to any particular problem or road block – it’s just a case of everything taking a bit longer than expected. But that’s why we put out these snapshots, so that you guys can see the progress and start playing with the system.

As it currently stands, we expect to put out one more snapshot in about a month, and then release at least the free version of Cubiquity on the asset store about a month after that. It’s not clear if the paid version will go live at the same time – we may have a testing period with just the free version available. At any rate the paid version won’t be very far behind.

Of course, being on the Asset Store is really just the start… we have many interesting plans for the future of this system 🙂

Here’s the latest update and snapshot showing our progress on Cubiquity. Since the last release a lot of our work has been internal (API, file format, etc), but we’ve also added collision meshes for the (smooth) terrain volumes, added an example of generating procedural terrain, and added an example of creating colored cubes mazes from bitmaps. See the video below:

The download link is at the bottom of this post. Overall the system has changed quite a lot, so if you were using a previous version then you should take care when upgrading. Be sure to back up all your files so you can revert the upgrade if need be. You will have to make significant changes to your code and any old volumes you have will not be compatible with this new version.

New file format
Previously Cubiquity would store all the data for a given volume in a user-specified folder, with each chunk being stored as a separate file which could be paged into or out of memory on demand. The new version instead makes use of an SQLite database to store the voxel data. It’s a lot tidier as everything is in a single file, and it should also bring performance and robustness improvements. However, the file format is not finalized yet so please don’t depend on it. Future versions of Cubiquity may not be able to load these files!

New licensing model
This is the first snapshot to be released under our new licensing model. It’s free for non-commercial and evaluation use (see LICENSE.txt for full details) and hard-coded limitations on volume size have been removed. Practically speaking there are still technical limitations, but those will lift in the future as we optimize the system. Please note: there is currently no way to create large volumes through the user interface but you can do so through code.

API improvements
The ColoredCubesVolume class has been split into ColoredCubesVolume and ColoredCubesVolumeData, and a similar split has been made for the TerrainVolume. The idea is to correctly separate responsibilities. ColoredCubesVolume is a component which handles rendering, interaction, etc while ColoredCubesVolumeData is just the data it operates on and can be serialized to an asset (probably… not really tested). More splitting of responsibilities will probably occur in the future. Please look at the code for the examples discussed in the video to see how you should now construct volumes from code.

Things that are missing
Some functionality may have got lost in the refactor, in particular it is no longer possible to import a colored cubes volume from a stack of images. We plan to bring this back in the future as a separate command line tool so that we can also demonstrate the Cubiqity C API. So if you really need this functionality you might want to hold off upgrading for a while.

Download the snapshot
You can download the snapshot corresponding to the video with the link below. Just extract the zip file and import the .unitypackage file into Unity. Be aware that it’s still Windows only at the moment.

Today we have some very important news regarding the future licensing of Cubiquity for Unity3D, and in particular there is a change to the way that the free version can be used. Please read the information below carefully!

Free and paid licenses

So far we have said that there will be both free and paid versions of the system, with the free version allowing both commercial and non-commercial use but being limited in terms of features and volume size. As of today we are changing this – the free version will be for non-commercial use only but we will remove all feature and size limitations.

In other words, you will now be able to get the full and unrestricted version of Cubiquity at no cost, providing that you are using it for non-commercial purposes. Even if you are using it commercially you will still be able to use the free version for evaluation purposes – i.e. you can make sure that Cubiquity is right for you before you commit to buying it on the asset store.

The exact terms and conditions are available in LICENSE.txt in the Git repository.

Why is this changing?

The free version of Cubiquity is intended to serve a number of purposes and should benefit both users and ourselves as follows:

It puts the system into the hands of those who otherwise could not afford it.

It generates publicity and helps promote the system.

It allows users to evaluate the capabilities of the system before they commit to a purchase.

It allows testing and feedback from a larger user-base which results in a better product.

Basically, we feel that all of the above points are better served by the new licensing model rather than the old one.

How and when does it take effect?

The license file has been added to the Git repository and takes immediate effect. Over the next few days we will take steps to make sure that the new license is clearly visible, and will then raise the size restrictions which are currently in place (though technical constraints still remain). Lastly we will produce a new snapshot in the next week or two.

But I preferred the old license! I’ve already started using it on a commercial project!

Don’t panic, we’re not looking to catch anyone out here. If you have already started a project with Cubiquity and you were intending to commercialize it then just send us an email (support@volumesoffun.com) with a brief description of what you have done so far. We’ll acknowledge that you are working on it and you can continue to be bound by the old conditions. However, you’ll also be bound by the old limitations so do consider whether you’d rather switch to the new license for better features and bigger volumes.

Ok, great, but what’s the plan for the commercial licenses?

Well, we’re still working hard. Most of the features for the initial version are implemented but there is a lot of polishing to do. I think we’re still hoping to get it on the asset store by the end of the year, where the plan is to sell it as an editor extension for $200 per seat under the standard asset store license.

That’s not the end of the road though, we’re still only scratching the surface of where we want to go with this system. We’re also really pleased with the feedback we have received so far so please keep spreading the word!

Over that last month we’ve been improving the user interface and editing capabilities of our Cubiquity voxel terrain system. In our last video we demonstrated sculpting the shape of the terrain, and the video below shows how you can now paint materials onto the terrain as well.

As you can see, we’ve significantly improved the interface such that it is now quite similar to the one which comes with Unity’s built-in terrain. It offers many of the same features in terms of being able to select brush size and shape, and choosing from a variety of materials which can be painted onto the terrain. You get a similar marker on the terrain showing where operations will be applied and you can change texture settings such as scale and offset.

Overall we’ve very happy with the way this is coming together. At this point I think we’ve implemented most of the features which we want in place for the first release, and so we will now focus on tidying up the code and documenting the system. Then we’ll talk to those nice people at Unity about getting on the Asset Store 🙂

Several months ago we demonstrated that Cubiquity supports smooth voxel terrain (based on Marching Cubes) in addition to the ‘colored cubes’ style voxels which we’ve been showing off more recently. Both of these styles are first-class citizens in the Cubiquity system, and so over the last couple of weeks we’ve started exposing this smooth voxel terrain to Unity3D as well. Here’s a video of real-time voxel terrain sculpting in action:

At the moment it is only possible to sculpt the shape of the terrain and not yet paint textures onto it. We do already support textures in Cubiquity (as seen here) so this will be the next thing which we expose to Unity3D. At that point the system will have most of the features which we want in place before releasing the free version on the Asset Store. We’ll spend a couple of months polishing the user interface and code and then submit it to Unity Technologies for approval.

For those users who are feeling more brave and don’t want to wait for the official Asset Store release, the functionality in the video is already available for testing in our BitBucket repository. You might also want to watch our previous ‘Introduction to Cubiqity for Unity3D‘ video first, and then follow up with the smooth terrain video above.

I’m pleased to announce that today we are bringing Cubiquity for Unity3D even closer to reality, as an early version of the code is now available on BitBucket. This means you are able to download and play with the system immediately, as well as follow progress and get access to new features as soon as they are implemented. You can use the system with both the Free and Pro versions of Unity3D.

To start playing with it you should clone the BitBucket repository or download the snapshot as a ZIP file:

The repository contains all the C# and shader code required to work with Cubiquity, and it also contains a copy of the Cubiquity native code DLL. However, it does not contain the the source code used to build the DLL as we are not making this publicly available. You can use the provided DLL for free for both commercial and non-commercial purposes, but the size of the volume is restricted to 256x256x256 voxels. In the future it will be possible to buy a license to raise this limit.

We’ve created a video which gives an overview of the system and shows how to perform basic tasks such as creating a volume, modifying it in the Unity editor, and interacting with it at runtime. The documentation is rather thin at the moment so the video is worth a watch:

Feel free to play around with it, though be aware that APIs and file formats are still subject to change as the project evolves.

What next?

The system is a little rough round the edges and needs some polish to bring it to a production ready state. However, before we get to this we intend to spend some time exposing the smooth terrain capability of Cubiquity as we have not yet tested this within Unity3D. We want to ensure that both terrain types (cubic and smooth) work with any patterns and paradigms we introduce.

Roughly speaking we would like to get the smooth terrain working by the end of September (we have an ulterior motive here which I’ll talk about in a later post), and then we’ll get to work on bringing it to a production ready state. We’re developing it in public so that users can test the system at any time, and can consider buying a license when ever they feel it has the features and capabilities they need.

Time for another update on the Unity3D integration 🙂 Over the last couple of weeks we’ve been mostly focused on getting Unity’s collision and physics system working with the data which comes out of PolyVox/Cubiquity. You can see in this video it has come together quite nicely:

As you can imagine, it is spawning cube meshes to replace the destroyed voxels and then applyng forces to them to simulate the explosion. Unity’s physics system then takes over to handle the collision response and bounce the cubes around the terrain. The current implementation is not optimal as it just uses the rendered mesh as a collision mesh (there exist more efficient approaches) but for now we’re just trying to get the various pieces of the system in place.

If you want to play with this yourself then you can download the latest test build below:

Note that this is a Unity project so you’ll need Unity installed to run it. You then need to open the project, open the only scene, go to ‘Cubiquity->Import Colored Cubes Volume from VolDat’ from the main menu and then press Play.

I’ll try to provide a stand-alone test in the future but I need to work out some stuff about packaging resources first. In the mean time let us know if you have any questions or feedback.

After much waiting I’m pleased to say we are now making available the first test release of our Cubiquity and Unity3D integration. It’s hard to overstate how much this is simply a proof of concept, but with that in mind it does work pretty well. The test basically allows you to drive a tank around a small voxel arena and destroy the environment in real time. See the video below:

Getting this far has taken longer than expected, basically due to a lack of familiarity with Unity. It’s a very nice system but a few things take some getting used to. I was also under the mistaken impression that Unity Pro would let us use our C++ code directly, where as in reality you have to wrap it in a C API and build a .dll which you load at runtime. This was some extra work but at least it is done now.

It works with Unity Free!
The unity documentation states that plugins are a Pro-only feature, but I was pleased to find that Unity Free also supports them via a simple work around (see ‘download’ section below). I’m not sure how legitimate this is but it does at least mean we can make the system available to Unity Free users for testing. Our plan is therefore to release a free version of our plugin so that users can become acquainted with the system before they buy. This version will probably be limited in volume size or something… exact details are still to be decided.

What can I do with it?
This test version lets you play around in the ‘tank arena’ shown in the video above. If you’re feeling adventurous you can make some tweaks to GameLogic.cs but it may crash at some point (and take Unity with it!). The integration code is not yet in a separate library so you can’t easily drop it into your own projects, but that will come soon.

If you have Unity Pro you can probably just unpack the zip file, load the main scene, and press play. However, this is untested as I don’t have Unity Pro, so please let us know if it doesn’t run.

If you have Unity Free you need to move ‘CubiquityC.dll’ from ‘assets/plugins’ into your system folder. This means placing it in ‘Windows/SysWOW64’ folder on a 64-bit system (tested) or ‘Windows/System32’ on a 32-bit system (untested). I need to do some more experiments to determine if there are better options like just placing it alongside your executable.

Anyway, I’ll leave it at that but do let us know what you think or if you have any problems/suggestions.