Author Topic: Delayed Blanking  (Read 131179 times)

0 Members and 1 Guest are viewing this topic.

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #15 on: November 01, 2009, 05:50:30 pm »
By the way, thanks for the color palette, I have added that to the parser and the images look correct now. Plus I have implemented the blanking and color move back one point, and that makes the Laser Boy images correct. It didn't seem to change some of the other ILDA files I have that much, but that's because they seem to have lots of dots at the same points, so the shift isn't noticeable.

It sounds like you are doing lots of great work. I went to the ILDA conference in Amsterdam this year, that was interesting, at least I got to see what other people are doing, and it confirmed that I am at least thinking in the right direction with this project. Plus I was very excited to have a look at Coherent's new OPSL series of laser working, such awesome beam profiles. No I am not an ILDA member.

When I finish my ILDA exporter, and I post some laser animations, should I use the Laser Boy true color format, or the dodgy ILDA version? I will be able to export both. I wasn't sure which one you had actually decided to use.

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #16 on: November 01, 2009, 06:13:29 pm »
WOW!

It sounds like you have gone down "the path" quite far!

You should probably use ILDA format 4 & 5 for true color. That is their current standard. LaserBoy can read and write that too.

My approach was to make a set of classes for just about every aspect in the "universe" of 3D color laser vector art. I made all of these classes smart, aware of each other and with lots of overloaded operators so you can use simple math expressions like frame = a + b; or frame_set += frame;

I also figured out that a series of vertices is a segment. A "lit segment" is a continuous lit strand. A segment is a segment of segments! A frame is a segment with frame stuff added.

All of my list like containers are STL vectors.

A LaserBoy_vertex -isa- LaserBoy_3D_short, LaserBoy_color
A LaserBoy_frame -isa- vector<LaserBoy_vertex>
A LaserBoy_palette -isa- vector<LaserBoy_color>
A LaserBoy_frame_set -isa- vector<LaserBoy_frame>
A LaserBoy_palette_set -isa- vector<LaserBoy_palette>
A LaserBoy_space -isa- LaserBoy_frame_set, LaserBoy_palette_set

I also have LaserBoy_3D_double, LaserBoy_real_vertex, LaserBoy_real_segment, LaserBoy_real_segment_set for math.

I can also move, rotate, scale from the origin or from any arbitrary 3D_double point (even outside of 3D short space).

My objective has been to make it very simple to write effects.

You open art into the LaserBoy viewer and either screw with it directly or apply frame effects to the current frame or frame set effects to the whole set.

You can apply effects over effects, but not really at the same time, unless you are willing to look into the C++ code and write whatever combination of things you want.

The major translational format is ILDA. But you can save your data accurately as DXF, text or wave.

LaserBoy can not do a thing with your sound card. But it can make any set of frames into a 6 or 8 channel wave, that, when played from any generic audio app that can play multi-channel wave, will give you the signals for the show.

Spider-player.com has a nice free one!

Those waves have added information in the header and the least significant bits of the color channels such that LaserBoy can read the data back perfectly and reframe it.

LaserBoy also has an art drawing system that is absolutely accurate down to the coordinate space in 3D. You can start with a blank vector of no magnitude at the origin, color, blank, add new vertices, move, rotate, etc. It lets you do just about everything to the art in 3D by-hand (so to speak).

BTW If you really examine my code, you'll see I am quite a fan of double inheritance and predeclarations!

I love C++ !!!  ;D

James.  :)
« Last Edit: November 03, 2009, 08:27:04 pm by James »
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #17 on: November 01, 2009, 06:20:55 pm »
Oh yeah...

About the blanking issue, when you save art from LaserBoy as ILDA, the default behavior is for LaserBoy to strip it of any points that are not necessary to convey the image. So, yes, there are no extra points in the corners or along any straight lines.

James.  :)
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #18 on: November 01, 2009, 08:27:02 pm »
Wow you have done a lot of work, and it also sounds like you are just about as excited about using C++ as I am, although I come from the dark side and use C++ Builder 2009 ;)

This laser thing is actually my full time job, and it is pretty much 24 hours a day, but I don't mind I love programming.

PS: I do all of the hardware design as well. The laser driver hardware is a scalable ethernet connected 32 Bit ARM9 + ALTERA Cyclone III FPGA Driving all the DACs, plus serial, digital, ADAT, Audio, MIDI, DMX. There is no limit to how many lasers etc that can be driven simultaneously, except obviously Network and PC CPU limitations.

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #19 on: November 01, 2009, 08:35:19 pm »
Interesting!

Back in late 2003 I had an opportunity to use someone else's stuff to make a laser show for First Night Akron 2004.

I used a QM-32 and recorded the results onto (my own) modified ADAT.

Once I saw the whole process, I knew I could do a much better job with nothing but a generic multi-channel sound card and my own software.

If you're making any money, you should hire me!  ;D

I know an awful lot about it!  ;) 8)

