ALSO Consistency Between Parallel and Perspective Projection in Rhino Camera and
Hello everyone,
I am an architect and a frequent user of Rhino. Most of the time, I prefer to use parallel projection over perspective projection due to its relevance in architectural visualization. However, I’ve encountered several challenges when working with parallel projection, especially when animating camera movements.
Here are the key issues I’m facing:
-
Parallel Projection Lens Length Limitation
- When using parallel projection, the
LensLength
parameter becomes ineffective. - The
ChangeToParallelProjection
method does not incorporateLensLength
, making it difficult to control the field of view (FOV). - In parallel mode, the only way to influence the viewport’s FOV is by adjusting the camera position relative to the target point. However, this is cumbersome and often results in an unexpectedly narrow view.
- When using parallel projection, the
-
Erratic Viewport Behavior During Animations
- I’m trying to create a “hovering” animation where the camera follows a circular path around a target, akin to a drone circling a building.
- While using sliders to animate the camera, the viewport often becomes uncontrollably wide during the rotation.
-
Inconsistencies Between Perspective and Parallel Projections
- Perspective projection works as expected, maintaining a predictable FOV.
- However, switching to parallel projection introduces significant changes in the viewport.
- Interestingly, when I toggle from perspective to parallel projection, the frustum’s intersection with the target plane remains consistent. I observed this by comparing two images: one taken in perspective mode (Image A) and the other in parallel mode (Image B).
Perspective Frustum:
Parallel Frustum:
-
Workaround Attempts
- To control the frustum size, I tried the following approach:
- First, set the camera to perspective mode and adjust the
LensLength
to control the frustum size. - Then, switch to parallel mode to maintain the adjusted frustum size.
- To automate this, I used two camera components and introduced a delay of 100 ms (
System.Threading.Thread.Sleep(100)
) before activating the second (parallel) camera. - While this method works about 70% of the time, the viewport still behaves erratically during some animations (similar to the issue described above).
- First, set the camera to perspective mode and adjust the
- To control the frustum size, I tried the following approach:
-
Heteroptera Camera Crane
- I experimented with the Heteroptera plugin’s
Camera Crane
component. While it allowsLensLength
to influence the frustum in parallel mode, the resulting FOV remains unexpectedly narrow.
- I experimented with the Heteroptera plugin’s
Questions:
- Is there a more reliable method to control the frustum size in parallel projection?
- How can I ensure consistent viewport behavior during animations using parallel projection?
- Are there any best practices or existing scripts/plugins to address these issues?
Attached are example images (Image A, Image B, and Image 3 from Heteroptera) to better illustrate the problem.
Any insights or recommendations would be greatly appreciated!
Thank you in advance!