Perspective match R8 2026 - match a viewport screenshot

Hi community,

Here is the challenge: Match a rhino viewport screenshot as close as possible within your model.

-–
My attempt:

My worflow.

  • Place image as wallpaper. (VP properties – wallpaper)
  • using cmd “perspectivematch”

Notes

** Perspective match need 6 points minimum.

** Perspective match is capricious. If these 6 points are not correct/ too distorted from their original location, perspective match simply won’t work (nothing will happend). And there is no way I found to “refine/edit” point placement further on. To edit, you will have to replace the 6 reference points again.

** Eye balling is possible sometimes when you have clear shapes to take as references like squres/cubes. But depending on what you are trying to match, its not alway possible. (*Placing these references cubes or plan would be a good idea)

  • Even moving the camera manually in another viewport is quite a challenge to match it… after quite attempts I found it too difficult/impossible to match perfectly the reference image…

** I know that creating a named view would haved saved me tones of time here. But I’m doing it for the sake of learning correctly photomatching in rhino. As I see there are many request to improve this tool. I add voice to them.

Thanks for any advices,

CC

Rhino 8 SR33 2026-6-11 (Rhino 8, 8.33.26162.14541, Git hash:master @ ef26a88fdc37234b688cfa11d5906089deb5be0c)
License type: Educational, build 2026-06-11
License details: Cloud Zoo

Windows 10 (10.0.19045 SR0.0) or greater (Physical RAM: 64GB)
.NET 8.0.14

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA GeForce RTX 5070 Ti (NVidia) Memory: 16GB, Driver date: 5-5-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 596.49

Accelerated graphics device with 4 adapter port(s)

  • Windows Main Display attached to adapter port 0

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 5-5-2026
Driver Version: 32.0.15.9649
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 16303 MB

Rhino plugins that do not ship with Rhino
C:\ProgramData\McNeel\Rhinoceros\8.0\Plug-ins\Datasmith Rhino Exporter (d1fdc795-b334-4933-b680-088119cdc6bb)\DatasmithRhino8.rhp “Datasmith Exporter” 5.4.4.0
C:\ProgramData\McNeel\Rhinoceros\packages\8.0\LadybugTools\1.38.220\Ladybug.RH.Loader.rhp “Ladybug.RH.Loader” 1.38.220.0
C:\ProgramData\McNeel\Rhinoceros\packages\8.0\Pollination\1.51.2\Pollination.RH.Loader.rhp “Pollination.RH.Loader” 1.51.2.0
C:\Program Files\McNeel\Rhinoceros\8.0\Plug-ins\D5LiveSync (e0d5e210-02f6-4ee9-a2b0-1675e225d958)\D5Conv.rhp “D5 Live Sync for Rhino”

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.33.26162.14541
C:\Program Files\Rhino 8\Plug-ins\WebBrowser.rhp “WebBrowser”
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoScript.rhp “RhinoScript”
C:\Program Files\Rhino 8\Plug-ins\IdleProcessor.rhp “IdleProcessor”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.33.26162.14541
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.33.26162.14541
C:\Users\Proprio\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\PanelingTools\2024.8.20.677\PanelingTools.rhp “PanelingTools”
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.33.26162.14541
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.33.26162.14541
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.33.26162.14541
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.33.26162.14541
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

**

Hi Charles,

I managed to get a closer match, but still not good enough. But I think the issue may be that _Perspectivematch wants straight lines to play with.

So I put a bounding box around your objects and made my own wallpaper from it, then used the eight corners as my matching points (I did reorientate the model before starting, honest) and got a pretty good match - and could have done better on my big screen and taking more time.

The gray is wallpaper, mid blue is model.

Of course, the other big difference is that I don’t have all your noise in the wallpaper image. Do you get a better result if you use an image without it?

Jeremy

Hi @jeremy5, thanks for joining in.
With a bounding box, or a reference cube, is indeed what would be the easiest and most accurate.
My challeng is that I don’t have these easy references, no straitgh lines nor cube to help me.
I was wondering if we could do without, and how to approach it.
Its similar I think to these posts :

thanks
CC

I recently made a camera match perspective tool for Rhino. I am still working out the bugs but would happy to share if I could get some constructive feed back.

Surely @T-F-20. send us the plugin and I could test it for feedback.

Absolutely. Give me a week or so to polish it a little further.

Finally manage to make a workflow to integrate fSpy here :

Works well if you want to give it a try :wink:
CC