[DIY] Auto-Stereo with Parallax Barriers

Tutorials on how to create your own rigs, pics, movies, and everything that has to do with S-3D at home!
Post Reply
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

[DIY] Auto-Stereo with Parallax Barriers

Post by cybereality »

I've been reading about different methods for auto-stereoscopic conversion of standard 2d displays. There is one method I found using what are called Parallax Barriers, and it seems like it might be promising for a DIY project. The basic idea is that you use a filter over a standard screen, such that you can mask half of the vertical lines to one eye and half to the other without glasses. The filter could be a lenticular lens, or more interestingly, a transparent sheet printed with an opaque interlaced pattern. Due to the difference in viewing angles (from each eye) either the odd or even vertical lines will be masked. When displaying stereo3d content in a vertical interlace format you will effectually have an auto-stereoscopic display, albeit with a very small viewing angle. In theory, users could even print this out at home and convert their normal displays into 3d for next to no cost!

I didn't come up with this idea myself. I've heard about this method before on another forum years ago, but I'm not sure if anyone has actually pulled it off yet. Just recently I noticed the same technique listed on Samsung's R&D website (although the article is from 2004):
[The Samsung article is gone, however there are a multitude of patents on the technique, including the one from Samsung]

EDIT: Credit actually goes to Frederic Eugene Ives who came up with the idea in 1903! He even took out a patent:
Parallax_Stereogram.jpg
http://en.wikipedia.org/wiki/Frederic_Eugene_Ives" onclick="window.open(this.href);return false;

