# Camera Perspective Tool

**URL:** <https://blenderartists.org/t/camera-perspective-tool/699982>\
**Category:** Released Add-ons and Extensions\
**Tags:** add-ons, commercial\
**Created:** [December 11, 2017, 4:37pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982 "2017-12-11T16:37:08Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [December 11, 2017, 4:37pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/1 "2017-12-11T16:37:08Z")

</div>

![Blender_Dolly_Zoom_Navigation](https://blenderartists.org/uploads/default/original/4X/4/3/4/434ff260cf35430004f9557d3e1d244ca3615804.gif)

This is a modal tool for changing your camera lens angle while keeping it steady in place.

- Great for aligning the scene to camera background images (e.g. matching perspective from reference images, for modeling).
- Also for animation and stills, trying different FOVs quickly without having to move the camera all the time. Find that **perfect dramatic framing** super quick.

Get it on Gumroad or BlenderMarket:

> **[Dolly Zoom & Truck Shift](https://blendermarket.com/products/dolly-zoom--truck-shift)**
>
> An easy-to-use tool for adjusting your camera lens when using background images or creating perspective effects

> **[\[Blender\] Dolly Zoom & Truck Shift navigation](https://rafaelnavega.gumroad.com/l/dolly_zoom_truck_shift)**
>
> This is an add-on for Blender 3.x and 2.x.It's a modal tool that lets you change the angle and shift of your camera lens while keeping it focused on the 3D cursor.Use this to align your camera with background images (when modeling with reference) or...

Thanks!

---

<div class="post-metadata">

**Author:** ![CDMJ](https://blenderartists.org/user_avatar/blenderartists.org/cdmj/32/1257813_2.png) [@CDMJ](https://blenderartists.org/u/CDMJ)\
**Post date:** [December 12, 2017, 5:40am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/2 "2017-12-12T05:40:50Z")

</div>

Wow, this is very useful in a lot of ways!

---

<div class="post-metadata">

**Author:** ![wilBr](https://blenderartists.org/user_avatar/blenderartists.org/wilbr/32/810837_2.png) [@wilBr](https://blenderartists.org/u/wilBr)\
**Post date:** [December 12, 2017, 6:00am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/3 "2017-12-12T06:00:24Z")

</div>

very useful… thank you

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [December 12, 2017, 2:07pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/4 "2017-12-12T14:07:53Z")

</div>

Thanks guys. If you have any questions please let me know.

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [January 18, 2018, 5:55pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/5 "2018-01-18T17:55:28Z")

</div>

![dollyzoom_truckshift_demo](https://blenderartists.org/uploads/default/original/4X/7/7/f/77f2a8ed8c1785703e9221724c9271bc7ffff282.gif)

I added a new feature to this addon: truck-shift (it’s a made-up name!).  
It lets you change the lens shift of your camera while it automatically trucks to keep the 3D cursor in place on screen. It’s great for aligning the view to some particular perspective images or objects.

You can get the addon in the Gumroad page, but if you already have it then you should receive a message containing the updated version.

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [August 29, 2018, 5:28pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/6 "2018-08-29T17:28:27Z")

</div>

I updated this to version 1.1.1.  
You can still get it on Gumroad: [https://gum.co/dolly\_zoom\_truck\_shift](https://gum.co/dolly_zoom_truck_shift)

This update added much needed header text information, telling you what mode you’re in and what keys you can press, just like the native Blender tools already do.  
I feel it’s better this way, less stuff to memorize (see the header at the bottom):

![](https://blenderartists.org/uploads/default/original/4X/c/b/b/cbb08c3780f43b9998eb2ecd3cb551d8030f099d.gif)

---

<div class="post-metadata">

**Author:** ![BD3D](https://blenderartists.org/user_avatar/blenderartists.org/bd3d/32/900236_2.png) [@BD3D](https://blenderartists.org/u/BD3D)\
**Post date:** [February 23, 2019, 9:18pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/7 "2019-02-23T21:18:06Z")

</div>

hello, just purchase your addon, i really like the fact that you add a dolly view its amazing:

but will you update it into 2.8 ?  
i modified the version but i got an error at the line 305

```auto
line 305, in invoke
    localCursor = cam.matrix_world.inverted() * context.scene.cursor_location
TypeError: Element-wise multiplication: not supported between 'Matrix' and 'Vector' types

```

i tried to fix it myself but im new to code and its way too much high level for me right now

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [February 26, 2019, 2:16am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/8 "2019-02-26T02:16:59Z")

</div>

Hi @BD3D, thanks for the support.  
I just sent a Gumroad update email with two editions, one for 2.79 and another for 2.80.

There are a few changes to the API – for instance, matrix vs. vector multiplication [now uses the @ operator](https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API#Matrix_Multiplication) instead of the asterisk operator.

Anyway, good luck.

---

<div class="post-metadata">

**Author:** ![kkar](https://blenderartists.org/user_avatar/blenderartists.org/kkar/32/1098492_2.png) [@kkar](https://blenderartists.org/u/kkar)\
**Post date:** [February 26, 2019, 4:13am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/9 "2019-02-26T04:13:23Z")

</div>

Really nice idea, seems to be well implemented. I do not need it at the moment but soemthing to keep in mind for sure.

---

<div class="post-metadata">

**Author:** ![Botoni](https://blenderartists.org/letter_avatar_proxy/v4/letter/b/e9c0ed/32.png) [@Botoni](https://blenderartists.org/u/Botoni)\
**Post date:** [March 8, 2019, 12:04pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/10 "2019-03-08T12:04:15Z")

</div>

Hi! Awesome addon, got it a few days ago and worked wonderfully in 2.80, but in recent updates throws an error. I hope it helps to fix the issue:

```auto
Traceback (most recent call last):
  File "C:\Users\USER_NAME\AppData\Roaming\Blender Foundation\Blender\2.80\scripts\addons\dollyzoom_truckshift.py", line 283, in invoke
    localCursor = cam.matrix_world.inverted() @ context.scene.cursor_location
AttributeError: 'Scene' object has no attribute 'cursor_location'

location: <unknown location>:-1

```

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [March 9, 2019, 2:07am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/11 "2019-03-09T02:07:22Z")

</div>

Hi @Botoni, you’re right. The latest build changed some of the API, you should be getting a Gumroad update with a fixed version.

Thanks for reporting!

---

<div class="post-metadata">

**Author:** ![kkar](https://blenderartists.org/user_avatar/blenderartists.org/kkar/32/1098492_2.png) [@kkar](https://blenderartists.org/u/kkar)\
**Post date:** [March 9, 2019, 2:26am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/12 "2019-03-09T02:26:34Z")

</div>

> [@Botoni](#):
>
> AttributeError: ‘Scene’ object has no attribute ‘cursor\_location’

I just hit that exact error in one of my addons too. It gets hard to keep up with that.

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [March 9, 2019, 2:44am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/13 "2019-03-09T02:44:31Z")

</div>

I was just debugging another problem in some other add-on which is when you have a reference to a _mathutils.Vector_ attribute, like [vertex.co](http://vertex.co) for example, in 2.79 and 2.80 they behave differently: sometimes it’s a copy, sometimes it’s a reference (I don’t remember which Blender has which…).  
If you expected that value to change, and you got a copy, you’d run into problems.

---

<div class="post-metadata">

**Author:** ![kkar](https://blenderartists.org/user_avatar/blenderartists.org/kkar/32/1098492_2.png) [@kkar](https://blenderartists.org/u/kkar)\
**Post date:** [March 9, 2019, 2:59am UTC](https://blenderartists.org/t/camera-perspective-tool/699982/14 "2019-03-09T02:59:41Z")

</div>

Yeah really hard to track, maybe the add-on devs should hack a editable wiki page about latest updates that also offers RSS feeds etc, otherwise this also affects the users too.

My biggest issue atm is that we need to support 3 different branches as if developing and distributing add-ons was easy enough. These branches are Blender 2.79b (Python 3.5), Blender 2.79b nightlies (Python 3.7) and Blender 2.80 (Python 3.7) And these diverge and differ in some areas.

---

<div class="post-metadata">

**Author:** ![RNavega](https://blenderartists.org/user_avatar/blenderartists.org/rnavega/32/490734_2.png) [@RNavega](https://blenderartists.org/u/RNavega)\
**Post date:** [May 8, 2023, 4:43pm UTC](https://blenderartists.org/t/camera-perspective-tool/699982/15 "2023-05-08T16:43:51Z")

</div>

Heya, I’ve updated this to version 1.3.2 with a new feature:

> Holding Ctrl while confirming the tool will set keyframes for the camera properties used by this tool.  
> The properties that are keyframed are: camera location, focal length (AKA zoom), shift X and shift Y.

This can be used to create animated perspective camera effects, in this way:

1. Set the scene frame to where the effect should begin.
2. Start the tool but _don’t make any changes_.
3. Hold Ctrl then hit Enter/click to confirm. This will set keyframes for the camera in its original unchanged state.
4. Change the scene frame to when the effect should end.
5. Start the tool and make your adjustments (dolly zoom, truck shift etc).
6. Hold Ctrl then hit Enter/click to confirm. This will set the keyframes for the camera in its adjusted state.

So the first run of the tool was used to create keyframes with the original settings of the camera, then the second run was used to create keyframes for the adjusted settings. If you play the animation you can then see the camera transitioning during those moments.
