Jump to content

Very wide projections


photo

Recommended Posts

Hello.

Is there some way to produce high-aspect picture (reso like 20000x800) without distortion on one screen? 

So, i need something like render_panorama but cameras should stand in a row, look the same world direction and don't have distortions on the seams. It's for a video CG production, not sim/game, so performance doesnt matter at all.

Thanx.

wide.jpg

Link to comment

Yes of course. I guess its cameras stand in one point, so causing panoramic distortion

 wide2.thumb.jpg.0e555ca278dc802f9b054161afccecde.jpg

And manual operation with projection/modelview (based on viewport_02 sample) can produce cameras like on attachment on topic start. Of course it is wrong way too.

Quote

May I ask you how you're going to show the final image? Will it be a video wall or a screen with projectors?

It could be wide led screen like this but more wide, but may be splitted to Windows "displays" if needed.

 

image.png

Link to comment

Dmitriy,

I've read again the thread and I think I missed something. We can't render more than one independent camera in this case. There's only one "observer", the perspective depends on one point, in other cases, you'll get more artifacts.

To avoid significant distortions you can change FOV. I've attached a simple diagram.

frustum.png

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Ok, got it.

So if i want final resolution width like 20000px - i have to set your blue Viewer's resolution like 60000px width, then crop top and bottom on rsulting frame. This way gives wide picture without distortion.

But Editor built-in Video grabber creates 16384px width pictures max. What is better way to grab high-res frames?

Link to comment

Thank you.

I think 60000px is achievable  by multiple pass with skewed frustum (as shown on the picture). There will be six Grabber passes with width 10000px and then i should just connect six png to one on each frame outside Unigine.  

But there's a little problem: this sample for setObliqueFrustumPlane doesnt affect on camera. So setFov etc works there, but setObliqueFrustumPlane doesnt work. Camera is created this way:

Player player = new PlayerDummy();
player.setPosition(Vec3(5428.0f,7224.0f,10.0f));
player.setDirection(Vec3(0.0f,-1.0f,-0.4f));
engine.game.setPlayer(player);

And test project has no another code.

Please tell me what I'm doing wrong.

image.png

Link to comment

Oh, figured out that UnigineScript version of setObliqueFrustumPlane doesnt work, but C# version works as designed, it's enough.

Thank You very much.

Link to comment
14 hours ago, dmitry.vavilov said:

I think 60000px is achievable  by multiple pass with skewed frustum (as shown on the picture).

Yes, that should work.

13 hours ago, dmitry.vavilov said:

Oh, figured out that UnigineScript version of setObliqueFrustumPlane doesnt work

We've checked this method in UnigineScript, everything seemed to be okay:

int update() {
	float time = engine.game.getTime();
	Vec4 plane = Vec4(1.0f, 1.0f, 1.0f, 1.0f + sin(time) * 4.0f);

	Player player = engine.game.getPlayer();
	Camera camera = engine.game.getPlayer().getCamera();
	camera.setObliqueFrustum(1);
	camera.setObliqueFrustumPlane(plane);
	player.setCamera(camera);

	return 1;
}

Thanks.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment
×
×
  • Create New...