RH 8: Trackpad & DisplayMode Regression

Two regressions that I noticed today in RH8:

  1. When TrackPad panning is used, pressing Shift while orbiting an object causes a short stutter in the camera movement. In Rhino 7 this worked fine.

  2. Switiching between display modes takes significantly longer in RH 8 than it did in RH7.

here is video of both behaviors:

@dan

to be clear, navigation with the TrackPad is unusable in this state… this need to be fixed **

update: this is only as horrible as shown above when Rhino is somehow “clogging up” over a short work session. With multiple files opened, this can happen in a matter of less than an hour, as only one instance has to clog up…
With a fresh Rhino restart, this effect is only very slightly visible, but still noticeable

here is a demonstration with a easy 2D file. The one that is stuttering is RH8. In order to make it stutter, one just has to pan around with the trackpad and then press Shift a few times…

Rhino 8 SR7 2024-4-30 (Rhino 8, 8.7.24121.13002, Git hash:master @ 44b9af795a5996a2a877659c9d5ef63b0da7ecfa)
License type: Educational, build 2024-04-30
License details: Cloud Zoo

Apple macOS Version 14.4.1 (Build 23E224) (Physical RAM: 16GB)
Mac Model Identifier: MacBookPro16,1
Language: en
.NET 7.0.0

Metal GPU Family Apple 0
Metal GPU Family Common 3
Metal GPU Family Mac 2
Graphics processors
  Intel UHD Graphics 630 (1536 MB)
  AMD Radeon Pro 5300M (4 GB)
    Color LCD (2048 x 1280 @ 59.00Hz)

USB devices
  Apple: composite_device
  Apple Inc.: Touch Bar Backlight
  Apple Inc.: Touch Bar Display
  Apple Inc.: Apple Internal Keyboard / Trackpad
  Apple: Headset
  Apple Inc.: Ambient Light Sensor
  Apple Inc.: FaceTime HD Camera (Built-in)
  Apple Inc.: Apple T2 Controller

Bluetooth devices
  None

Third party kernel extensions
  com.intel.driver.EnergyDriver (3.7.0) 35E739F9-BF6C-3024-A67C-750711B3FB64
  com.Cycling74.driver.Soundflower (2) 2D779840-7439-31E5-8A66-D786C3F47B75
  com.paragon-software.filesystems.ntfs (149.8.15) B3791A17-53DF-3B03-9FF5-298D092ECF8C

Third party plugins
  /usr/lib/swift/libswiftCore.dylib
  /usr/lib/swift/libswiftCoreFoundation.dylib
  /usr/lib/swift/libswiftCoreGraphics.dylib
  /usr/lib/swift/libswiftCoreImage.dylib
  /usr/lib/swift/libswiftDarwin.dylib
  /usr/lib/swift/libswiftDispatch.dylib
  /usr/lib/swift/libswiftIOKit.dylib
  /usr/lib/swift/libswiftMetal.dylib
  /usr/lib/swift/libswiftOSLog.dylib
  /usr/lib/swift/libswiftObjectiveC.dylib
  /usr/lib/swift/libswiftQuartzCore.dylib
  /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib
  /usr/lib/swift/libswiftXPC.dylib
  /usr/lib/swift/libswift_Concurrency.dylib
  /usr/lib/swift/libswiftos.dylib
  /usr/lib/swift/libswiftsimd.dylib
  /usr/lib/swift/libswift_StringProcessing.dylib
  /usr/lib/swift/libswift_RegexParser.dylib
  /Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient
  /usr/lib/swift/libswiftCryptoTokenKit.dylib
  /usr/lib/usd/libusd_ms.dylib
  /usr/lib/swift/libswiftCoreAudio.dylib
  /usr/lib/swift/libswiftCoreLocation.dylib
  /usr/lib/swift/libswiftCoreMedia.dylib
  /usr/lib/swift/libswiftCompression.dylib
  /usr/lib/swift/libswiftCoreMIDI.dylib
  /usr/lib/swift/libswiftAVFoundation.dylib
  /usr/lib/swift/libswiftCoreML.dylib
  /usr/lib/swift/libswiftFileProvider.dylib
  /usr/lib/swift/libswiftIntents.dylib
  /usr/lib/swift/libswiftAccelerate.dylib
  /usr/lib/swift/libswiftGLKit.dylib
  /usr/lib/swift/libswiftGameplayKit.dylib
  /usr/lib/swift/libswiftMetalKit.dylib
  /usr/lib/swift/libswiftModelIO.dylib
  /usr/lib/swift/libswiftSceneKit.dylib
  /usr/lib/swift/libswiftSpriteKit.dylib
  /usr/lib/swift/libswiftVision.dylib
  /usr/lib/swift/libswiftRegexBuilder.dylib
  /usr/lib/swift/libswiftDemangle.dylib
  /usr/lib/swift/libswiftShazamKit.dylib
  /usr/lib/swift/libswiftObservation.dylib
  /usr/lib/swift/libswiftVideoToolbox.dylib
  /usr/lib/swift/libswiftWebKit.dylib
  /usr/lib/swift/libswiftNaturalLanguage.dylib
  /usr/lib/swift/libswiftSystem.dylib
  /usr/lib/swift/libswiftMapKit.dylib
  /usr/lib/log/liblog_network.dylib


