Hello Martin,

good to see you are still active!

On 1. Oct 2010, at 16:38, Martin Lambers wrote:

> The player does not have support for Equalizer yet because I first
> wanted to get the decoding and video/audio synchronization right. My
> plan is to add Equalizer support once this works fine (which I think it
> does now) and I find the time.

I hope you will find the time. :)

> The idea is to let every node decode the video file, and synchronize
> video frame output using FrameData. I think it would be impossible to
> send high resolution video data across the network fast enough in many
> situations, especially for stereoscopic material where you might have
> 2x1080p at 30 frames per second.

It would definitely be challenging, but one could multicast the encoded video 
stream with buffering to the render nodes.

This is probably overkill if you only want to play movie files on a 
(pre-)distributed file system.

> Audio would be played only on the
> application node because the video output usually must be synchronized
> to audio time.

Be careful to synchronize the audio with the video wall swap barrier, otherwise 
your audio might be one frame ahead of the video. Although I'm not sure if this 
is noticable.

> I was planning on defining a video plane on which to display the video.
> Each Equalizer Channel would render a subset of that plane. For
> stereoscopic video, it would render the left or right view depending on
> Channel::getEye().

Makes sense. For normal video, the plane would be in the same place as the 
canvas wall, with some cropping/black areas to accommodate for the aspect ratio.

> I'm not sure yet what the best way would be to achieve that. My first
> idea would be to simply configure the geometry of several walls as a
> subset of e.g. [-1,1] x [-1,1]. But maybe it would be better to use the
> canvas/view stuff described here
> <http://www.equalizergraphics.com/documents/design/view.html>?

Depends what you want to achieve. If you want 3D billboards in a VR 
environment, I would use a sensible real-world size for them, i.e, one which is 
close or equal to the canvas. If you want to video to be in 2D, I would use the 
normalized viewport (wrt canvas) in Channel::frameViewFinish to render the 
video. The canvas/layout API provides you with 2D spatial information for your 
3D environment.

> Frankly, I have a hard time understanding how all these concepts
> (observer, canvas, segment, view, window, channel, compound, layout)
> relate to each other and which subset to use for a given task. Can you
> give usage examples?

>From the Programming Guide Section 3.6-3.9:

A canvas represents one logical projection surface, e.g., a PowerWall, a curved 
screen or an immersive installa- tion.  One configuration might drive multiple 
can- vases, for example an immer- sive installation and an oper- ator station.

A segment represents one output channel of the canvas, e.g., a projector or an 
LCD. A segment has an output channel, which references the chan- nel to which 
the display device is connected.

A layout is the grouping of logical views. It is used by one or more canvases. 
For all given lay- out/canvas combinations, Equalizer creates des- tination 
channels when the configuration file is loaded. These destination channels can 
be refer- enced by compounds to configure scalable render- ing.

A view is a logical view of the application data, in the sense used by the 
Model- View-Controller pattern. It can be a scene, viewing mode, viewing 
position, or any other representation of the application’s data.

A view might have an observer, in which case its frustum is tracked by this 
observer. An observer represents an actor looking at multiple views. It has a 
head matrix, defining its position and orientation within the world, and an eye 
separation.


Please ask away when things are still unclear.

> For example, in our VR environment, it is sufficient for most tasks to
> define the geometry of the display walls and then have two channels per
> wall: one for the left eye, one for the right eye.

You would have one canvas with one segment per wall and eye.


Cheers,

Stefan.


_______________________________________________
eq-dev mailing list
[email protected]
http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev
http://www.equalizergraphics.com

Reply via email to