The ‘Dynamic’ Forced Camera Near Distance mode has been billed as a solution that “
avoids most but not all problems
” with having a very small near clip distance. However, in my experience, the Dynamic mode actually causes problems with the far clip plane
remarkably often
.
Crucially, it causes these problems in worlds that have quite modest far clip planes to begin with, and worst of all, it often causes problems in worlds where the author has carefully set a far clip plane that is just right for their specific content.
Two Example Worlds
I used DebugAvatar by ScruffyRuffles to discover the author-set far clip plane, and also measure the observed far clip distance with different Forced Camera Near Distance settings in these worlds:
Background forest cards get clipped from various viewpoints with Dynamic mode.
  • Author’s far plane:
    700 m
  • Measured far plane (Off):
    693 m
  • Measured far plane (Dynamic):
    531 m
  • Measured far plane (Forced):
    531 m
At spawn, skyscrapers and atmospheric glow get clipped with Dynamic mode.
  • Author’s far plane:
    1200 m
  • Measured far plane (Off):
    1180 m
  • Measured far plane (Dynamic):
    787 m
  • Measured far plane (Forced):
    683 m
I think these results demonstrate that setting the near clip plane to a very small value causes the observed far clip distance to be reduced in peculiar ways, even though the far clip plane was supposedly not altered in Dynamic mode. (Please comment if you have any insight as to why this peculiar behaviour occurs.)
Two Solution Ideas
1. Add a ‘Conservative’ Forced Camera Near Distance mode
This would be similar to the existing Dynamic mode, but use more conservative values, such as:
  • Either
    target a near clip plane of 1 cm (0.01 m) instead of the current 1 mm (0.001 m)
  • Or
    use a factor of the far clip plane equal to one hundred thousand (100,000) instead of the current one million (1,000,000)
This conservative mode would be much more suitable for most VRChat users with average-sized avatars (1 meter or taller). In my experience, a near clip plane of 1 cm is close enough for head pats and cuddles when using typically scaled avatars.
I want a setting that I can
set and forget
; a setting that will do its best to reign in the near clip plane while
reliably
maintaining the world author’s far clip plane. The Dynamic mode’s near clip target is too aggressive, and the default near clip plane of 5 cm is too relaxed. I’m tired of having to switch between Dynamic and Off so often.
2. Research ways to make the current Dynamic mode more robust
As noted earlier, when you set a very small near clip plane, it appears that the observed far clip distance is significantly reduced below its programmatically set value. By testing many scenarios, it might be possible to figure out a pattern for this behaviour and establish a ‘magic number’ to counteract it.
Let’s say, for example, that we use
1.4
as our magic number. The new behaviour for the Dynamic mode would be as follows:
  1. Multiply the author’s far clip plane by 1.4 and set it as such.
  • For Nestled Glade, this would be: 700 x 1.4 =
    980
  • For Inner City Backstreet, this would be: 1200 x 1.4 =
    1680
  1. Set the near clip plane within a factor of one million of the new far clip plane.
  • For Nestled Glade, this would be:
    980
    / 1000000 =
    0.001
    (result clamped)
  • For Inner City Backstreet, this would be:
    1680
    / 1000000 =
    0.002
    (result rounded up)
Hopefully, by increasing the far clip plane in this way, it would counteract the peculiar reduction, and the observed far clip distance would end up about the same as the author’s originally intended setting. This is especially important for worlds where the author has carefully set a far clip plane that’s just long enough to encompass the longest sight line, but neglected to set the near clip plane to 0.01.