Author Topic: Three up sample  (Read 10431 times)

Offline bunny

  • Full Member
  • ***
  • Posts: 73
  • Karma: 1
    • View Profile
Three up sample
« on: October 25, 2010, 12:03:48 AM »
3 * kramer vga amplifiers because the cable are about 30m -.-;
1360x2560 resolution, taking into account the borders.

Do NOT try a GF240 with this, it can't cope, ended up with a massively overpowered GT250, but a 9800GT or 7600GS also has no problem. Previous problems with ATI ruled their card out before I even bothered testing one.

If I wanted to go higher resolution, then its ATI bugfinity and their horrible driver issues with SCALA.
Theory states I could go to full HD with one of those and some mini-DP to VGA/5bnc.

Notes, if you do this yourself, when setting up, make SURE your IR remote works! That can be funny.
In our case, everything was all sealed up beforehand -.-!


Offline Telecine

  • Scala Partner
  • Full Member
  • *****
  • Posts: 80
  • Karma: 1
  • When there's Scala there's a way!
    • View Profile
    • Telecine
Re: Three up sample
« Reply #1 on: October 25, 2010, 08:12:23 AM »
Bunny,

What did you use to split the image in 3, (Matrox TH2Go)?


Thank you

Stephane Bastien
Technical Director
Telecine Multimedia
www.telecine.ca
Stephane Bastien
Technical Director
Telecine Multimedia
www.telecine.ca

Offline bunny

  • Full Member
  • ***
  • Posts: 73
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #2 on: October 27, 2010, 12:01:51 AM »
What did you use to split the image in 3, (Matrox TH2Go)?

Indeed. Most of our contents is 1360x768, which it does just fine. In this case, it's the digital model, but using dvi-vga adaptors and kramer VP-111K's to boost the signal. It turned out that I needed 3 for this one. (at another place, I only need 1!)

The only really tricky bits are: The custom monitor file and the fact that something seems different about output 2, it seems... weaker than its siblings.

Offline Telecine

  • Scala Partner
  • Full Member
  • *****
  • Posts: 80
  • Karma: 1
  • When there's Scala there's a way!
    • View Profile
    • Telecine
Re: Three up sample
« Reply #3 on: October 27, 2010, 08:18:24 AM »
I'm guessing you use the monitor profile to do the bezel management?
We do the same and your right, it's not easy to do.

I hope one day Scala or some other programmer writes an application with a GUI that would take care of writing the monitor profile code.

Stephane
Stephane Bastien
Technical Director
Telecine Multimedia
www.telecine.ca

Offline bunny

  • Full Member
  • ***
  • Posts: 73
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #4 on: October 28, 2010, 12:02:36 AM »
I'm guessing you use the monitor profile to do the bezel management?
We do the same and your right, it's not easy to do.

I hope one day Scala or some other programmer writes an application with a GUI that would take care of writing the monitor profile code.

Stephane

I brute forced it. I have a simple spreadsheet that gives me the numbers based on dimensions, eg, monitor size, spacing, and then a hand made nightmare like this:


!ScalaScript500
// P 20101021
// 3 x 1360x768 with 128 px vertical space
{
     Monitor("monitor1", "\\.\DISPLAY1", Size(4080,768), WaitForFrame(On), ColorModel(TrueColor), DefaultColor($000060) );

   VirtualMonitor("d1", AspectRatio(1360 ,768), Target("monitor1", Dest(On, Position(   0/4080,0), Scale( 1360/4080, 1) )));
   VirtualMonitor("d2", AspectRatio(1360 ,768), Target("monitor1", Dest(On, Position(1360/4080,0), Scale( 1360/4080, 1) )));
   VirtualMonitor("d3", AspectRatio(1360 ,768), Target("monitor1", Dest(On, Position(2720/4080,0), Scale( 1360/4080, 1) )));

    VirtualMonitor("virtual", Primary(On), AspectRatio(1360,2560), Autoscale(FillExact),
     Target("d1", Source(Origin(0,          0/2560)), Dest( On, Scale( 1,2560/768) ) ),
     Target("d2", Source(Origin(0,  (768+128)/2560)), Dest( On, Scale( 1,2560/768) ) ),
     Target("d3", Source(Origin(0,2*(768+128)/2560)), Dest( On, Scale( 1,2560/768) ) )
   );

}


The trickiest bit is the lack of documentation and the baroque nonsense above.
That last line could just as easily be:
Target("d3", Source(Origin(0,0.7),Dest( On, Scale( 1, 3.3333333333)) ) )