Here is a slide explaining the technique. I was going to draw my own, but this illustration is perfect:
ParallaxBarrier_Diagram.jpg
The one issue with this method is that the horizontal viewing angle would be really small (practically 0 degrees) and the focal distance fixed. I found some notes from the guy I had initially heard about the method from, not sure if he's on this board. I can't really make much sense of all of it, but there are some interesting ideas ( http://www.ponies.me.uk/lentikit/wiki/? ... %20Screens" onclick="window.open(this.href);return false; ). He talks about one method to increase the viewing angles. It would be to print thicker barrier lines, say 2 pixel for every one thats transparent. This give you only 1/3 of the total pixels, but allow for some movement in viewing angle (maybe 5 degrees).

Another issue is that you would need a really good printer that could print at the sub-mm level with accuracy on transparency film. I imagine many printers these days could do it, or you could go to a copy-shop and have it done for cheap. Different displays also have different dot pitch, so there couldn't be just one PDF to download and print. Each display type and/or size would need special templates. I'm thinking it might even be easier to do this on say the Samsung 50" 3d-ready set. Since its 50" at 720P the pixels would be large enough to accurately print barrier slits, although you would need access to a very expensive large-format printer.

Has anyone tried this? It seems like a promising idea for a DIY project. 3D without the glasses practically for free!!!!
You do not have the required permissions to view the files attached to this post.
Last edited by cybereality on Mon Oct 05, 2009 6:17 pm, edited 1 time in total.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Good in theory.

Post by android78 »

I'd looked at this previously and here's what I found (Please excuse the crude ASCII art):
You need to reduce the resolution of and LCD the monitor to 1/3 - 1/4 its native resolution.
Why: An LCD monitor has RGB elements vertically striped so if you have

Code: Select all

  |Right| Left|Right|
  |R|G|B|R|G|B|R|G|B|
  |R|G|B|R|G|B|R|G|B|
  |R|G|B|R|G|B|R|G|B|
Then you put barriers over every second pixel (I'm using # for elements being blocked a blockout barrier)

Code: Select all

  |Right| Left|Right|
  |#|#|#|R|G|B|#|#|#|
  |#|#|#|R|G|B|#|#|#|
  |#|#|#|R|G|B|#|#|#|
Which is fine, but if you have even a tiny bit of movement then you end up spanning to the next pixel, which is meant for the other eye causing bad ghosting:

Code: Select all

  |Right| Left|Right|
  |R|#|#|#|G|B|R|#|#|
  |R|#|#|#|G|B|R|#|#|
  |R|#|#|#|G|B|R|#|#|
Or, if you use thicker lines (as you had suggested to give greater viewing angles) the colour will be wrong (you see the example is 1 1/3 pixels):

Code: Select all

  |Right| Left|Right|
  |#|#|#|#|G|B|#|#|#|
  |#|#|#|#|G|B|#|#|#|
  |#|#|#|#|G|B|#|#|#|
So to combat that, you need to have at least two pixels on the screen to display one pixel of the image:

Code: Select all

  |   Left    |  Right    |   Left    |
  |R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|
  |R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|
  |R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|
Now add the blockout layer:

Code: Select all

  |   Left    |  Right    |   Left    |
  |#|#|#|#|#|#|#|G|B|R|G|B|#|#|#|#|#|#|
  |#|#|#|#|#|#|#|G|B|R|G|B|#|#|#|#|#|#|
  |#|#|#|#|#|#|#|G|B|R|G|B|#|#|#|#|#|#|
As you can see, this works better, but you still end up with twice the amount of a couple of the colours. So you would have to make it a 2 blockout to 1 see through fairly accurately:

Code: Select all

  |   Left    |  Right    |   Left    |
  |#|#|#|#|#|#|#|#|B|R|G|#|#|#|#|#|#|#|
  |#|#|#|#|#|#|#|#|B|R|G|#|#|#|#|#|#|#|
  |#|#|#|#|#|#|#|#|B|R|G|#|#|#|#|#|#|#|
Now you can probably see the issue is that you have only 1/3 rd the light from the display coming through so you'd have to max the display brightness, which will reduce the contrast. Also, the you must place the barrier layer much further from the display for example:
A Using alternating every second pixel the barier layer will be quite close:

Code: Select all

  |R|G|B|R|G|B|R|G|B| 
        |    /|     / 
        |   / |    / 
        |  /  |   / 
        | /   |  / 
        |/    | / 
        /     |/ 
  |#|#|#|O|O|O|#|#|#|
Alternating every second pixel the barrier is much further away:

Code: Select all

  |R|G|B|R|G|B|R|G|B|R|G|B|R|G|B|R|G|B | 
                  |     |     /    / 
                  |     |    /    / 
                  |     |   /    / 
                  |     |  /    / 
                  |     | /    / 
                  |     |/    / 
                  |     /    / 
                  |    /|   / 
                  |   / |  / 
                  |  /  | / 
                  | /   |/ 
                  |/    / 
  |#|#|#|#|#|#|#|#|O|O|O|#|#|#|#|#|#|#|
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

Some interesting thoughts there android78. I didn't factor in the sub-pixels, I see what you are saying.

What if you put the screen side-ways for portrait only? Would that fix the problem?
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

That's a good point and should eliminate the issue of sub pixel elements. I'd be interrested to know if anyone has tried this.
Something else that I had tried previously was, years ago when Tazos first became popular in Australia with the chip companies, one of the competing chip companies developed a thing where you got cards and they had a lenticular lense viewer you put them under which gave you a motion viewable card. I managed to work out the resolution of the viewer, and combined two line art images I'd created, printed them (this was about 14 years ago) on a dot matrix printer and this actually worked! It was crude, but fun proof of concept.
I'm not sure if there is some manufacturer out there that would produce a large lenticular lense sheet, but that would be cool to try!!!
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

You may be able to do something if you got one of these:
http://www.hzfancy.com/showpic.asp?id=72
It's only 20 LPI, but it seems to be the only one that would work correctly. Given that a 22" widescreen monitor with 1600*1280 would be approx. 80 columns per inch and you need the lens to be less then half that and there's no 40 LPI lenticular that I can find. with these, you may even be able to combine 4 images from different angles so you could move your head a little and see the image 'more' correctly still.
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

android78 wrote:You may be able to do something if you got one of these:
http://www.hzfancy.com/showpic.asp?id=72
It's only 20 LPI, but it seems to be the only one that would work correctly. Given that a 22" widescreen monitor with 1600*1280 would be approx. 80 columns per inch and you need the lens to be less then half that and there's no 40 LPI lenticular that I can find. with these, you may even be able to combine 4 images from different angles so you could move your head a little and see the image 'more' correctly still.
Thanks for the link, thats pretty much what I was thinking. That might even be the same type of lenticular lens they used on the movie poster that got me thinking about this again. It was a poster for Speed Racer, I think, but it had really good 3d effects with multiple angles. There were at least 3 different angles I could tell. And it looked fine without any glasses. I mean, if they can do this cheap enough for some throw away movie poster, surely it could work on a screen.

Like you said, the multiple angles would solve one of the problems. When you move to the side with just 2 streams R-and-L then the eyes will become switched. However if you had, say, 4 different streams (Far R-R-L-Far Left) then this would fix it. Because if you moved one unit to the right you would still get 2 streams with the correct orientation. So instead of doubling-up the lines, it would just display a strip of a different angle. I'm not sure, but this sounds like it should theoretically work, assuming the LPI on the lens was a perfect match with the screen resolution. That would be even crazier, its like free headtracking!!!
User avatar
Okta
Golden Eyed Wiseman! (or woman!)
Posts: 1515
Joined: Tue Feb 12, 2008 5:22 am

Post by Okta »

Very interesting. So with the the right filter and matching drivers we have glassless 3d although with half the horizontal resolution? Amazing that this hasnt been marketed already.
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

Okta wrote:Very interesting. So with the the right filter and matching drivers we have glassless 3d although with half the horizontal resolution? Amazing that this hasnt been marketed already.
It has, but its SUPER expencive (autostereoscopic displays).
some/many of them have more 'hotspots', so more users can use it at once. I think the Phillps 3D tv has up to 9 streams :!:


about the lines and 3D ready TV: Wouldn't it be possible to make cheackerboard instead of the lines? It should work similar, but you'd have to make shure the width AND the height alaignment is absolutly correct :roll:

Next Idea/question:
What about CRT? Do they have subpixels? It could be more easy to get it working on CRT, because you could change the resolution to fit the mess you created/printed :-)


slightly off toppic, but does someone know, if you could make or print similar polarizers? Just attach them to the screen and you can turn an LCD into a 3D (Zalman like) monitor.

edit: What about the driver? Who will produce a driver, which has interlaced only every 2 rows? Or which creats 4 streams :?


edit2:
Would a .BMP image in Black+White do the job? Maybe generated by a program, so you can choose, the resolution. And then you'd have to rezise it to get the right size for the screen. Is it helpfull, of would you loos quality, if you rezise it for printing???

edit3:
@ printers: I looked on ebay and found some common printers - which do around 1200 dpi. If you compare that to a and LCD it's much.
LCD has about 1200 pixels (=dots) on 19". So the printer has up to 19 times as much resolution!
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

LukePC1, thanks for joining the discussing. You've brought some interesting ideas to the table.

I guess checkerboard would be possible for a printed barrier screen, although I don't think that would work with a lenticular lens. The checkerboard would also restrict movement in both axes to next to nothing. With an interlaced barrier you could at least have movement within one axis. Although I guess it theory you could use the same principle on a checkerboard format, it would seem to introduce more issues into the setup. Although it would work with the Samsung's, which would be nice.

Yeah, I assume a CRT would be easier to work with, in respect to adjusting the resolution. However seeing as shutter-glasses work on a CRT, there seems to be more demand in converting an LCD monitor to 3d. Although using a CRT for testing purposes seems like a good idea.

And who would produce a driver? Well I guess we would have to do that ourselves. This is the DIY section after all. :lol:

Well, for 3d photos and videos, you could convert the content to a 4 stream (or more) method. Like taking 4 L-R images and run a photoshop script that would output the correct format. A similar method could be used for 3d video, although it would be a bit more work. For games, it would be a whole lot harder, but it could work for custom applications and mods of open-source games or engines.

A BMP would probably work like you said but you cannot scale the image. The print needs to be accurate to the sub-mm level so scaling is not a good idea. Each template would need to be based specifically on the panel size and resolution (although it could be dynamic with say vector lines and a script in Photoshop). If this idea actually worked, I'm sure users would be willing to upload their templates for specific monitor types.

Also, that is a really interesting idea about printing polarized lines. I don't know what type of ink you would need to do this (if its even possible at all), but I like the train of thought.

And I found one place that has a 40LPI lenticular lens for sale. A box of 25 sheets at 20" x 28" go for $165, which is about $7 a piece. That would fit any LCD display 24" or less.
http://lenstarlenticular.com/Single/flatbed.htm
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

@ driver: there is an vertically interleaved driver by nvidia for gforce 7 and SeeReal. I think they produce autosteroscopic screens similar to our diy ones :D

@ BMB
You can't do anything but create a BMP for every resolution, can you? The printer has to resize it on its own to fit the screen...
for 800x600 there have to be 400 lines, right? I think most printers should be capable of printing this. Most CRT's are too, so I could even change the size of the CRT's (I've got 21, 19 and 17 afaik)...
I think I'll look into creating such a BMP - i.e. a program that creates it


@ lenticular lens:
can you explain a little more, what it does? Does basically the same as the 'blocking' of the wrong pixels, but from more viewing positions?

If that assumptionis right, what is LPI? And how high has it to be? I think CRT is in advantage again, because of costumizeable resolutiond :D
- if I got the wrong lens I'll have to use a different resolution, but I can still judge, if the picture is good...
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
Dyssident
One Eyed Hopeful
Posts: 40
Joined: Thu Apr 03, 2008 11:31 pm
Location: US

Post by Dyssident »

I doubt this project could be done but good luck in trying :)
LukePC1 wrote:What about CRT? Do they have subpixels?
If you're going to try a CRT, it would have to be an aperture grille model. Shadow mask CRTs have the subpixels arranged in triangular triads so you couldn't just use straight filters. Aperture grilles are arranged RGB vertically so it would be the only real possibility.
Tril
Certif-Eyed!
Posts: 655
Joined: Tue Jul 31, 2007 6:52 am
Location: Canada

Post by Tril »

I think you would have more chance to get this working with an LCD monitor than a CRT monitor. On a CRT monitor, the pixels are not a fixed distance from each other. You can adjust the vertical/horizontal size and position, the pincushion and a ton of other settings to try to get the picture straight. You can't assume that all the pixels on the same row or columns are really displayed in a straight line.

On the other hand, an LCD monitor is much more perfectly straight. The rows and columns should be straight.
CPU : Intel i7-7700K
RAM : 32 GB ram
Video card : GeForce GTX 980 Ti
OS : Windows 10
Display : Samsung UN40JU7500 Curved 40-Inch UHD TV with shutter glasses
HMD : Oculus Rift

Image
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

LukePC1 wrote: @ lenticular lens:
can you explain a little more, what it does? Does basically the same as the 'blocking' of the wrong pixels, but from more viewing positions?
A lenticular lens will act to magnify the strips in an interlaced image at different viewing angles. Its basically just an array of magnifying glasses. It doesn't "block" light, it just disperses it at different angles.

There is a good explanation on lenticular lenses here:
http://www.stereoscopy.com/faq/lenticular.html

There is one company that appears to have got this concept working, but they have some outrageous prices for their equipment (it says 'contact us for pricing', which means its too much!!!)
http://www.iart3d.com/ENG/Products/Auto ... it_Eng.htm

They are charging $3,000 for a 20" display, thats like a $200 monitor w/ $10 worth of plastic. No thanks. Their software may prove useful though...
User avatar
Dyssident
One Eyed Hopeful
Posts: 40
Joined: Thu Apr 03, 2008 11:31 pm
Location: US

Post by Dyssident »

Tril wrote:You can adjust the vertical/horizontal size and position, the pincushion and a ton of other settings to try to get the picture straight. You can't assume that all the pixels on the same row or columns are really displayed in a straight line.
In my opinion, these qualities make the (aperture grille) CRT the best choice to try this out with. You'd be able to adjust things all day long to match your filter, the curvature of the screen, your distance from the screen, and anything else you come across. Without this flexibility you'd going crazy with making/adjusting the filter.

I think the best place to start would be to make a basic 3D test image and try printing out filters on transparency sheets just to get an initial (inexpensive) feel for the project.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

LukePC1 wrote:about the lines and 3D ready TV: Wouldn't it be possible to make cheackerboard instead of the lines? It should work similar, but you'd have to make shure the width AND the height alaignment is absolutly correct
As pointed out by cybereality, this would be very difficult to implement without too much issues. It could possibly be done with many, many lenticular lenses with an offset, but I think this would end up more trouble then it's worth, especially when I don't think there'd be any manufacturer that would make these given the additional complexity and limited use.
LukePC1 wrote:What about CRT? Do they have subpixels? It could be more easy to get it working on CRT, because you could change the resolution to fit the mess you created/printed.
CRT could work, however, the problem is that for this to work correctly you need accurate pixel placement with no bluring betweenone column of pixels and the next. On a CRT, since it uses a method of iluminating phosphorus, a single dot on a black screen looks kind of like (use your imagination):

Code: Select all

0|0000|0110|0000|00
0|0001|1221|1000|00
-------------------
0|0001|2332|1000|00
0|0012|3333|2100|00
0|0001|2332|1000|00
-------------------
0|0001|1221|1000|00
0|0000|0110|0000|00

Where:
   | is the pixel column devision
   - is the pixel row devision
   0-3 are the levels of light intensity
So you will get a lot of bleeding between pixels which will give a lot of ghosting. If you set the resolution really low, then it could work though.
LukePC1 wrote:slightly off toppic, but does someone know, if you could make or print similar polarizers? Just attach them to the screen and you can turn an LCD into a 3D (Zalman like) monitor.
I thought I read on a forum somewhere someone had found a source for a celophane sheet that did this. I could be wrong though as I can't find it now.

I'm thinking this would be good for static images. Compression can become a real issue if having movies (or even compressed images) since they both use DCT for compression which doesn't handle hard edges at all well. This is until someone manages to create a driver that supports this.

I found out that my monitor at home actually only is 17" wide (widescreen 21") so at full resolution (1680) this is approx. 100 pixels per inch so 50LPI lenticular would probably work ok. There'd still be issues with displaying the sub-pixel elements. good find with the lenstar site, cyber. My concern would be that 49 deg. viewing angle may mean thatyou'd have to view it from too close. I've seen the ones that are stated as being for 3D use seem to be about 35 deg.
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