James.  :)
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline drlava

  • Sr. Member
  • ****
  • Posts: 314
  • Milliwatts: 18
    • View Profile
Re: Delayed Blanking
« Reply #20 on: November 01, 2009, 08:35:43 pm »
Sounds like you have done a lot of work already, and are putting together a very capable system!  Does any of this have a name yet, or company name?

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #21 on: November 01, 2009, 08:42:15 pm »
Back in 2000-01 I had a job where I worked with a Linux cross compiler to write code for ARM processors. That is why I started the EZFB project.

It's a Linux frame buffer API designed to control any kind of Linux display. Most of the hand held computers that had ARM processors in them had non VGA displays.

The first versions of LaserBoy were built on top of EZFB.

James.  :)

PS. I've never had a programming contract that wasn't 24/7 !  %)
« Last Edit: November 01, 2009, 09:07:13 pm by James »
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #22 on: November 01, 2009, 09:30:51 pm »
Hi drlava

Sounds like you have done a lot of work already, and are putting together a very capable system!  Does any of this have a name yet, or company name?


I am not sure how much I can say at the moment.

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #23 on: November 01, 2009, 09:37:31 pm »

Back in late 2003 I had an opportunity to use someone else's stuff to make a laser show for First Night Akron 2004.

Interesting, I started this whole project based on our ADAT (HDD Based) system. That is why I have a lot of ADAT IO designed into the hardware. What was the system you used, if you can say?

If you're making any money, you should hire me!

mmmm Interesting thought... How do you like Kangaroos.

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #24 on: November 01, 2009, 10:10:37 pm »
Quote
What was the system you used, if you can say?

Like I said, a QM-32. That's the Pangolin ISA board.

It was a bummer to work with. After I spent all the time to figure out how to work with the ILDA format WITH palettes, I came to realize that the software that came with that card had no way to read the ILDA palettes! So all of my cool effects were limited to those crumby 62 colors!  :P

Oh well. That's not my problem any more!

Quote
mmmm Interesting thought... How do you like Kangaroos.

I don't need that good of a reason to want to go to Australia!

I'd love that!  ;D

James.  :)
« Last Edit: November 01, 2009, 10:15:23 pm by James »
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #25 on: November 01, 2009, 10:29:09 pm »
I was pretty careful with my implementation to keep it as small as possible. You can load an outrageous amount of information into LaserBoy.

I'd like to work with it on a 100% 64-bit system!

James.  :)
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #26 on: November 01, 2009, 11:09:00 pm »
You mentioned that you don't put extra points in, in the case of a straight line for example. Does this mean that you interpolate points during output (that's what I do) ?

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #27 on: November 01, 2009, 11:10:18 pm »
Wow I feel privileged, i might be your 1000'th post.

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2132
  • Milliwatts: 47
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Delayed Blanking
« Reply #28 on: November 01, 2009, 11:18:06 pm »
I came up with a very simple approach.

I add equidistant vertices along any line that is longer than a number you can set from the interface.

You can "span" lit vectors with one stride and blank vectors with another.

You can also dwell in the corners based on what part of 180 degrees of an angle (you) are.

You can become a vertex in LaserBoy!  ;) ;D

When frames are put together into wave animations, the frames are always scanned at least once and in whole no matter what. A reasonable frames per second is achieved by coming as close as possible with the way it all falls out. Surprisingly, most of the time, it's pretty damn close!

If you really need to kick it in the nutz, you can fiddle with the optimization parameters and get it dead on.

James.  :)

OMG!

POST 1000 !!!

Weeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee !!!!!  ;D
« Last Edit: November 01, 2009, 11:20:51 pm by James »
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline dtewksbury

  • Jr. Member
  • **
  • Posts: 94
  • Milliwatts: 1
  • Gender: Male
    • View Profile
Re: Delayed Blanking
« Reply #29 on: November 02, 2009, 12:15:10 am »
Ha, that's almost exactly what I did. I have a value that you set, which is a maximum span, and vertices are added as it reads out the points to PCM. I had to do this because my animations change the distances between vertices. I treat blanks differently to visible as well. I also have some other optimizations, that may or may not be good, I can't decide yet, I am getting mixed results.

On one hand you get very quite scanners (and no blown fuses), but I know it knocks the frame rate out a bit.

Also I count the 'live points' which is the vertices generated due to distance etc. And this gets fed back into the animation engine every frame. This is cool because when you draw extra stuff while it is animating, or distances get bigger causing extra points, the animation speed stays exactly the same. That bit is working really well. Remember that I calculate animation in real time, as you draw, right to the laser. I wanted this thing to be very interactive, it's more exciting that way.

I have been looking through your code, you are way more diligent than me, I have to admit. I get caught up in the 'wow that's a great idea, let's try that' at 3 o'clock in the morning syndrome, and some stuff gets out of control.

 

SMF spam blocked by CleanTalk
SimplePortal 2.3.7 © 2008-2024, SimplePortal