ven
June 27, 2024, 11:24am
1
Hello, new to godot and I’m trying to make the camera lerp smoother but it’s giving me unintended results

This is what it looks like without me lerping it at all and directly setting it

```
cam.rotation = Vector3(deg_to_rad(rotation[0]), deg_to_rad(rotation[1]), deg_to_rad(rotation[2]))
```

What it looks like when I try to lerp

```
cam.rotation = cam.rotation.lerp(Vector3(deg_to_rad(rotation[0]), deg_to_rad(rotation[1]), deg_to_rad(rotation[2])), delta * self.SPEED)
```

ven
June 27, 2024, 11:29am
3
Alright could you help me set that up the rotation in Godot is weird, also could you maybe expain why it’s doing that in the first place?

Like it works on the docs

Lerp isn’t as useful for angles, that isn’t for angles but for a position in the example

You could try `slerp`

instead, but better to use a quaternion, check the documentation, you’d probably use Euler angle constrictor for it

ven
June 27, 2024, 12:44pm
5
Finally, figured it out and it was easier and I should’ve known this would work so basically you have like construct a new rotation and then use `lerp_angle`

for each axis and it works PERFECTLY! No need for Quaternions whatever the hell those are

```
var targetRotation = Vector3(deg_to_rad(rotation[0]), deg_to_rad(rotation[1]), deg_to_rad(rotation[2]))
var lerpedRotation = Vector3(
lerp_angle(cam.rotation.x, targetRotation.x, delta * SPEED),
lerp_angle(cam.rotation.y, targetRotation.y, delta * SPEED),
lerp_angle(cam.rotation.z, targetRotation.z, delta * SPEED)
)
cam.rotation = lerpedRotation
```

1 Like