I just had a random idea. How accurate would you need a headtracker to be in order to use it to flip the interweaving in real-time? So go back to the original idea of an ink-jet printed barrier screen. Then have a web-cam or TrackIR calculate the viewing angle, then alternate the L-R signals to match the eyes. Assuming there was a tracker with pin-point accuracy this might work.
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

cybereality wrote:I just had a random idea. How accurate would you need a headtracker to be in order to use it to flip the interweaving in real-time? So go back to the original idea of an ink-jet printed barrier screen. Then have a web-cam or TrackIR calculate the viewing angle, then alternate the L-R signals to match the eyes. Assuming there was a tracker with pin-point accuracy this might work.
LOL? This could become a (expencive!) commercial project - if it's not in development already.

If I understand right you could view from nearly every angle - but only one person at once. The distance would have to be correct, but that shouldn't be too hard for the user.

I don't have much time now, but will comment later after I've done more research.
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

Not to rag on the idea (because I think it's cool thinking), but if you have to wear something then why not just wear polarized glasses? This only adds small complexity and two inexpensive pasive components. Adding a camera and leds and then running the software for head tracking as well as the usual S3D drivers is starting to get too complex.
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

android78 wrote:Not to rag on the idea (because I think it's cool thinking), but if you have to wear something then why not just wear polarized glasses? This only adds small complexity and two inexpensive pasive components. Adding a camera and leds and then running the software for head tracking as well as the usual S3D drivers is starting to get too complex.
You have a point, you shouldn't have to wear anything (its supposed to be auto-stereo after all). But it might be a fun experiment if the initial idea proves successful.
Sabre2552
Two Eyed Hopeful
Posts: 71
Joined: Sun May 04, 2008 10:59 am

Post by Sabre2552 »

Well, there is eye-tracking software without the need of a headset, so couldn't head-tracking software be developed without needing a headset?
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

Back to topic:
I just noticed, that I could make a the bmp with black and white bars ever other line or volumne relativly easy with stereo photo maker:

1) Create a black and a white picture in the right resolution (full resolution)
2) load them as left right pictures with stereophotomaker
3) set them in interlaced or interleaved
4) save them as a interlaced S-3D picture. Now you have the lines = the paralax barriers...