I am sure simple maths rounding errors occur in that.

It should be easy enough to make a web page that writes this depending on what you're trying to do.
I am halfway there with my simple spreadsheet. (Openoffice)


Offline Gunnar

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Three up sample
« Reply #5 on: November 04, 2010, 12:20:21 PM »
A sneak peek at that spreadsheet would be really really interesting..

I am trying to combine some portrait and landscape monitors, but are having problems getting my head around the coordinate systems used.
With no documentation, it's down to trial and error...  lots of error... 

Regards,

Gunnar

Offline bunny

  • Full Member
  • ***
  • Posts: 73
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #6 on: November 05, 2010, 03:40:23 AM »
A sneak peek at that spreadsheet would be really really interesting..
I am trying to combine some portrait and landscape monitors, but are having problems getting my head around the coordinate systems used.
With no documentation, it's down to trial and error...  lots of error... 

Typical scala documentation quality. I guess they don't actually expect people to use it for anything tricky.

The spreadsheet simply calculates the number of pixels to space it out. If you tell me what you're trying to achieve, I can hazard a guess as to a monitor.sca.

Offline Gunnar

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Three up sample
« Reply #7 on: November 05, 2010, 04:33:18 AM »
Thanks for answering.

My big project is probably too ambitious to have anyone spend time on.
I have a 12 screen solution with an ATI Eyefinity 6 and 6 DualHead2Go cards,

    ##
  ####
######
My goal is to get these to act as one screen, with a transparent Overlay over all of them.
To do that, I need to "fool" scala into handling this with virtual screens.

But to start off, and understand the syntax and coordinate system, I am trying to make a 2x1920x1080 horizontal setup
act as a 1 horizontal and one vertical screen, with the possibility of overlaying something on the two.
So, a textcrawl going out the side of the horizontal screen, should enter the left side of the vertical screen.

But I can't seem to get my head around how to extract a part of the frame.

My Channel is 3000x1920,
and have 3 frames.
Horizontal, that is 1920x1080 and starts at 0.0,
Vertical, that is 1080x1920 and starts at 1920,0
and Overlay, that sits on top of everything, and is used for intermittent "teaser messages" independant of what's going on in horizontal and Vertical.

I am sure it can be done...  At a Scala conference in Amsterdam, I saw a 4 monitor setup, that was a diamond shape with to horizontal and t vertical screens, with content flowing seamlessly between them..

My email is gunnar.norum@nordicdigitalalliance.

Drop me an email if you want to see a mall movie of the diamondsetup..
Best regards,

Gunnar

Offline dbarrans

  • Scala Expert
  • Jr. Member
  • **********
  • Posts: 17
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #8 on: November 06, 2010, 12:41:13 PM »
I brute forced it. I have a simple spreadsheet that gives me the numbers based on dimensions, eg, monitor size, spacing, and then a hand made nightmare like this:

This should work just as well, and makes it a bit clearer what's going on:


!ScalaScript500
// 3 x 1360x768 with 128 px vertical space
{
    Monitor("monitor1", "\\.\DISPLAY1", Size(4080,768), WaitForFrame(On), ColorModel(TrueColor), DefaultColor($000060) );

    VirtualMonitor("d1", AspectRatio(1360, 768), Target("monitor1", Dest(On, Position(0/3, 0), Scale(1/3, 1))));
    VirtualMonitor("d2", AspectRatio(1360, 768), Target("monitor1", Dest(On, Position(1/3, 0), Scale(1/3, 1))));
    VirtualMonitor("d3", AspectRatio(1360, 768), Target("monitor1", Dest(On, Position(2/3, 0), Scale(1/3, 1))));

    VirtualMonitor("virtual", Primary(On), AspectRatio(1360,2560), Autoscale(FillExact),
        Target("d1", Source(Origin(0,  0/20)), Dest(On, Scale(1, 20/6) ) ),
        Target("d2", Source(Origin(0,  7/20)), Dest(On, Scale(1, 20/6) ) ),
        Target("d3", Source(Origin(0, 14/20)), Dest(On, Scale(1, 20/6) ) )
   );

}


The "d1", "d2", and "d3" vm's give you separate addressable areas you can use later. The tricky part is getting the parts of the "virtual" vm to show in the right place at the right size. I've heard some describe it as "moving the world" to fit the vm rather than positioning the vm in the world. Think of it as stretching and positioning the "virtual" vm so the part you want on d1, d2, and d3 fits directly on them.

- dan

Offline Gunnar

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Three up sample
« Reply #9 on: November 06, 2010, 07:19:01 PM »
Thanks Dan.

