nmwsharp / nmwsharp/polyscope

Suggestions on rotate/zoom/pan behavior

Open
#367 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
2.2k
Forks
242
Avg merge
11m
Merged PRs (30d)
1

Description

Hi, thanks for this great lib !

  • The recent feature that allows to select a focus point with ctr+shift+left click is very convenient.
  • The trackball follows the rule of path invariance which is great too !

However, I'd like to suggest other features that could improve the ergonomy when carefully inspecting a scene.

Rotate

Current trackball seems to be an azimuth/elevation control which is fine, but disallows roll completely. This "turntable" behavior might be desired, but a more standard approach is to use an azimuth/elevation behavior in the center of the viewport fading to a more roll-permissive behavior further from the center. This nice blog post from Scott Shambaugh summarizes different trackball implementations, including the standard OpenGL one.

Zoom

The default mouse scroll zoom should be relative (without pressing shift+ctrl). The absolute zoom is bad because zooming is supposed to give an impression of scaling things. When far from the scene, it is painfully slow, and way too sensitive near an object's surface.

Pan

Currently, panning the camera does not move the focus point which creates a incomfortable setup if the user decide to rotate again. I suggest to also translate the focus point by a same amount to prevent that. Also, the panning is absolute thus suffers from the same issues of the absolute zoom. I recommend to make it proportional to the distance between the eye and the focus point.

Lastly, I find the focus point picking so convenient I think it should be more accessible (maybe double click like in Meshlab ?)

Those are only suggestions of course.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing trackball, zoom, pan, and focus-point input handling described in the issue. Compare the current behavior with the linked trackball references and define separate, testable decisions for rotation, relative zooming, proportional panning, focus-point movement, and focus-point activation before implementing anything.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.