{"id":74,"date":"2013-11-22T23:25:46","date_gmt":"2013-11-22T23:25:46","guid":{"rendered":"http:\/\/phoenixgamedevelopment.com\/blog\/?p=74"},"modified":"2013-11-23T01:33:22","modified_gmt":"2013-11-23T01:33:22","slug":"project-132-autostereoscopic-holographic-display","status":"publish","type":"post","link":"https:\/\/phoenixgamedevelopment.com\/blog\/project-132-autostereoscopic-holographic-display\/","title":{"rendered":"Project 132: Autostereoscopic Holographic display"},"content":{"rendered":"<h3>I have always wanted to create a &#8220;holodeck&#8221; or a completely immersive virtual reality environment. This is not yet possible with current technology, but various advancements have come close. The limiting factor in most cases in cost, however, I have discovered a simple method of creating a vert low cost 3D hologram.<\/h3>\n<h3>Firstly, I need to define some terms. When people think of holograms, and 3D displays, they often don&#8217;t use the correct terminology. A 3D display usually generates two flat (2D) images which are slightly offset from each other. These displays usually use some form of glasses (Shutter glasses, coloured glasses, etc) to ensure that each eye is seeing only one of the two images.\u00a0 The brain then creates a 3D image by combining the two flat images. This is essentially how our brain creates real 3D images, each of our eyes sees the world slightly differently, and the brain determines depth information by combining the image from both eyes. This is, however, not what many people would call &#8220;true&#8221; 3D, in the sense that it &#8220;tricks&#8221; the brain into displaying a 3D image.<\/h3>\n<h3>&#8220;Autostereoscopic&#8221; refers to a system which does not requre any kind of glasses or external hardware. This is something I find is important, since a lot of systems (particularly those which use shutter glasses) cause headaches, and some systems may require precise viewing angles.<\/h3>\n<h3>To create a true 3D image you need a &#8220;volumetric&#8221; display. These are, as the name suggests, displays with volume. They do not use stereoscopy to fool your brain into thinking it is seeing a 3D image, they actually create a 3D image. The simplest type of volumetric display are the &#8220;LED Cube&#8221; projects that you often see on youtube and on hobbyist electronic sites. Basically, this is a large number of LED&#8217;s arranged into a 3D cube and and by changing the colour, or turning th LED&#8217;s on or off, it is possible to create a crude image. This is fine for demonstrations, or for art projects, but for actually practical purposes, this approach is not suitable, and there is a very simple reason why. The lowest resolution that would be &#8220;useful&#8221;, I feel, would be 51 2x 512 pixels. Even this is very small by today&#8217;s standards, it&#8217;s been a very long time since game sor other graphics programs ran in that resolution, but to make a 3D LED cube would require 512 LEDS, multiplied by 512 LEDS, multiplied by 512 LEDs. This equals: 134,217,728. That&#8217;s over one hundred and thirty four MILLION LED&#8217;s!!! If each LED is an RGB LED, allowing for a colour display, then multiple that number by four. That is an awful lot of soldering!!! Something like this then, could only be done by a professional manufacturing process, not by a hobbyist.<\/h3>\n<h3>The second problem with this kind of technique is the difficulty in rendering data to it. You must create your own driver to control which LED&#8217;s are on and which are off, and what colour they should be. This is non-trivial.<\/h3>\n<h3>Other forms of volumetric display technology are in the pipeline, including plasma displays (an infrared laser is used to heat up the air at a precise point, which turns to a plasma, producing a visible point of light) and rotating\/moving displays. The moving displays have had some success, and are probably the best type of volumetric technology available. Basically, instead of making a 3D display, you make a flat plane, and rotate it quickly, relying on the persistence of vision effect to produce what looks like a 3D image. Some would say this involves some &#8220;trickery&#8221; like the stereoscopic display, but it allows you effectively remove a dimension, so if creating a display using LED&#8217;s, a 512&#215;512 display is now 262,144 LED&#8217;s. This is still impractical, but less so. Rotating displays are even more difficult to create from a programming point of view however, since not only do you have to figure out how to render the image in 3D, you also have to precisely calibrate the image rendering with the rotation of the display panel, which requires split-second timing.<\/h3>\n<h3><\/h3>\n<h3>I think I have discovered the best way to produce a large, 3D, holographic display, possibly with volumetric features. There are several products on the market which adertise themselves as &#8220;Holo Pyramids&#8221; or &#8220;3D pyramids&#8221;. These range from a device small enough to be used with the screen of a smartphone as the image source, to a device which uses a TV or computer monitor as the light source, and even some much larger models which use projectors as the light source. All of these products use a phenomenon called &#8220;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Pepper%27s_ghost\">Peppers Ghost<\/a>&#8221; to produce a 3D image which appears to hover in mid-air.<\/h3>\n<h3><a href=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/peppersghost.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-83 aligncenter\" alt=\"peppersghost\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/peppersghost.png\" width=\"240\" height=\"224\" \/><\/a><\/h3>\n<h3>The above graphic explains the concept. A projector (bottom of graphic) is hidden below a semi-transprent screen tilted at a 45 degree angle. The light from the projector hits the scren and is reflected towards the observer (red line). The observer perceives the image to be &#8220;floating&#8221; in the air in front of the screen.<\/h3>\n<h3><a href=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/3dpyramid.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-76 aligncenter\" alt=\"3dpyramid\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/3dpyramid-300x229.png\" width=\"300\" height=\"229\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/3dpyramid-300x229.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/3dpyramid-1024x782.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2013\/11\/3dpyramid.png 1118w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/h3>\n<h3>The above picture is my very rough idea for a 3D hologram generator. This is similiar to the aforementioned &#8220;hologram pyramids&#8221; that you can buy, with some modifications which I will come to in a moment. The basic mode of operation is that the Screen (which is normally a flat screen computer montor or TV) projects an image down onto a perspex or polycarbonate pyramid, the walls of which are at an angle of 45 degrees. The reflection of the light from the screen create the appearance of the object on the screen being in the center of the pyramid, seemingly floating, and with the appearance of depth. This can be quite a strong effect, there are many references to it on the internet. In order to produce the effect, the monitor must display four images, one for each panel of the pyramid. These images are then reflected onto the panels and combine to form the 3D image.<\/h3>\n<h3>The inside of the perspex or glass pyramid is usually coated with some kind of tinting material, similiar to the material used to tint car windows. This is done to reduce the effects of secondary reflection within the pyramid struction, which disrupts the 3D effect. Too much tinting however will make the 3D object very difficult to see. Using a projector instead of a screen may also cause this problem, and it will be important to source a projector capable of high brightness.<\/h3>\n<h3>I have made two changes from this basic concept. The first change is that instead of using a bulky, expensive monitor, I intend to use a projector. This will be cheaper (basic projectors cost less than \u20ac50 on eBay) more compact, and will be able to produce a much larger image than a computer monitor. Projecting the image onto the screen may be tricky, I would most likely make the screen thin enough the the image from the projector can be seen on both sides, mount the projector above it shining down onto it, and then mirror the projected image. The projector and screen assembly would likely be hidden from view, so this would not be noticed.<\/h3>\n<h3>The next thing I intend to do is quite clever. With conventional 3D pyramids, you only get the illusion of 3D. Since each panel of the pyramid is displaying the same image, walking around the display will not change the image. However, what if, instead of displaying an identical image on each panel, I display a different one? So that each image reflects a different &#8220;view&#8221; of the object? I think this will produce a much more accurate 3d representation of the object. This is similiar to what I am trying to build:<\/h3>\n<h3><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/ur0IvUxT4a8\" height=\"315\" width=\"420\" allowfullscreen=\"\" frameborder=\"0\"><\/iframe><\/h3>\n<h3>This system (built by ViTech) uses four projectors, so obviously they have used a separate projector for each panel of the pyramid. This would likely produce a much higher quality resultant image. It is not clear if each of the images is different, however, this effect would be difficult to achieve.<\/h3>\n<h3>Almost all movies, computer games, etc has only one &#8220;viewport&#8221;. To render this image from a different angle would require access to the raw data or the source code of the object to be rendered. This is not always possible. Thankfully, I will be rendering 3d models and scenes from games of my own creation, which means I will have source code access. This means I can\u00a0 create 4 cameras in the scene, offset and rotate them correctly, and render away to some texture, and then send this texture to the projector. In practice this may not be so simple, but the concept is sound.<\/h3>\n<h3><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>I have always wanted to create a &#8220;holodeck&#8221; or a completely immersive virtual reality environment. This is not yet possible with current technology, but various advancements have come close. The limiting factor in most cases in cost, however, I have discovered a simple method of creating a vert low cost 3D hologram. Firstly, I need [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,6],"tags":[],"class_list":["post-74","post","type-post","status-publish","format-standard","hentry","category-art-and-designs","category-inventions","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"aioseo_notices":[],"builder_content":"","_links":{"self":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts\/74"}],"collection":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/comments?post=74"}],"version-history":[{"count":20,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":98,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts\/74\/revisions\/98"}],"wp:attachment":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/media?parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/categories?post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/tags?post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}