That’s the cleanest solution so far! The end shots are right and the transition is clean and smooth… BUT, the camera rotation from eye level to birds eye is quite abrupt at the outset. This is something the dolly cam was starting to help address (I know it looked straight in the distant screen shot, but there was a bit of a flat ramp out close to the ground).
I tried a couple things to influence the virtual camera blend… layering some camera animation on the eye level cam with the transition between cams, but wasn’t quite able to get the effect I was looking for. I also tried turning off ‘center on activate’ on the far cam and playing with aim properties, but wasn’t able to get the camera to stop immediately turning its focus downward directly at the follow target… so figured that wasn’t the right tool for the job.
Show me the inspectors for the near and var vcams that are transitioning.
Also can you post a little video or gif of the result you’re getting - just the blend, no extra animation please.
ok, read what I could find about custom blend assets and set one up on my main camera. It doesn’t look like it’s having any effect on the blend in the timeline and playing the scene doesn’t seem to trigger it either. What am I missing?
ahh… you’re using timeline. Timeline controls its own blending, overriding the Brain settings (which makes sense, when you think about it). Brain settings (which you seem to have set up correctly) take effect when triggering a blend outside of timeline by activating a new vcam.
To change the way the timeline clips blend into each other when they overlap, click on the clip in timeline and look at the top part of the inspector:
Thanks again, G. I truly appreciate all your help.
As you may have gathered, I fall more onto the artist side than the engineering side of things Timelines make more sense to me than activating a second vcam through script. So I tried playing with the blend curves on the cinemachine shots in the timeline, but wasn’t seeing them effect the movement much. (I set ‘out’ on the first clip to ‘ease out’ and ‘in’ on the second clip to ‘ease out’ and then to ‘linear’, but really didn’t see much change in the motion. Transition too fast maybe?)
Here’s a quick vid showing where I am at this point. First it shows the shot using the vcam blending in the timeline. Second it shows the shot using the dolly track and flipping over to ortho cam at the end. If I can hide it with fx and other things going on in the scene (we have a character pop in at this point), I will likely go with the latter solution (spending a bit more time fine tuning the dolly track tangents) because I think the camera movement is much nicer (the difference is a bit more pronounced in the fully deco-ed scene)
Sorry about the thread necromancy, but I am also trying to solve this problem.
I initially set up two virtual cameras, using a FOV of 1 and distance of 916 on the perspective camera to simulate an ortho camera height of ~8. The problem is that the transition starts or ends with a huge jump, depending on which direction I am going.
I found this thread, and downloaded the demo package. The transition there also ends with a jump/zoom once the view reaches the overhead position. Also, the camera completely loses its mind if the character moves toward it.
Any thoughts on what I need to look at? I am using Unity 2021.1.20f1 and Cinemachine 2.7.8.
Edit: I think it might be the field-of-view and distance for the fake orthographic camera, but I don’t know why the project would work in your gif, but have that jump in it when I run it, locally. I am going to try setting all those values from scratch.
The pop is there because in the latest CM version the switch of the main camera from perspective to ortho is no longer working. For some reason the camera stays in perspective mode. Looking into it.
So the custom script that switched the main camera from perspective to ortho was depending on something in CM that has changed. Since the introduction of the CM vcam Lens Mode Override feature, that custom script is no longer needed. Here is an updated version of the demo that works properly with the latest CM. It works in both Play Mode and Timeline Preview mode, and thanks to the Lens Mode Override feature you can do it all with one main camera and one CM Brain.
Thanks @SpaceAce for bringing this to our attention.
Thank you for the project example. May I ask a couple of questions.
I am trying to make a navigation cube, similar to one in Unity. When you click on a side of it camera will transition to front or side view. Plus you can change perspective to orthographic.
Your example works, but it has this strange jump at the end. Is there a way to fix it?
Currently I have one virtual camera per view (front, back, right, left, top and perspective) I blend between each using priority in the script and trigger it with a button.
I got two problems:
For example I blend from perspective view to back view. At the end when the camera at the back I need to switch it to orthographic. Could you please explain how to use LensSettings.OverrideModes?
So now camera at the back, if I bland it with camera at the front it will go through the object which looks strange. Is there a way to keep camera at some distance from the target?
@Artpen What pop are you talking about? When I install the above example in a new Unity project with CM 2.8.4, I don’t get much of a pop. There is a subtle artifact where you can see the quality of the light and shadows change a little. Is that what you’re talking about?
For your other questions:
If you set a lens mode override in one vcam, you’ll have to use override in all of them. To use it, you have to open the “Advanced” section of the vcam lens, as illustrated here:
Here is a wee script to be attached to each button. Nothing special but works.
Only the pop is a problem
public class BlendViews : MonoBehaviour
{
public CinemachineVirtualCamera perspective;
public CinemachineVirtualCamera frontView;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void FrontBlend()
{
frontView.Priority = 1;
perspective.Priority = 0;
}
public void PerspectiveBlend()
{
frontView.Priority = 0;
perspective.Priority = 1;
}
}