Cinemachine 3.1.5 is now available

This is mainly a bugfix patch release, but we have also included a couple of new samples scenes.

Bugfixes

  • Correct blend time was not always used when backing out of a blend-in-progress.
  • CinemachineVolumeSettings: changes to Focal Length and Aperture settings were not being applied while auto-focus was enabled.
  • InheritPosition was not inheriting the camera position in all cases.
  • Rotation Composer damping was not being applied when the Orbital Follow’s Binding Mode was Lazy Follow.
  • GroupFraming extension did not respect PreviousStateIsValid flag, so could not be reset dynamically.
  • When blending between a 3rdPerson camera without a look-at target and a camera with a look-at target, the blend was incorrect.
  • ForceCameraPosition was not working properly for LazyFollow cameras.
  • Teleporting a camera with a nonzero Target Offset was not smooth.
  • Exceptions were sometimes generated when an OrbitalFollow component was deleted.
  • Input Axis Controller was losing user input after a play-mode domain reload.
  • Input Axis Controller was not always reading composite actions correctly.
  • CinemachineConfiner2D.BakeBoundingShape() was leaving confiner with a not-fully-baked shape.

Added

  • Added new Portals sample scene to illustrate camera teleportation.
  • Added PerspectiveToOrthoCustomBlend sample scene to illustrate a customized blend algorithm.
  • Added CinemachineConfiner2D.CameraWasDisplaced() and CinemachineConfiner2D.GetCameraDisplacementDistance() methods.
  • Added InputAxisControllerBase.GetController(string name) method, to conveniently fetch an Input Controller having a specific name.
  • Added InputAxisControllerBase.TriggerRecentering(string name) to trigger recentering of an axis having a specific name.
  • Added “Recenter” button to input axis inspector, to immediately center the axis.

Changed

  • Input Axis recentering only operates when the game is playing.

If you are currently using Cinemachine 2.X:

Please note that not everybody using Cinemachine 2.X needs to upgrade. We will continue to support CM2 for some time. The latest CM2 update is here .

Before upgrading to Cinemachine 3, check if you have custom scripts that make significant use of the Cinemachine API. If so, it may be better to stick with previous versions. And, although we provide a tool to convert project data, there is currently no automated way to migrate code. The Unity API updater can’t take care of all the API changes, so this will require a manual upgrade.

If you are using Cinemachine “out of the box” without any custom scripting using its API, the upgrade process will be relatively easy.

Resources

For more information, please have a look at:

Requirements

  • The recommended version is Unity 6.
  • The minimum required Unity version is 2022.3.

Getting started

  • Open a new project through the hub
  • Go to Window > Package Manager
  • Search for Cinemachine in the Unity registry
  • In the version history select 3.1.5
6 Likes

I am getting this Error Message on this update. My Unity Version : 6000.0.60f1

Library\PackageCache\com.unity.cinemachine@5342685532bb\Runtime\PostProcessing\CinemachineVolumeSettings.cs(213,64): error CS1061: ‘DepthOfField’ does not contain a definition for ‘focalLength’ and no accessible extension method ‘focalLength’ accepting a first argument of type ‘DepthOfField’ could be found (are you missing a using directive or an assembly reference?)

2 Likes

Try a re-import all. Do you still get the error afterwards?

Unfortunately, re-importing did not fix it.

2 Likes

In that case, I suggest you report a bug using Help > Report a bug.

1 Like

Hi.

I’m encountering an issue with TriggerRecentering() both on the AxisController component and Orbital Follow component.
The recenter trigger works but it’s ignoring the recentering target. It always uses the Axis center.

I want to trigger a recenter using parent object but it’s not possible. It always uses axis center.

I know I can enable recenter and set wait time to 0 as a workaround but that’s very clunky when we could just use a method.

@Mechano_unity I suggest you report a bug using Help > Report a bug.

Putting this here for more info on anyone else searching for this

I found that CINEMACHINE_URP and CINEMACHINE_HDRP were defined in 3.1.5
I forced URP to false and everything was at least happy.

This is on line 209 of CinemachineVolumeSettings.cs This is in the library folder.

#if false //CINEMACHINE_URP
if (profile.TryGet(out DepthOfField srcDof))
{
dof.aperture.value = srcDof.aperture.value;
dof.focalLength.value = srcDof.focalLength.value;
}
#endif

Reimporting or deleting library doesn’t seem to work
I manage the project with git so I deleted and recloned it to rebuild all generated files. Still nothing.

Downgrading to 3.1.4 does work.

It seems both
CINEMACHINE_HDRP
CINEMACHINE_URP
are not defined in 3.1.4 but are in 3.1.5. This means in 3.1.4 the entire script doesn’t compile as there’s conditional compilation wrapping the entire thing

For now I’m just downgrading.

5 Likes

Bugfix update or not, it stopped my cinemachine camera setup from working as before…
Using HDRP, virtual camera with Third Person Follow and Hard Look At
I briefly scrolled through changelog but couldn’t figure out what’s wrong (no errors)

Have people reported the bugs as suggested? Has there been any progress?

The issue is that CM 3.1.5 does not support URP and HDRP being both installed at the same time (3.1.4 did support it). This has been reported and fixed in the source.

However, it does beg a question: why do you have both HDRP and URP installed simultaneously?

We want to sometimes make builds that have URP and other times make them with HDRP, so we have both in the project and switch to the appropriate one at build time. That is why we have both in the project.

The main issue I’m trying to tackle right now is that for Unity 6000.0.48f1 and later, when we load an asset bundle that was made in HDRP but converted to URP at runtime, then start our code in the scene that uses cinemachine, it causes our UIToolkit items to stop rendering and instead show unrendered space (that fills with whatever was last on screen) where the UI should be.

I’m still trying to figure out what exactly in Cinemachine causes this issue so that I can write a more directed report, but in the meantime I was wondering if you experienced any situation in testing for Unity 6 where UIToolkit items failed to render.

1 Like

I can’t imagine why CM would impact UITK. We’ve never seen anything like that.

Hello! I’m using Cinemachine to track several targets and stay confined to the playable area.
I was unable to setup the camera they way I want with GroupFraming and Confinter3D. Mainly because 3d confinter requires a collider and I want to restrict camera movement only by the 2D arena size while being able to zoom-in/out when there are many targets. Basically this is an RTS isometric camera which can move forward/backwards to the target position.
Anyway, I crafted my own CinemachineExtension which fits my need. I just set CinemachinePositionComposer’s CameraDistance to the desired value and it worked fine in 3.1.2. I guess something changed in 3.1.5 (or in earlier versions). Now damping is not applied when I set CameraDistance and camera instantly snaps to that distance.
Is there a way to restore/enable damping for the CameraDistance?

Damping is only supposed to happen in response to positional/rotational changes of the targets, not to parameter changes inside the camera, so the behaviour in 3.1.2 was incorrect.

Unfortunately you were relying on a bug in Cinemachine 3.1.2 which has been fixed in more recent versions. If you want to change the camera settings in a damped way, use SmoothDamp or some such technique to change the setting gradually.

1 Like

thank you, it helped!