Here is a video which illustrates some of the capabilities in Base Rig
Cinemachine is a modular suite of camera tools for Unity which give AAA game quality controls for every camera in your project. It’s an easy to install plugin which lets you add functionality to cameras you’ve already got, or make new ones with amazing behaviors.
The modular system allows you to combine elements and build smart rigs for everything from procedural gameplay cameras all the way to completely fixed hand animated cutscenes, and everything in-between.
The heart of Cinemachine is Base Rig. Base Rig sets up a virtual camera system inside Unity and holds the data for how each camera will blend together. The virtual cameras allow for Cinemachine to have multiple cameras running and in a priority stack, with the blended results being fed to the main Unity camera for rendering.
Cinemachine also supports an environment where you can switch between different render settings, postFX, culling masks – or any other component on a camera. Keep the configuration of the main camera as-is and just animate it, or switch between different postFX on a shot by shot basis. The system is light when you don’t need it, yet the architecture is ready for when you do.
A short overview of Cinemachine, Timeline and the Post Processing Stack with gameplay -> cutscene -> gameplay transitions
Siggraph 2017, a more in-depth demo of Cinemachine features.
Composer tracks animated objects using screen-space composition controls. It ‘sees’ the action and shoots it based on your direction. It takes your entire 3D world and flattens it onto the screen of each camera so you can define how the shot will be composed in screen space. Compose something with the rule-of-thirds? No problem, no matter if the subject is close or far away or rapidly approaching. Did an animation change or a vehicle speed get updated in the latest build? No worry, Cinemachine Composer will still get a beautiful shot without you having to do a thing.
Note: Frame-rate issues here are due to web-sized gif images. It’s butter smooth in Unity
Real-time composition. Set where on screen you want your target to look at and no matter what it does, that’s where it will be on screen.
Even if you zoom (change FOV), Composer still keeps it right where you want on screen
Composition soft and hard limits. You can set the amount of damping on Composer with separate horizontal and vertical controls. The camera will lag and the target will ‘squish’ into the blue soft limits but not pass the red hard limits.
Damping set to 0.5 in vertical and horizontal. Notice the target ‘squishes’ into the blue area. The higher the velocity the more the camera will lag behind, or have the target push into the blue area. Real-life camera operators don’t often know exactly what the subject will do, so a little lag makes your camera a much more realistic and believable window to your world.
Damping set to 2.0, note the target ‘squishes’ into the blue soft limits a lot more, but will never pass the red hard limits
Set where on screen you want your subject. Composer lets you place your subject exactly where you want on-screen. You can animate the composition settings or blend between cameras with different Composer settings to move your subject around the screen
Composer Dead Zone. You can set the composer to have a ‘dead zone’ where it ignores all movement within it. It can be square or rectangular in any horizontal or vertical ratio, anywhere on the screen. An essential feature in creating smooth, believable camera action is to disregard small movements, such as animation cycles, small intentional target movements or even physics jitters.
Composer works when moving the camera. Since Composer only updates camera orientation or rotation, it works on top of wherever the camera is. This allows powerful setups where you can hand animate the camera position but have Cinemachine procedurally take care of the aiming and composition. For an even more powerful camera, you can use Cinemachine Transposer to animate the camera position, and Composer for the orientation, creating a super-procedural camera setup.
Animating Composers to move the subject around the screen. By blending multiple cameras together, you can move subjects around the screen for variable compositions. In the below example, the lander aircraft flies in on the left of the screen, and flies out on the right of the screen. This shot was setup really quickly by duplicating the camera and adjusting shot A to have a left composition and shot B to have a right composition. Simply turn on shot B halfway through and you’ll get a blended composition shot.
Note the last two videos have different colours for the screen guides. You can set the debug overlay colours and target icon size in the Cinemachine preferences.
Cinemachine comes with a handful of noise presets of different types to get you going. We’ve made procedural Noise be a built-in option on every camera because it can add so much life and believability to your shots. Noise can be time consuming to hand animate and real keyed noise is heavy data wise, doesn’t loop and is difficult to scale in real-time. Procedural noise solves avoids all those issues, is fast to setup and it blends and scales with ease. If you blend between two cameras with Noise, it will also blend seamlessly.
Checkout the documentation for more information on Noise
Blender / State machine / Priority
Cinemachine sets up a virtual camera environment in Unity and it lets you define how any two cameras will blend into each other. This works for the blending of multiple shots through a cinematic sequence, for in-game in a state machine setups or in replay type scenarios.
Create any number of virtual cameras. Then select the AUTOGEN_CinemachineRuntime object in the root. The contains the blend array which defines how any two cameras blend together. In a state machine setup, you can have game events simply turn on a camera and if it is the same or higher priority, that new camera will be cut or blended to. If you’ve defined a specific blend it will use that one, if not it will use the default blend. It also supports wildcards so you can define a specific blend from any camera to another
This arrangement allows you to setup complex sophisticated camera state machine systems incredibly quickly !
Below is an example state machine blender setup where unique cameras are set for different game states. Define how long a seamless blend goes from say an Explore camera to a Combat_minor. Want to cut to a particular camera during a certain event? It’s easy. Build large sophisticated camera arrays and simply turn on the appropriate camera based on the game event.
Every camera blend gets a custom curve. Give it any shape and duration you desire.
Don’t want a blend but instead a cut? No problem, just delete the key. This curve is a cut.
While incredibly simple, Cinemachine Blender and Priority let you create complex refined state machine systems linking to animations or gameplay events or trigger volumes in the word, in record time. It’s very powerful and built into Cinemachine Base Rig.
Plugin: Game Rig
Game Rig is a COMING SOON plugin for Cinemachine which provides additional modules for specific in-game camera controls. Game Rig does not work on its own, it is an addition to Cinemachine Base Rig and sold separately. It is currently still in development and will be released in August 2016.
- Reactor the ultimate driving, flight sim or chase camera system. A Predecessor was used on the Need For Speed series.
- Cloud choose the best camera based on its shot. Great for crash sequences and replays. Cameras stuck behind objects won’t be called.
- Free-look sophisticated 3rd person ‘orbit’ camera system. The most sophisticated 3rd person action adventure camera orbit rig.
- Collider a proven camera collision system. Camera collisions are frustrating and difficult. Collider uses a number of components to ensure your camera stays in the action and doesn’t act irresponsibly. Predecessors to Collider has been used on numerous games and has been in constant design and improvement over many years.
The Cinemachine modules have been designed, deployed, tuned, improved, iterated on, redesigned and refined over and over again on multiple AAA projects spanning years. They’re simple, light, endlessly configurable and provide beautiful results.