Saturday, August 8, 2020

3D Photo Reel


I have been looking for alternative ways to show and distribute my 3D photos. The View-Master 3D reel inspired me to create an Android app that includes a stereo viewer and 3D media for presentation. I wanted an app that displays my media content on my glasses-free Rokit 3D Pro phone display. 


I wrote "3D Photo Reel Demo" Android app to explore the features most useful in the app viewer. One feature I wanted immediately was to be able to zoom (for very high resolution photo detail) and pan photos (for landscapes). Two finger expand and pinch perform zoom and shrink. Moving a finger in contact with the screen pans the image.

I noticed the 3D Photo app that came with the Rokit could not handle very high resolution photos because these photos were scaled down to a lower resolution for display. I want to display high resolution 3D photos and see the detail clearly. The disadvantage of working with high resolution photos is that the viewer is slow to load and process images. And you need a high end device with at least 4GB of RAM and fast processing hardware.






I thought the app might have some commercial applications too, for example, Real Estate listing 3D photos, product advertising, and virtual tours, to think of a few. Publishing photos as an app is a lower cost method than creating a View-Master reel.

I chose to include the 3D photo media with the app instead of downloading over the Internet.  With this design there is only a one time install setup without any additional steps for loading content. 



After getting the first version to work on the Rokit 3D Pro, I decided to expand the possible display devices. I added a mode selection feature for SBS, cross-eye SBS, half-width SBS, Above/Below, half-height Above/Below, Column (Rokit 3D) and Row Interlace, and Anaglyph variations. The SBS modes are for those skilled/lucky individuals who can free-view (left/right) or cross-eye view (right/left) side by side images.

Changing the mode for the display allows viewing on an external 3D TV or monitor (half-width SBS for example). To accomplish this I mirror the screen to my TV or connect via USB C. I also use Google ChromeCast Ultra connected to a 3D TV with good results to mirror a phone screen.

I have tested the app on various devices including the Sony XZ Premium (model G8142 modified to always display 4K with any app), Samsung S8 phone, and Samsung Chromebook Plus (configured to run Android apps). 

The app permits keyboard input either from a direct USB connection or a Bluetooth device/controller. A set of single key commands control various functions. I use this to help with debugging and it's also handy for remote control. The keyboard control features in the app are a super-set expanding what the GUI (graphical user interface) offers. The GUI is for novice first-time users while keyboard control is for advanced users. 

Function Key Mapping Tables

      Keyboard Input (USB or Bluetooth)

  • First Photo - MOVE_HOME, MEDIA_REWIND, "F"
  • Last Photo - MOVE_END, MEDIA_FAST_FORWARD, "L"
  • Next Photo - VOLUME_UP, Space Bar, TAB,  ENTER, MEDIA_NEXT
  • Previous Photo - VOLUME_DOWN, DEL, MEDIA_PREVIOUS, ESC
  • Slideshow (start/stop) - MEDIA_PLAY_PAUSE, "S"
  • Start Slideshow - MEDIA_PLAY
  • Stop Slideshow - MEDIA_STOP
  • Photo Information - "I", PERIOD
  • Zoom Cycle - "Z" 
  • Zoom In - "]"
  • Zoom Out - "["
  • Page In - PAGE_UP, ">"
  • Page Out - PAGE_DOWN, "<"
  • Reset Photo Position, Zoom, Parallax - "R", "0"
  • Swap Left/Right or Right/Left - "X"
  • Background Color Toggle- "B"
  • Menu - "M"
  • Mode Single Left - "1"
  • Mode Single Right - "2"
  • Mode Parallel SBS - "3"
  • Mode Parallel SBS Cross-Eye - "4"
  • Mode Parallel Half-Width SBS - "5"
  • Mode Above/Below - "6"
  • Mode Above/Below Half-Height - "7"
  • Mode Column Interlace - "8"
  • Mode Row Interlace - "9"
  • Mode Red/Cyan Anaglyph - "A"
  • Mode Color Anaglyph - "C"
  • Mode Dubois Anaglyph - "D"
  • Mode SPM Anaglyph - "J"
  • Parallax Screen Mode - "P"
  • Parallax Positive Step - "E"
  • Parallax Negative Step - "W"
  • Screenshot - "#"
  • Title Screen - "N"
  • Introduction Screen - "T"
  • Exit - BACK
Mouse Input (Wired or Bluetooth)
  • Left Button - Select On Screen Key or Move Photo
  • Right Button - 
  • Scroll Wheel - Zoom (not implemented)

Android TV Remote Control
  • Next Photo - CHANNEL_UP
  • Previous Photo - CHANNEL_DOWN
  • First Photo - MEDIA_REWIND
  • Last Photo - MEDIA_FAST_FORWARD
  • Zoom Cycle In and Out  - DPAD_CENTER
  • Move Photo Left - DPAD_LEFT
  • Move Photo Right - DPAD_RIGHT
  • Move Photo Up - DPAD_UP
  • Move Photo Down - DPAD_DOWN
  • Reset Photo Position, Zoom, Parallax - "0"
  • Mode Single Left - "1"
  • Mode Single Right - "2"
  • Mode Parallel SBS - "3"
  • Mode Parallel SBS Cross-Eye - "4"
  • Mode Parallel Half-Width SBS - "5"
  • Mode Above/Below - "6"
  • Mode Above/Below Half-Height - "7"
  • Mode Column Interlace - "8"
  • Mode Row Interlace - "9"
  • Mode Red/Cyan Anaglyph - PROG_YELLOW
  • Mode Color Anaglyph - PROG_BLUE
  • Mode Dubois Anaglyph - PROG_RED
  • Mode SPM Anaglyph - PROG_GREEN
  • Menu - CAPTIONS (subtitle)
  • Slideshow (start/stop) - MEDIA_PLAY_PAUSE
  • Slideshow Start - MEDIA_PLAY
  • Slideshow Stop - MEDIA_STOP
  • Photo Information - PERIOD
  • Exit - BACK