Rhino plugins that do not ship with Rhino

Rhino plugins that ship with Rhino
  /Applications/Rhino 8.app/Contents/Frameworks/RhMaterialEditor.framework	"Renderer Development Kit"	8.7.24121.1002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/Commands.rhp	"Commands"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/PlugIns/NamedSnapshots.rhp	"Snapshots"	8.7.24121.1002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoCodePlugin.rhp	"RhinoCodePlugin"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RDK_EtoUI.rhp	"RDK_EtoUI"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/MeshCommands.rhp	"MeshCommands"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/BlockEdit.rhp	"BlockEdit"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoRenderCycles.rhp	"Rhino Render"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoCycles.rhp	"RhinoCycles"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/PlugIns/SectionTools.rhp	"SectionTools"	8.7.24121.1002
  /Applications/Rhino 8.app/Contents/PlugIns/RhinoRender.rhp	"Legacy Rhino Render"	8.7.24121.1002
  /Applications/Rhino 8.app/Contents/PlugIns/Displacement.rhp	"Displacement"	8.7.24121.1002
  /Applications/Rhino 8.app/Contents/PlugIns/PanelingTools.rhp	"PanelingTools"	8.7.24121.1002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoDLR_Python.rhp	"IronPython"	8.7.24121.13002
  /Applications/Rhino 8.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/GrasshopperPlugin.rhp	"Grasshopper"	8.7.24121.13002


Would it be possible to share this file so we can try to repeat the behavior?

No file necessary, it even happens with an empty Rhino file… of course clicking Shift many times, is just to show the effect more clearly. The “clogged up” version in my post above is however horrible…

The Shift + two-finger-Trackpad-pan does look awful in your video. I can’t seem to reproduce this at all. Rhino 7 and Rhino 8.7 are behaving the same way for me.

Here are the steps I’m taking to attempt to reproduce this:

  1. Drawing a Box in the viewport.
  2. Switching the Perspective viewport to Shaded.
  3. Maximizing the Perspective viewport.
  4. Holding down shift on my keyboard and using two fingers on my trackpad to pan back and forth.

Seems like I’m doing the same thing, right?

I’ve loaded a couple other line-work heavy files and tested in a top view as well and I can’t seem to get the stutter.

You forgot step #5: press the Shift button many times to make the effect more visible. The lag in a “lean” Rhino session is very small and barely noticable - only when you press mutliple times quickly the Shift key will it become visible.

In a non-lean Rhino file (aka Rhino is for some freakin reason getting slower during a work session) this effect will get worse and worse.

The miniscule lag is not critical, but still something that could be optimized, as it did not happen in RH7.

Unfortunately, try as I might, I still can’t figure out how to reproduce what you show in your initial comparison video. I can see it happening clear as day in your video, so I think I know what to look for, but even after pressing shift many times, I can’t reproduce this on my Mac. I suspect I need to do this a lot longer than 5 minutes though in order to see it.

Are you panning constantly while pressing shift multiple times a second? Then you should at least see the behavior posted above:

This is what it will look like in a “non-clogged state” on an Intel MBP16"

Yes. Well, as fast as I can. I’m tapping it pretty fast but maybe “only” 2-3 times per second.

Interesting. Maybe your AppleSilicon is too fast for this bug haha, have you tried it on an Intel Mac?

I have a 2020 Intel MBP with an AMD gpu and I can’t duplicate the behavior you described either.
I can manage to get the 2-finger zooming to quit by abusing the Shift key, but a Zoom Extents quickly sorts that too.

Here is a video of the actual behavior with an empty file. Again, keep in mind, that this is the state with an empty file.
In RH 7 there is no difference, everything stays super smooth.

It seems you’re running an external monitor off your laptop.
Does the problem go away if you disconnect the external monitor and run only on the native laptop screen?

Unfortunately no…
Although I heard it, external monitors in general seem to be a problem. (I am not clear about that in general, however…)

If it were me, I’d try resetting your Rhino PLIST:
https://wiki.mcneel.com/rhino/mac/resetprefs

Any luck?