Camera perspective strength

urrently on Roblox, it’s too hard to flatten the depth of a scene without physically moving the camera absurd distances away, which also makes it impossible to flatten the depth of a scene without adverse effects on terrain and texture quality.

To fix this, I propose a new property of Cameras: a numerical value which changes how strong the perspective effect of a camera is. Valid values are clamped in the range 0 <= strength < math.huge and change how extreme the perspective ‘foreshortening’ effect of the camera is. When the perspective depth = 0, the rendering is orthographic (no foreshortening), 1 is default and identical to current behaviour, 2 is double the amount of foreshortening and so on.

Here’s what it might look like tweening this value between approx. 0.36 and 1.43 (I manually did this in game using a dolly technique, which as I mentioned before seriously cripples the quality of terrain and textures):

This will be especially useful for games which want to achieve perfect isometric rendering. We already see this effect used in many games outside of Roblox, such as tycoons, overhead-camera RPGs, bridge building simulators, platformers, puzzle games and much more.

What’s more, since fine control of the perspective strength is allowed by using a numerical value, it can be used for artistic effect in cutscenes, transitions and camera effects, unlocking new potential for developers who want to utilise it. I can already think of ways I could integrate this into a couple nifty puzzle games using perspective as a tool to build puzzles around!

Most importantly, it lets you express your intent to the game engine; instead of telling the game engine to ‘reduce the field of vision this much and go very far away’, we can say ‘decrease the perspective amount by 3x’, which means there’s much less chance of the code being broken by future updates. It also makes the purpose of code clearer without having to resort to comments (which from my experience don’t seem to exist in most people’s scripts anyway)

101 Likes

Necrobumping because this would be an incredible addition to Roblox, there’s so many potential uses for this, puzzle games, 2.5D games, and like mentioned:

Transitions and cut scenes, puzzles, pure aesthetics, horror games, all kinds of things, potentially if it were supported in viewports that would bring yet another world of possibilities.

On top of that, there have been a number of posts requesting this feature for years, like this one, this one, this one, the results from the vote on this one (even if it isn’t a request), this one I’m sure you see where I’m going, this is a wanted feature request, look at the likes on this post even.

This is a feature that would serve good purpose, Roblox, please add.

14 Likes

So many of my game ideas would benefit from this.
It would go a long way to make more 2d - ish games in the 3d engine.

Would really be nice to have this.

2 Likes

Orthographic cameras are used in numerous genres and would be a nice addition to roblox.

2 Likes

Bump #4!

I have cinematic cutscenes that use a very small field of view to simulate a large camera focal length. I must place the camera very far away so that you can actually see the scene properly. I am limited to only open spaces where I am able to place the camera in places where the camera does not clip through or over a wall. Currently, indoor spaces are a no-go, unless I make compromises.

2 Likes

and also add the screen curved edge like in old tv’s

Not sure which thread to bump but these two seem similar

Either way, I could really use some type of API that allows for different projection types or focal strengths.

I’m constantly finding myself with awkward distances whenever I do any type of isometric or top-down work. I can only increase FOV so much before I need to increase the camera distance to keep everything in view again, but that:

  • Makes everything more jagged (anti-aliasing isnt as noticeable from afar)
  • BillboardGUI text become harder to read
  • texture details become harder to notice

I can’t increase FOV indefinitely as I’ll have to increase the Current Camera’s CFrame simultaneously, eventually making the camera distance exceed the render distance.

1 Like

As a Roblox developer, I would like to see proper Orthographic Camera Support get added.

I’ve figured out all the key aspects of creating a good orthographic camera, including distance checking and the exact math to simulate the player’s view within the 1 FOV zone. However, one issue I face is that many elements, like particles and shadows, have an arbitrary cutoff that doesn’t respect the Camera.Focus property (NOTE: This post being marked as “Solved” was likely caused by a placebo. Elements start disappearing when there’s a high load on the screen or when there are multiple humanoids, especially if the graphics quality is set below 10. and I don’t want to force players to use specific graphics settings just to be able to see the game properly.)

If the orthographic camera feature were added and the culling distance issue resolved, it would significantly enhance my developer experience, allowing for more experimentation and innovative game designs without being limited by unfixable constraints. This would enable new gameplay styles to thrive on Roblox. (Top down rouge-likes, table-top games)

I say this because I believe the Camera is one of the most underrated aspects of a game. It’s the eyes of the player, used to display your art that you made. We barely think about it but even the simple act of “Moving the camera’s direction” differs between real games. It can go from using the Mouse’s Delta as a form of Velocity (Smoothness) to having statically stationed cameras based on the room you’re in (Game: Killer7). The default Roblox camera works well for most games, but trying anything different with smaller FOVs can lead to visual glitches on mobile devices (Lighting and Shadows glitching out. And the Humanoid limit tends to be smaller on those devices). They’re often exclusive to those setups because the depth buffer struggles to handle the extreme distances and isn’t replicate-able in Studio even when using the Emulation Devices.