So, I have tried all fullscreen modes in player settings, “Fullscreen window”, Maximized window and windowed. Every time, the game will run on the main display and the other displays will go black.
When I run it as windowed I can stretch it across both screens, but then I still have the macos window titlebar visible (and I don’t see any options in unity for having a borderless window, native macos apps can use that setting)
Here’s a demo video of what happens when I go fullscreen:
^ this looks like Unity is addressing the screens individually, instead of showing the camera across both screens.
The screens are both 2160x3840 pixel, so I have set the fixed resolution of the game to 4320x3840, with the appropriate camera aspect ratio.
When I only activate Display 0, and set the application mode to windowed, it does nearly what I want, if only I could remove the window-top with the red/yellow/green buttons I’d have achieved my goal:
I vaguely remember you need one camera per monitor to render to.
For a 2D app it shouldn’t be too hard to set them up so the borders meet exactly at the screen borders. For 3D I don’t know if it works the same way, I guess it should since the output is 2D anyway but it could have perspective overlap.
Player settings may or may not have settings to configure the window border. Have you checked there?
And then there may be 3rd party tools to set up apps to work across screens. That’s just a hunch. A simple upscale might even do the trick, get rid of the border but you’d lose some of the resolution.
There’s also the possibility to create two fullscreen apps, each displaying one side. They could either both capture input (if possible) or one takes all the input and synchronizes that with the other app via UDP. For mouse cursor you may have to draw your own if the hardware cursor won’t work correctly.
Lastly: Nvidia Quadro cards. They have the option to split output to multiple devices. We’ve used that to make an ultrawide app displayed on two projectors, so it was a 32:9 image. They also have tools to “fix” the overlapping borders of the projectors which you don’t need if you use monitors. Though the cheapest cards that could do that were around 1,200€ back then. And there’s really no technical reason why a GTX couldn’t do that, it’s all in the drivers (and business model). Potentially hackable, I’ve heard of users installing Quadro drivers on a GTX, it is a thing like Hackintosh.
Thank you again for responding and all the input,
I don’t have another dev to brainstorm with so that super valuable!
Yes it’s a 3D app, I just only show the loading screen in the images&videos above for copyright reasons.
Yes, from the docs it also seems to me like they want each screen to have a camera.
I had considered two cameras, sort of like in a VR app, but then of course it would be slightly tricky to set them up so the perspectives match between the screens. Just more work I had hoped to avoid.
It would be great if unity had an option to make windows borderless, i’ve looked through the player settings but I could only find the fullscreen window which goes back to the fullscreen issue above.
Next things I’m going to try. tomorrow is to (a) start the app using command line argument -popupwindow and then try your suggestion using two cameras. Will see what works.
You’re welcome!
It’s fun for me too to think about these special apps and all the things we tried to make them work.
I was thinking, maybe the solution is as simple as using windowed mode but hacking away the title bar. Apparently (haven’t tried) you can do that with an autohotkey script.
thank you for all the input, I’m going through all the options right now.
Thinking more about it (and also because triptychons are particularly artsy), I’m wondering whether there is a quick way to basically cut a wide camera into several pieces, so that I do not get this:
Since the 3 Screens will be on one wall, in one plane, that would look weird.
There must be a way of having one plane with the 3 cameras showing the same perspective, just 3 different parts of it, like so:
Maybe field of view? Just thinking out loud but it seems you need to use one third of the FOV for each camera. Not sure if that’ll give you the correct results.
Wouldn’t it work if you moved the cameras so they are offset to each other horizontally, focus the FOV on the part that’s on the screen. You would need to tweak the camera distances but as long as they are projecting in parallel along the same axis that could work. With that I mean the center beams of each camera should run parallel to each other, then it should only be a matter of distance between cameras and towards projection plane (which may be the same as FOV not sure).
If the Triptychon itself is setup with an angle and you have to respect that, you’d have to tweak around somewhat.
Anyway, I worked on a project that involved a Triptychon, so that brings up memories.
Though it was just called a Triptychon but in reality it was a gigantic array of 27 widescreens LCDs (around 50" each!) with 9 screens wide, 3 screens high. That was only used to play videos (except for that one occassion where we played Mario on it hehe) but our software had to trigger them. We were busy getting 6 projectors projecting without overlap on a table and using 10 Kinects (we only used 4 because there was too much interference between them) to capture depth images of markers that triggered the next step of the presentation. In the background we had 12 high-powered multi-CPU Xeon machines that were extremely overpowered given the fact that we used only a single thread (with minimal threading for postprocessing Kinect images). I think your issues are manageable compared to that.
yes, so the problem is, if I just divide the FoV by the number of cameras, and position them with parallel projection, I get a ton of content thats visible on multiple screens, like so:
The thing is, the the triple screen the middle camera should still be normal perspective, but the two side cameras should not be default perspective projections… they are like the peripheral parts of the central projection, without the actual line in the middle, just the sides of an imaginary full frustum. Maybe I could make it an oblique frustum for the two sides? https://docs.unity3d.com/Manual/ObliqueFrustum.html
Yes, oblique is the first thing that came to my mind but only because I’ve seen it yesterday thinking “Oh, that’s possible?”.
Anyway, it’s hard for me to “read” this image. I suppose the black vertical bar is where the overlap is?
Is it possible to tweak these settings manually, without knowing the math behind it, to get to something that seems to look alright? Because if that works, then there’s got to be some math that defines the behaviour and perhaps that helps reverse engineer it if you know the approximate values it should end up with for specific settings.