Considering using Unity in a Kiosk environment with a main display screen and separate smaller touchscreen for user interaction. The touchscreen would probably have a static 2D interface.
It seems most games treat additional monitors as one continuous larger canvas (as handled by the host OS). How would I keep the 3D camera from using both monitors? How would I confine the 2D UI elements to the second screen?
Is this doable through Unity? Any tips on how to set that up?
I not done a touch screen multiple monitor setup, but I have been doing a 2 projector and 1 monitor setup so, FWIW, my suggestion would be to get a video card like the ATI Eyefinity series where Windows thinks its outputting to one big monitor. Matrox and Nvdia have cards that do this too. This allows you to run Unity as a "full screen" application filling up your lets say 2048 x 1024 "monitor", but the video card provides two outputs, one for each 1024 x 768 monitor.
Normally, Unity only displays fullscreen on your primary monitor and other monitors display black with typical video cards unless you run Unity in a window which you can then stretch to span multiple displays, but then you have a window border to deal with.
As for combining a 2D and 3D view, you setup two unity cameras each taking up half the display space. Then set one camera to orthographic view to display graphics you place in its view as 2D. I've done this to create an out the cockpit view and an instrument panel view.
answered Jan 06 '11 at 03:03 PM
I agree that a card where Windows thinks you have one big monitor would be ideal.
I'm using a Windows 7 laptop with an RGB output to a secondary desktop monitor. Full screen mode fills the laptop's screen and the secondary desktop monitor shows whatever I had on it before launch (although clicking anything on the secondary monitor defocuses the unity application and makes the primary screen jump out of full-screen mode).
If you end up exploring a "faux full screen" method where you stretch a non-full screen window past the extents, it might be possible to write a Win32 C++ dll plugin (pro Unity only) that can find your unity application's window, hook into it and adjust its position and size to overlap the desktop by a few pixels on each side. We have coded a hook similar to this in order to capture and pass some Windows messages into our app.
If you can work out the display hardware, look for the Normalize View Port Rect options on your cameras to split the screen between two cameras.
answered Jan 06 '11 at 03:41 PM