Interlaced seems to work for me, but vertically interleaved makes red and green columns :-(
well if Interlaced works, I would have to turn the sheet, so it shouldn't be a big problem (maybe resolution).

This picture is going to be printed on a OHP transparency. I'm not shure about rezising (zoom in), but it could be handled by changing resolution (if there is anogh chice :D )

Since I'm only testing and can't have it correctly at the first try, I won't do all the math, but change resolution later on my CRT or try a different (smaller) CRT...
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

Ok cool. I was just going to use Photoshop, but surely there are other ways to generate interlaced images.

I've ordered some transparency film, so hopefully it will arrive in the next few days so I can test this idea out soon.

Also of some interest, the old Nvidia driver does supports vertical interweaving with the SeeReal option. So if this method works, we already have a driver. :lol:
User avatar
Okta
Golden Eyed Wiseman! (or woman!)
Posts: 1515
Joined: Tue Feb 12, 2008 5:22 am

Post by Okta »

Just throwing something in a random though here. Would it be usefull to have say a dead row of pixels between each left/right vertical stereo row to create a dead zone to allow for slight head movement without ghosting. This would lower the horizontal resolution and add vertcial interlace gaps but might be worth the ghosting battle.
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

It certainly would help, but the driver is the problem then...
nothing new... still have to print it on a good printer...
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

I got some transparency film and tried to do a quick test. I printed a barrier with 2 black pixels for each transparent pixel. I couldn't find the exact specs for my monitor so I just measured it and did some math. I'm not sure how accurate I was. Anyway, so far I'm not getting any results (just one test so far). The printer printed it, but its a bit dark all around. I don't think my printer is good enough. I tried it out on the screen anyway, all I could get was the moire pattern. The print was just too muddy to even tell what I was seeing. I'm going to try a few different interlace patterns, but I think I will need a better printer.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

Good to hear your tests. I was wondering at what distance from the screen you were using the barrier? You should be able to work out the distance you need with the following math:

Code: Select all

(Z-B)/B = E/P
Where:  Z is the distance from the viewer to the screen
        B is the the distance from the barier and the screen
        E is the distance between your eyes (approx 6 cm)
        P is the width of a pixel

Which translates to 
Z/B-1 = E/P

Z/B = E+P/P

B = PZ/E+P
So for my monitor it is approx 428 mm wide and 1680 pixels so:

Code: Select all

P = 428/1680 = .254762 mm wide
Z = 800 mm
E = 60 mm
which gives

Code: Select all

B = (.254762*800)/(60+.254762)
  = 3.38246 mm
Or if you are using two pixels for one, you should approximately double this distance (to about 6.5 mm).

Edit: I just tried this using three verticle lines on a piece of clear packaging plastic (with a permanent marker) that are approx 1.2 mm apart and drew 3 lines (using paint) which are two black pixels then two white pixels. Holding this at about 6 mm and close one eye and line up one of the lines on the screen in the middle of the black lines on the plastic. Then open the other eye and I can see the white with one eye, black with the other... proof of concept worked! ... now for the big piece of plastic ... then onto writing a driver for this. lol.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

Closeup of the slid that I made... very crude, so I wasn't expecting much:
Note: one thing I worked out while doing this is to get such fine lines even, it was best to use two pieces of card side by side and slightly thicker marker. You can see the first two I did weren't even from end to end because I was using a ruler only.
Image
Here are photos taken, one from left eye and the other from right (Sorry about the focus on the right one). For this test I tried with vertical lines of two pixels width. RRBBRRBBRRBB:
ImageImage
So my calculation seems about correct.
1 thought, when doing the printing, you may need to turn of the printers automatic scaling and that sort of thing or else you won't get accurate sizing.
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

so the problem is now: how to get that many lines at exactly the right distance and width onto the plastic without blurring?

Could it be achived with a better printer or is the color 'running' on the plastic, so it can't be sharp at all?
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
Likay
Petrif-Eyed
Posts: 2913
Joined: Sat Apr 07, 2007 4:34 pm
Location: Sweden

Post by Likay »

We have a shop in city that maybe has transparent overheadfoils. I have a cheap laserprinter and could check i it does the trick. (Yes, this topic makes me curious). :D

cheers
Mb: Asus P5W DH Deluxe
Cpu: C2D E6600
Gb: Nvidia 7900GT + 8800GTX
3D:100" passive projector polarized setup + 22" IZ3D
Image
Tril
Certif-Eyed!
Posts: 655
Joined: Tue Jul 31, 2007 6:52 am
Location: Canada

Post by Tril »

I think some photocopiers can print on transparency film. If the problem with your printer is that it can't print on transparency film, you could print on regular paper and use a commercial photocopier to print on the transparency film.

Or you could use a local printing company close to where you live. They could print directly from the computer file. You could print on larger transparency film if they have a printer that can print on bigger paper than yours.
CPU : Intel i7-7700K
RAM : 32 GB ram
Video card : GeForce GTX 980 Ti
OS : Windows 10
Display : Samsung UN40JU7500 Curved 40-Inch UHD TV with shutter glasses
HMD : Oculus Rift

Image
User avatar
Likay
Petrif-Eyed
Posts: 2913
Joined: Sat Apr 07, 2007 4:34 pm
Location: Sweden

Post by Likay »

True. But i also think there's need to calibrate the exact size (if using pixelseparation). Then the barrier should match the pixelsize and number (minus a half pixel or less over the whole horisontal length of the lcdscreen...). There should be possible to simply use extra transparent film to adjust the distance between the lcd and the barrier right. There's already some distance because of the lcd-polarization and protection foil and maybe that's enough (probably not). Still think i need to print out a number of sheets with very slight difference to be able to see what matches best. Subpixels (3 on each pixel) makes it even harder but they are arranged horisontally on the lcd. I'll try today and see what resolution and quality the printer have on ordinary paper. Can't have too much hope. It's a color laser for about 190 euros (hp color laserjet 1600). o.O
If the printer can't handle it i'll probably (maybe) give up and watch others success. :D
Shop closed so i have to try next day.

cheers
Last edited by Likay on Mon Jun 30, 2008 9:53 am, edited 1 time in total.
Mb: Asus P5W DH Deluxe
Cpu: C2D E6600
Gb: Nvidia 7900GT + 8800GTX
3D:100" passive projector polarized setup + 22" IZ3D
Image
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

for your 7900 I'd suggest the 'old' NV driver. It has vertically interleaved (see real) somewhere. However it can only work if you have bars, which are only 1 pixel wide...
And if it has not the correct alignement (or the printing is) you have horrible ghosting :-(

I'm curious to find out, how to have the best quality of the printed 'picture'.
- you could either zoom the picture to the right size or
- you could make a picture with multiple pixels and zoom it, so that it only covers one pixel after it is printed...
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
Likay
Petrif-Eyed
Posts: 2913
Joined: Sat Apr 07, 2007 4:34 pm
Location: Sweden

Post by Likay »

Second alternative definitely. Then you're also able to make those fine adjustments that might be necessary.
Mb: Asus P5W DH Deluxe
Cpu: C2D E6600
Gb: Nvidia 7900GT + 8800GTX
3D:100" passive projector polarized setup + 22" IZ3D
Image
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

I'm thinking I may need a better inkjet printer, or maybe a b/w laser printer would work best. If you look below the print looks almost like solid black, you can barely see the interlaced pattern:
DIY_AutoStereo2008_01.jpg
@android78: That is a good proof of concept, but a black marker is different than a printer. The issue I'm having is that each line is not dark enough to block out the light. The transparent parts are also muddy, but I think that is just due to using a shabby old printer with color ink. So looking through it is just a blur. Still, I think its safe to say that the method can work assuming everything were calculated and printed correct.
You do not have the required permissions to view the files attached to this post.
Last edited by cybereality on Mon Oct 05, 2009 6:35 pm, edited 1 time in total.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

LukePC1 wrote:for your 7900 I'd suggest the 'old' NV driver. It has vertically interleaved (see real) somewhere. However it can only work if you have bars, which are only 1 pixel wide.
... or it would work if you use half the horizontal resolution and the barriers are 2 pixels wide.
cybereality wrote:That is a good proof of concept, but a black marker is different than a printer. The issue I'm having is that each line is not dark enough to block out the light.
True. I believe that we will need a laser printer since these will actually put a layer of carbon on the transparency. The issue with ink printers is that the ink will run too much, especially with the high resolution of todays monitors.
Remember too that you need the distance between the lines of the barrier has to be slightly less then the screen resolution because the barriers need to be closer to the center of the screen at the edges to compensate for the difference in angle between the left and right of the screen.
User avatar
LukePC1
Golden Eyed Wiseman! (or woman!)
Posts: 1387
Joined: Wed May 16, 2007 11:30 am
Location: Europe
Contact:

Post by LukePC1 »

android78 wrote:
LukePC1 wrote:for your 7900 I'd suggest the 'old' NV driver. It has vertically interleaved (see real) somewhere. However it can only work if you have bars, which are only 1 pixel wide.
... or it would work if you use half the horizontal resolution and the barriers are 2 pixels wide.
you mean you set the resolution so, that the monitor is upscaling the image?`Sounds like it would work, but wouldn't deliver best results in tearms of resolution... but it could help with ghosting and stuff... Would be OK for tests I think...

what do you think of this:
http://www.dooyoo.co.uk/led-printer/oki-okipage-14ex/
Would it be good enough to do the job or is it better not even to think of it?
I'm not shure if it is 600dpi or 600x1200dpi. I found different values for it...

In theory this resolution should be more than enough... but who knows :roll:
Play Nations at WAR with this code to get 5.000$ as a Starterbonus:
ayqz1u0s
http://mtbs3d.com/naw/" onclick="window.open(this.href);return false;

AMD x2 4200+ 2gb Dualchannel
GF 7900gs for old CRT with Elsa Revelator SG's
currently 94.24 Forceware and 94.24 Stereo with XP sp2!
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

LukePC1 wrote:what do you think of this:
http://www.dooyoo.co.uk/led-printer/oki-okipage-14ex/
Would it be good enough to do the job or is it better not even to think of it?
I'm not shure if it is 600dpi or 600x1200dpi. I found different values for it...

In theory this resolution should be more than enough... but who knows :roll:
I would think it should be quite sufficient since (for my monitor at least with .25 mm wide pixels) that would be approx. 60 dots per pixel (at about .0042 mm between dots). And being a laser, it should have nice and sharp, well defined edges.

I'm at work at the moment so I haven't had a chance to calculate how much difference you need to compensate for the angle difference for the edge of the screen yet. I think though that you'll have to have the total width to be about 7 pixels skinnier then the total of the viewable width of the screen, with half as many black lines as the horizontal resolution. That is assuming approx. 420 mm width of screen and distance between eyes being 60 mm.
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Post by cybereality »

Ok, I've taken a step back and just tried an easier proof of concept, this time with only 18 barrier lines on a 6" square. In this case my printer seemed to hold up and I got a nice dark print. I guess it just needed some room to breathe. Anyway, I decided to just do the whole thing by eye, because thats all that really matters anyway. So I printed out the pattern, then taped it to the screen and scaled the digital pattern so it was a perfect match. The transparent print is black and the pattern on the screen is green (both same exact actual size). I put a piece of cardboard to offset it from the screen. Its not much yet, but some promising initial results. Please note that those photos are not at eye distance seperation. I just moved the camera about 25cm to the side, but that would be scaled down obviously for real use.
DIY_AutoStereo2008_02.jpg
DIY_AutoStereo2008_03.jpg
So far there are only a few bars in the middle that sort of work, I still need to design the real pattern which would adjust for the sides.

But even a couple of lines are something, definitely enough to keep me going.

EDIT: Also, I'm using Sparco inkjet transparency film. Got a box for 50 for like $12. Seems like decent enough quality, but maybe the more expensive brands would do better with a high-res print.
You do not have the required permissions to view the files attached to this post.
Last edited by cybereality on Mon Oct 05, 2009 6:40 pm, edited 1 time in total.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

cybereality wrote:Ok, I've taken a step back and just tried an easier proof of concept,
...
So far there are only a few bars in the middle that sort of work, I still need to design the real pattern which would adjust for the sides.
Nice job!!!
ok, I've worked out the math for how wide the barier sheet needs to be:

Code: Select all

Xs/Zs = Xb/Zb
Where:  Zs is the distance from the viewer to the screen
        Zb is the discance from the viewer to the barier layer
        Xs is the viewable width of the screen
        Xb is the width of the barier layer

translates to 
Xb = XsZb/Zs

so using my example from before:
Zs = 800 mm 
Zb = 800 - 3.38246 = 796.61754 mm
Xs = 428 mm

we get 428*796.61754/800 = 426.19038 mm wide for the 840 lines and 840 spaces, using single pixel width.
Edit: You can double the difference if using half resolution (double pixel width) which should be about 424.38 mm wide for 420 lines and 420 spaces which are 6.76 mm from the pixels on the screen. Remembering that the actual pixels will be about a mm or so behind the glass.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Post by android78 »

If anyone manages to make a barrier layer, you can use the following to test it:
Image

Note that this is for barrier layer of 1 pixel width, you can zoom in double if 2 pixels, obviously.
Post Reply

Return to “Do it Yourself!”