Rhino 7: Parallel viewport drift when reading CameraLocation

Hi,

I’m using Rhino 7 and encountering a strange behavior where simply reading viewport data in GhPython causes Parallel Viewports to shift or drift away. Maybe it might be related to RH-53871?

Even with the most basic script (strictly using getters), the camera in Parallel views moves slightly every time the component solves:

import Rhino

# GetViewList(True, False) gets only standard model views, excluding page views
all_views = Rhino.RhinoDoc.ActiveDoc.Views.GetViewList(True, False)
planes = []

for v in all_views:
    success, frame = v.ActiveViewport.GetCameraFrame()
    
    if success:
        planes.append(frame)

a = planes

Observations:

  • This only happens in Parallel viewports (Top, Front, Right); the Perspective view remains stable.
  • The movement occurs even if Preview is Disabled and no other components are connected to the output.
  • It feels like a feedback loop where the act of querying the viewport property triggers an internal update.

Has anyone experienced this before? I am looking for a stable way to capture these camera planes for downstream components without causing the view to shift.

systemInfo:

Rhino 7 SR38 2024-12-3 (Rhino 7, 7.38.24338.17001, Git hash:master @ 97e36efa02d7f71638988290bb2d190fcf1b18c5)
License type: Commercial, build 2024-12-03
License details: LAN Zoo Network Node

Windows 10 (10.0.19045 SR0.0) or greater (Physical RAM: 64Gb)

Computer platform: DESKTOP 

Standard graphics configuration.
  Primary display and OpenGL: NVIDIA GeForce RTX 2070 SUPER (NVidia) Memory: 8GB, Driver date: 8-12-2020 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 452.06
    > Accelerated graphics device with 4 adapter port(s)
        - Windows Main Display attached to adapter port #0
        - Secondary monitor attached to adapter port #1

OpenGL Settings
  Safe mode: Off
  Use accelerated hardware modes: On
  Redraw scene when viewports are exposed: On
  Graphics level being used: OpenGL 4.6 (primary GPU's maximum)
  
  Anti-alias mode: None
  Mip Map Filtering: Linear
  Anisotropic Filtering Mode: High
  
  Vendor Name: NVIDIA Corporation
  Render version: 4.6
  Shading Language: 4.60 NVIDIA
  Driver Date: 8-12-2020
  Driver Version: 27.21.14.5206
  Maximum Texture size: 32768 x 32768
  Z-Buffer depth: 24 bits
  Maximum Viewport size: 32768 x 32768
  Total Video Memory: 8 GB

Rhino plugins that do not ship with Rhino
  C:\ProgramData\McNeel\Rhinoceros\packages\7.0\LadybugTools\1.39.0\Ladybug.RH.Loader.rhp	"Ladybug.RH.Loader"	1.39.0.0
  C:\ProgramData\McNeel\Rhinoceros\packages\7.0\Pollination\1.65.9\Pollination.RH.Loader.rhp	"Pollination.RH.Loader"	1.65.9.0

Rhino plugins that ship with Rhino
  C:\Program Files\Rhino 7\Plug-ins\Commands.rhp	"Commands"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\rdk.rhp	"Renderer Development Kit"	
  C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp	"Rhino Render"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp	"RDK_EtoUI"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp	"Renderer Development Kit UI"	
  D:\Users\xxxxx\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\PanelingTools\2021.3.2.446\PanelingTools.rhp	"PanelingTools"	
  C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp	"Snapshots"	
  C:\Program Files\Rhino 7\Plug-ins\IronPython\RhinoDLR_Python.rhp	"IronPython"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp	"RhinoCycles"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\Grasshopper\GrasshopperPlugin.rhp	"Grasshopper"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp	"Toolbars"	7.38.24338.17001
  C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp	"3Dconnexion 3D Mouse"	
  C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp	"Displacement"