Tiny Universe: a music video featuring Vimeo 360 creators

Ever since I got my hands on a 360 camera, I became obsessed with how people are leveraging the format to create content that isn’t immersive at all. They’re showing the world from a different and very distorted perspective. This 2D distortion has aptly been named “Tiny Planet.”

If you browse through Vimeo’s 360 Cinema channel on Vimeo, you’ll find a plethora of talented 360 creators whose work ranges from music videos, time-lapses, to computer-generated worlds. After watching their work many times, I found myself really wanting to see their work from a new perspective — and without the need for a VR headset.

The above music video, Tiny Universe, is a collaboration with seven Vimeo 360 creators and Vimeo Creator Labs. Each of their work on their own are incredible, but when showcased in this new format, it creates a whole new experience.

Conceptually the idea behind this video is simple: take a bunch of 360 videos, apply a “Tiny Planet” effect on them, supercut them together, and add some fun music by Uncle Skeleton. The end result is a wild ride that I can’t stop watching.

The “Tiny Planet” effect is where most of my time was spent making the music video. The rest of this post is a deep dive into the history of tiny planets and how to make your own.

🌍 What is a tiny planet?

In the past couple years, capturing videos in 360 has become more and more accessible. Cameras like the Theta V, Insta360, and Rylo have really lowered the barrier to entry by making 360 capture very affordable and easy to use.

On my recent vacation in Mexico 🌮 I started to capture everything in 360, because why not? What better way to relive a moment than being able to fully immerse yourself in that snapshot in time? As I used the Theta V’s iPhone app to upload to Vimeo, I discovered how easy it is to distort the perspective of my video. By pinching the screen, you can distort the video to the point where it looks like you are walking on a alien-looking, tiny planet.

My trip to the Pirámide del Sol (shot with Theta V and converted to tiny planet)

Both the Rylo and Insta360 cameras have the same tiny planet feature. For Theta V owners, Karen Cheng even wrote a nice tutorial on how to do it. GoPro even has a handy VR plugin for Adobe Premiere which allows you to create the effect.

I wanted to dig into the process of how you could convert any 360 video into a tiny planet. This sent me down a rabbit hole of learning more about the origins of the format and how it works.

The history of the tiny planet

Distorting, or unwrapping, a spherical image into a flat plane isn’t a new concept. Ever since humans have been designing maps, we invented a multitude of map projections to represent our world.

Over time, those standard map projections have made their way into our design softwares. Back in 2008, photographers discovered when you use the Photoshop filter called Polar Coordinates, it could transform your panoramic photographs into a magical, new world. These photos were named polar photographs or spherical panoramas. A simple Google search shows how commonplace the effect has become.

Results from a Google search for “polar photograph”.

It wasn’t until eight years later that someone figured out how to do this with video, and it definitely was not an easy process.

Vimeo Staff Pick filmmaker Jonas Ginter, released the first spherical panoramic video. Ginter strapped together 6 GoPro cameras to record in 360 degrees. The video seems to defy the laws of reality, and easily grabbed the world’s attention which now has 2.6M plays on Vimeo. WIRED wrote a story on Ginter’s time-lapse and, from what I can tell, coined the phrase “Tiny Planet”.

Unfortunately, Ginter doesn’t describe exactly how he converted his 360 footage into a tiny planet, but it’s clear it was not easy.

How to turn a 360 video into a tiny planet

Now that I had grasped the fundamentals of how tiny planets are created, I wanted to re-encode any Vimeo 360 video as a tiny planet — and I gave myself single restriction: to auto-generate a tiny planet with just a link to a Vimeo video. Why? It’s a huge time suck to download every 360 video and load them one-by-one, into something like GoPro’s VR Premiere plugin to preview.

The only way I could think to do something like that easily is to leverage Unity and the Vimeo Unity SDK.

Unity is best known as a game development platform, but as I have started to dive deep into the platform, it’s capable of so much more. Unity’s flexibility, combined with the fact that Unity is 100% free for beginners, students, and hobbyists, I realized that this is the perfect opportunity to transform a game platform into a video importer, encoder, and exporter — or put more simply, I turned it into a Tiny Planet generator.

In just a few steps, you can convert all your 360 videos into tiny planets. Before we begin, a couple of notes:

1. Open Unity

Once it’s open, you’ll be asked to create a new project. Call it Tiny Planet, use the 3D template, and click Create project.

2. Playing a 360 video inside Unity

There are a couple ways of playing video in Unity: you can either import the video into your Unity project or stream it straight from Vimeo.

Since my 360 videos are already on Vimeo, I leveraged the Vimeo Unity SDK. Per the installation instructions, download the .unitypackage file, open it up, and import it into your blank Unity scene.

In the left-hand hierarchy panel, right-click an empty space and select Video > Vimeo Player (360). This will import a 360-ready sphere into your scene.

Afterward, select the VimeoPlayer360 object in the hierarchy panel. The Vimeo Player panel appears in the right-hand inspector. Sign into your Vimeo account by clicking Get token. After you authorize Unity with Vimeo, copy the token, paste it into the Vimeo Token field, and click Sign into Vimeo.

Some new options appear. The only thing you need to do is to paste in the URL of your Vimeo video.