With both these examples, I am sure I will get it right.

Anyway, will there be a development kit, or some other documentation that explains the syntax for this?
I have trawled the Developer Wiki, but haven't found anything.

I think the commands  used to be explained in an old Syntax wiki?

Regards,

Gunnar

Offline bunny

  • Full Member
  • ***
  • Posts: 73
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #10 on: November 10, 2010, 10:30:05 PM »
I have no equipment to test this, but this SHOULD give you 1 portrait and 1 landscape.
I have a few other monitor files I did a long time ago, I'll post those too.


!ScalaScript500
// extrapolated
// 20101111 P
//
// 2 hd, one land, one port
// as if using a three2go with 2 ports
// 3840 x 1080
{
   // the REAL screen as seen by hardware
   Monitor("monitor1", "\\.\DISPLAY1", Size(3840,1080),
      WaitForFrame(On), ColorModel(TrueColor), DefaultColor($000060) );
   // chop that up into 2 separate screens
   // position, where we pull it from, scale, what we do with the res

   // we start at the left and we only want half. I think "scale" is the wrong word here.
   VirtualMonitor("left", AspectRatio(1920, 1080),
      Target("monitor1", Dest(On, Position(0/2, 0), Scale(1/2, 1))));
   VirtualMonitor("right", AspectRatio(1920, 1080),
      Target("monitor1", Dest(On, Position(1/2, 0), Scale(1/2, 1))));

   // make something that the player can see

   // assume left is landscape
   // paste left2 onto left with no transformations

   VirtualMonitor("left2", Primary(On), AspectRatio( 1920,1080), Autoscale(FillExact),
      Target("left", Source(Origin( 0, 0)), Dest( On, Scale( 1, 1 ) )
   );

   // and right is portrait
   // paste right2 onto right and rotate it 90 degrees. it might need to be 270.
   //
   VirtualMonitor("right2", Primary(On), AspectRatio( 1920,1080), Autoscale(FillExact),
      Target("right", Source(Origin( 0, 0)),
            Dest( On, Scale( 1080/1920, 1920/1080 ), Rotate( 0,0,90) ) )
   );

}



Obviously, if you wanted to present this as a single screen, you could have some more fun with the VirtualMonitor.
maybe this would work.


   VirtualMonitor("confused", Primary(On), AspectRatio( 1920,1080), Autoscale(FillExact),
      Target("left",  Source(Origin( 0, 0)), Dest( On, Scale( 1, 1 ) ),
      Target("right", Source(Origin( 0, 0)),
            Dest( On, Scale( 1080/1920, 1920/1080 ), Rotate( 0,0,90) ) )
   );


« Last Edit: November 10, 2010, 10:36:38 PM by bunny »

Offline dbarrans

  • Scala Expert
  • Jr. Member
  • **********
  • Posts: 17
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #11 on: November 19, 2010, 01:35:35 PM »
Anyway, will there be a development kit, or some other documentation that explains the syntax for this?
I have trawled the Developer Wiki, but haven't found anything.

I plan on putting some monitor config file docs onto the Developer Wiki soon.

On the Developer Wiki main page, there's a link to ScalaScript Syntax Documentation under the Developer Resources heading. This includes docs for the Monitor and VirtualMonitor commands.

- dan

Offline dbarrans

  • Scala Expert
  • Jr. Member
  • **********
  • Posts: 17
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #12 on: December 07, 2010, 07:06:10 PM »
I've just put up some docs on the developer wiki on advanced monitor configuration. Look for the link on the main page.

- dan

Offline Telecine

  • Scala Partner
  • Full Member
  • *****
  • Posts: 80
  • Karma: 1
  • When there's Scala there's a way!
    • View Profile
    • Telecine
Re: Three up sample
« Reply #13 on: December 08, 2010, 11:47:13 AM »
Fantastic!
This is great, more docs = better and unique signage.

Thank you sir.

Stephane
Stephane Bastien
Technical Director
Telecine Multimedia
www.telecine.ca

Offline dbarrans

  • Scala Expert
  • Jr. Member
  • **********
  • Posts: 17
  • Karma: 1
    • View Profile
Re: Three up sample
« Reply #14 on: December 23, 2010, 02:24:35 PM »
more docs = better and unique signage.

It's my hope that as our users learn more about the flexibility of Scala's rendering capabilities, they'll be inspired to do things they didn't think were possible before.

I've added a bit more since I first put the docs on the wiki. Please let me know if you think of something that needs improvement.

- dan