- Home /
multi-projector 270° monitor
Hi,
I'm making a game using Unity Engine for a 270° cloth monitor powered by 3 projectors. The projectors are placed on a high angle so that they don't interfere with the person standing in the middle.
This is the screen:
So the problem is, I have to produce output for 3 monitors which are projected from a high angle on a curved cloth. So I have to transform the video output in such a manner so that the output is presented correctly as in the example image.
I have the necessary calibration tools to calculate how the shape is supposed to look. But I wanted to ask what's the easiest way to transform the output through unity engine, given the necessary info?
I thought of using render to texture, where the game view consist out of a black screen and one 2d model that represents the shape I need to project, and put the actual in game content as a texture(rendere to texture) on that with the correct texture coordinates.
So is that the correct way to do it, or is there a more simple way to do it, as in directly giving shape to the actual game view?
To give you a better idea, here is my situation.
If the output is like this for the three monitors in normal circumstances: (every digit represents a monitor)
Then I have to transform it into something like this, in order to make the output look straight on the projection cloth: (again digits represent the monitor)
Though this image might need more explanation. The output is still the whole black area. but the red edges represents the edges of the rendered material (game view) Which needs to be stretched to that form. where the other areas needs to stay black.
I I made my point clear.
Thanks in advance,
Waiting for a reply.
Kind regards
Sounds like you'd write a shader that applies the distortion you need.
I'm currently still working on it.
What I have now is, A 3d camera is place in the middle of the cave. A snapshot is taken. Out of that data a 2d mesh (vertices, Uv-coordinates and triangles) is created with an alpha masks. That was the trickiest part, creating a mesh out of that snapshot. A quite difficult algorithm.
In the end I managed to create a mesh. Today I was able to load that mesh correctly in Unity dynamically. All I need now is to put the render-to-texture on that mesh. Since the UV-coordinates are pre-calculated, the texture should appear correctly.
So the next few days I'm going to have to look at dynamically putting the render-to-texture on that mesh. Hope it will work out well
Hi, I have a 180 deg screen that pre-wrapped 2 projectors onto a single curved desktop, have no problem to display the content with eyefinity if the FOV was properly set. However it's not that easy when doing 270. Do you have a solution yet? Thankyou!
Hi, that was a part of my bachelor thesis. It was finished before summer vacation. It works great. What I did was create custom 3 meshes with correctly calculated UV-coordinates for each projector. For my ingame camera I created a custom omnidirectional camera (consisting out of multiple camera's with a very small FOV each) aligned next to eachother. I'm using that output of the cameras on those three meshes which I project through each projector. and Voila I had perfect result.
And this implementation is also portable, so I was able to view any unity project on that 270 degree cave.
Answer by Clement_Shimizu · Mar 03, 2016 at 06:53 PM
Looks great.
I built a generic system called Omnity for Unity3D that has many powerful methods of projection mapping onto curved surfaces. Check it out on the asset store here. https://www.assetstore.unity3d.com/en/#!/content/7415
Hi Clement, I'm trying to receive any support from your side, I've purchased your Omnity but I need some help about it, anyway, the Elumenati support doesn't work, no one answer me there.