Next, select the Main Camera in the hierarchy. In the right-hand inspector, you get some new properties. Under Transform, set the X, Y, and Z positions all to zero. Under Camera, change Clear Flags to Solid Color.

Click the play button at the top, and you should now see your video streaming inside Unity!

Note: I manually moved the Game tab so that I could see both the editor view on the left and the game view on the right.

3. Augmenting the camera perspective

It’s tiny planet time! Essentially, we need to re-shoot the 360 footage through a virtual camera, but from a new perspective.

Unity’s camera system makes this effect super simple to do. By default, the camera should be in the center of the sphere and facing forward. Select the Main Camera, and press E on the keyboard so you can rotate the camera. When you rotate the camera, you’ll see how it behaves just like a regular 360 video (psst, this is how all 360 videos are set up).

If you don’t see your camera on the left, press F on your keyboard to center it on the screen.

When you start moving the camera around and playing with its field of view, you’ll see how you can easily distort the video.

  • You’ll need to rotate the camera so it’s facing the bottom of the sphere (again, press E to rotate). Or just set the rotation of the X-axis in the inspector to 90.
  • Move the camera to the top of the sphere (press W to use the Move tool).
  • Change the Field of View slider in the inspector to around 120–130 degrees.

That’s it! Feel free to play around with the camera some more and adjust to your liking.

4. Recording and uploading to Vimeo

Now all you have to do is record what the camera sees in the Game view. Fortunately, the Vimeo Unity SDK comes with the ability to record and upload video.

Right-click in the hierarchy and add Video > Vimeo Recorder to your scene. You should now see VimeoRecorder in your scene hierarchy. Select it and sign into your Vimeo account.

At this point, you might be tempted just to record! But here is where things get complicated. Since we are streaming video into Unity, we have to somehow guarantee that every frame of the video being streamed is synchronized with the way we capture and record each frame. Otherwise, we would end up with a video that looks choppy because it is skipping frames.

I had to write a little extra code to make this happen. Download SyncRecordAndPlayer.cs to your Unity project. Attach this script to the VimeoRecorder component. You need to assign the recorder and vimeoPlayer attributes to the corresponding components.

This script automatically synchronizes the streaming and capture once you click the play button in Unity. It records the entire video from beginning to end, but you can also manually end the recording early if you don’t want to capture the whole video.

Bonus: enhance!

Since we are using a game engine, why not take advantage of some of its features? This opens the doors to achieving a lot more than just doing a raw capture of the original 360 video.

I decided to write a script that would animate the camera to create a more engaging, visual effect when watching a tiny planet-ified video.

When you attach this script to the Main Camera, it just animates the camera up and down on the Y-axis, the field of view, and the rotation of the camera. You can tweak the camera settings in the Unity Editor to your liking.

A demonstration of the camera animation in Unity

If you go back and watch Tiny Universe, you can see this effect in play throughout the video.

Caveats

If you’re obsessed with high-quality video even in the slightest, you will quickly find that Unity’s native encoder isn’t going to cut it. Unity only lets you set Low, Medium, or High for the output bitrate, but it doesn’t tell you what that means beyond what’s written in their documentation.

Fortunately, there are a lot of great alternative encoders in the Unity Asset Store that are so much better. One encoder that stood out to me was AVPro Movie Capture. It costs money, but it does so much more than what Unity does out of the box.

I also found out about their other plugin, AVPro Video, which does video playback better than Unity’s native video player. In fact, it even supports adaptive video, which means you could hypothetically use Vimeo Livestream to stream videos into Unity.

My only concern about swapping to entirely new video player and encoder was the synchronization issue that I mentioned earlier and solved with SyncRecorderAndPlayer.cs. Fortunately, AVProVideo.MediaPlayer has a key line of code:

Commenting in this line in will automatically sync video playback and capture to the Unity’s frame rate — a much more elegant solution!

Through my work on Tiny Universe, I ended up adding support for AVPro’s plugins. So, if you want high-quality output, the Vimeo Unity SDK is now compatible with AVPro.

Alternative approach

If you want to skip the whole Unity route or just want to quickly preview your own 360 video as a tiny planet, you can leverage the advanced 360 settings on your Vimeo video.

Adjust the pitch, yaw, and field of view straight from your settings. When we were writing this blog post, Vimeo forced all 360 videos to have a max 90 degree field of view. So we changed it! Now with a simple settings adjustment, you can view your tiny planet by increasing the field of view past 90 degrees.

Adjusting your video settings. Note: this approach won’t produce the same video quality as you would with Unity

What’s next?

Looking at the final product, I could have probably achieved a pretty similar result with GoPro’s VR plugin for Adobe Premiere, just with a lot more manual keyframing and animation.

However, simultaneous video streaming and recording with Unity is pretty exciting since it turns a gaming engine into a cloud video encoder. It’s just the start of what is possible.

If you’re working on an exciting project, want to comment, or just want to talk, send us an email at labs@vimeo.com.

P.S. Thanks to a new Vimeo feature, I collected all the 360 work featured in Tiny Universe and organized them into the embedded playlist below.

Many, many thanks to Uncle Skeleton, Julius Horsthuis, Christian Mülhauser, Julian Glander, Jeron Braxton, Josh Gansalves, Dirk Koy, New Media Ltd, and Universal Everything for allowing me to remix their beautiful work.