For those I’ve not chatted with, I’m Marc, Product Manager for Cinemachine.
While we always value your thoughts on the future of Cinemachine, I thought I’d create this thread as an explicit place to brainstorm on ideas. I tend to think Cinemachine is already very powerful, but perhaps you have ideas how it could be even more powerful. I also tend to think, based on all the posts in this forum, that it could be easier to learn and use. Am I right or wrong?
So what ideas do you have? How can we improve the tools? Here are a couple ideas some people have given me to get us started:
I’d like to be able to navigate directly through a camera’s “viewfinder” so I can set a shot just where I want it.
I’d like to be able to use a visual scripting tool to map/blend game variables to camera behavior.
I’d like Cinemachine to support real-world lenses and/or camera rigs in order to match my Cinemachine cameras with real world equipment (for virtual production).
I’d like more/better samples (or tutorials) to get me closer to the setups that I’ll use in my project.
Let me know what you think. We really want you to help us guide our future.
UPDATE: May 2022
We now invite you to bring any ideas you have to our new PRODUCT ROADMAP. You’ll find stuff we’re working on, stuff we’re considering, and even a place to suggest ideas we hadn’t yet considered!
Node based version of Cinemachine is pretty much my most wanted feature. Current version is very limited if you want more complex behaviour that is out of scope of single cinemachine component. For example if you want hard lookAt and pov at the same time. And you cant use cinemachine mixing camera for this because it doesn’t have additive blending(if you set same mixing weights for both cameras you will get each camera behaving in half power)
Thanks both @Onigiri and @merpheus for the suggestions. They’ve been logged to my list of ideas to consider.
@merpheus could I ask you to give me a bit more detail? What specifically about Camera Cuts is better for you and will improve your workflow? You can of course achieve the same end result in Unity today, but what I hear you say is that this other approach is better. To help me understand the suggestion, please tell me what problem you experience in Unity today that this solves for you. (e.g., “I waste too much time doing X”, or “In the current approach, I can’t properly understand Y”).
Yes! By camera cuts, I am referring to camera perspective previews btw. So this is more of a QoL feature than a functional one. If I have a bunch of cameras, transitions, or actions during a cutscene, I have trouble following it without rolling back and forth by hand all the time. There are occasions where you are working on a very specific part of a sequence and you have a rather long cutscene. Then if you wanna check something(perhaps the position of camera2 at the middle of the sequence(not the last position), you need to leave the current part you are working on, roll back all the way to camera2’s perspective and then come back.
There are many little occasions as such so that increases the time to setup your cutscene. Having a Camera Cuts type of preview/cinemachine snapshot track can speed up the development and contribute greatly to creative process since it would work like a storyboard this way.
Cinemachine’s weaknesses are not really in that it lacks behaviors that make it like a real camera, and indeed it works pretty well for cutscenes. Where it breaks down is trying to use a virtual camera for game logic.
To be honest I just want more documentation, and more APIs. Right now it is kind of a pain to program for, but necessary to program for if it doesn’t fit your need exactly.
I find the microsite and extension development to be very cryptic compared to the core unity documentation on the main site, which is generally of very high quality and has plenty of examples. It is difficult to get on board with Cinemachine when every time it doesn’t fit exactly in your use case it’s really hard to figure out how to plug into it, and it also makes it difficult for community plugins that patch any shortcomings of Unity’s built-ins to pop up. If I can’t get the Cinemachine brain to behave by tweaking the inspector my only recourse is code.
The bits and pieces are documented, but what I really need are examples to show me where I can plug in, and I need an overview diagram showing how the pieces fit together. Right now it is too difficult to know if a value is something you shouldn’t touch or might get overwritten by some change in the next frame, so it needs to be much clearer how data flows through cinemachine’s internal state into the final non virtual camera puppeteered by the brain. Otherwise you just have to intercept and alter values until you get the behavior you want and hop there isn’t a case where that breaks.
Here is a list of some things that I ran into trouble with (some still unresolved. I had to fight with it which is discouraging my adoption:
Increase heading re-centering speed when player is walking.
Fight with mouselook orientation, because there are no helpers for transforming its orientation coordinates ( I can reposition and teleport the virtual camera, but if I try to copy the orientation them mouselook camera vcam is overwritten by the x and y axis values.)
Calculate transition time based on virtual camera distance, so the camera moves at a “fixed speed” but actually I’m just changing the animation speed.
The mouselook makes no sense in world coordinate binding unless wrap is on and limits are -180 to 180, even if I actually want to restrict the camera cone. The limits only make sense when locked to target (no roll), which I kind of understand, but also this breaks the example camera relative movement logic in the 3DGameKit , and I have no idea why, because this page is very unhelpful in explaining exactly what those modes mean, and how it will affect camera relative logic. If you disable wrapping and limit from -90 to 90, then the orbit seems to be around an arbitrary heading that changes. Enum CinemachineTransposer.BindingMode | Package Manager UI website
Also some of the main advantages of using a Cinemachine aren’t watertight enough which almost make me feeling like just using a Unity5 standard assets camera script and dropping some simple physics logic in it. In particular I thought it would have nice physics bumper obstacle avoidance.
I have opened a specific bug/feature request about Cinemachine’s obstacle avoidance.
Hello, I would really like to have a feature for fading objects close to camera.
I use FreeLook camera and Cinemachine Collider component. Only for basic layers, like terrain or walls, to prevent too much camera moving forward/backwards (which is a bit annoying from player’s perspectives). But it doesn’t look extra nice if player see inside of NPC’s head and similar stuff when moves camera through I guess it would be nice feature for all sorts of games.
Hello!
Currently I am shooting a virtual event in AltspaceVR.
As a virtual operator, Right now, “an integrated smart system” of all CM components in play mode is crucial for me.
That would be great if there are some quick system that controls several CM systems in real time via UI button or hardware buttons in play mode.
So then, I will be a main director of several handmade virtual smart operators:)
On the other hand, I think it’s time to bring CM to VR as well.
Since it’s easy to feel any CM camera view angle inside VR.
How about a full on gameplay example for a third person game? The current suite of samples are too simple, and such a project would help you guys dogfood cinemachine for gameplay.
For example: a 3rd person camera rig that supports:
ADS/shooting
Camera colliders
Zone based camera framings (i.e. standard, wide, and narrow spaces)
Traversal event cam
Three point interest cam like the boss cam sample (e.g. temporary cinematic framing, but one that doesn’t spin out when you get too close)
@SolarianZ “Complete current or incoming blend immediately” is implemented and will be in the next release of CM.
“Complete current damp immediately” can be accomplished in the current CM version by setting vcam.PreviousStateIsValid = false.