User Tools

Site Tools


project:arvr:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:arvr [2014/05/22 19:48] lexikproject:arvr:start [2016/11/28 01:55] (current) ruza
Line 1: Line 1:
 +====== Augmented/Virtual Reality ======
  
 +{{template>project:infobox|
 +name=Augmented/Virtual Reality|
 +image=vr.png?200|
 +sw=?|
 +hw=?|
 +founder=[[user:stick]]|
 +interested=[[user:biiter]],\\ [[user:tomsuch]],\\ [[user:ruza]],\\ [[user:aym]],\\ [[user:lexik]]|
 +status=suspended}}
 +
 +~~META:
 +status = suspended
 +&relation firstimage = :project:vr.png
 +~~
 +
 +We have [[http://www.vuzix.com/consumer/products_vr920.html|Vuzix iWear VR920]] and shutter glasses available for projects.
 +
 +===== Ideas =====
 +
 +  * Depth Perception
 +    * http://xkcd.com/941/
 +  * Kinect + VR
 +    * http://www.engadget.com/2010/12/21/kinect-paired-with-vuzix-vr920-shades-creates-zany-virtual-real/
 +  * Plane Model + Cam
 +    * http://www.autoblog.com/2011/08/31/r-c-f16-jet-with-swiveling-pilots-view-blows-our-tiny-little-mi/
 +  * Wireless Head Mounted Display
 +    * http://www.pabr.org/wxhmd/doc/wxhmd.en.html
 +===== Driver =====
 +==== eDimensional ====
 +Edimensional controller se inicializuje barevnyma kodoma v horni casti obrazovky. Kody se zjisti z programu E-D.exe na adrese 0x004010A9. Program si uklada nastaveni do registru v rutine na adrese 0x00401491.
 +
 +Aktivace synchronizace LEFT/RIGHT obrazu se signalizuje pres DDC na VGA konektoru.
 +
 +=== sprovozneni pod linuxem (incomplete) ===
 +<code>
 +# modprobe i2c-dev
 +$ i2cdetect -l
 +$ cat /sys/bus/i2c/devices/i2c-X/device/device/card0-VGA-1/edid
 +</code>
 +
 +=== reference ===
 +  * [[http://www.hardwarebook.info/VGA_(VESA_DDC)|VGA (VESA DDC)]]
 +  * [[http://jaffar.cs.msu.su/oleg/ddcci/|Linux DDC/CI Tool page]]
 +  * [[https://xgoat.com/wp/2007/11/11/using-i2c-from-userspace-in-linux/|Using I2C from userspace in Linux]]
 +
 +==== Vuzix vr920 ====
 +Bryle se ovladaji pres USB.
 +USB descriptor zarizeni obsahuje krome audio kanalu a headtracking sensoru jeste display controller kterym lze prepinat obraz na levem a pravem oku.
 +
 +<code>
 +    Interface Descriptor:
 +      bLength                 9
 +      bDescriptorType         4
 +      bInterfaceNumber        4
 +      bAlternateSetting       0
 +      bNumEndpoints           2
 +      bInterfaceClass       255 Vendor Specific Class
 +      bInterfaceSubClass      0 
 +      bInterfaceProtocol      0 
 +      iInterface              4 VR920 3D Stereo Control
 +      Endpoint Descriptor:
 +        bLength                 7
 +        bDescriptorType         5
 +        bEndpointAddress     0x84  EP 4 IN
 +        bmAttributes            2
 +          Transfer Type            Bulk
 +          Synch Type               None
 +          Usage Type               Data
 +        wMaxPacketSize     0x0040  1x 64 bytes
 +        bInterval               1
 +      Endpoint Descriptor:
 +        bLength                 7
 +        bDescriptorType         5
 +        bEndpointAddress     0x05  EP 5 OUT
 +        bmAttributes            2
 +          Transfer Type            Bulk
 +          Synch Type               None
 +          Usage Type               Data
 +        wMaxPacketSize     0x0008  1x 8 bytes
 +        bInterval               1
 +</code>
 +
 +Ovladani displayu probiha na EP 5 OUT (0x05).
 +Inicializace se provadi zpravou typu [[http://www.beyondlogic.org/usbnutshell/usb6.shtml#SetupPacket|control transfer]] v nasledujicim nastaveni:
 +
 +<code>
 +bmRequestType   0x40
 +bRequest        0x0009
 +wValue          0x0302
 +wIndex          0x0003
 +wLength         0x0010
 +data            0x02 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
 +</code>
 +
 +Kompletni inizializace zarizeni a ovladani leveho/praveho oka v PyUSB:
 +
 +<code>
 +import usb
 +
 +# nalezeni zarizeni
 +dev = usb.core.find(idVendor = 0x1bae, idProduct = 0x0002)
 +if dev is None:
 +  raise ValueError('Device not found')
 +
 +for i in range(4):
 +  try:
 +    dev.detach_kernel_driver(i)
 +    dev.detach_kernel_head(i)
 +  except:
 +    pass
 +
 +# nalezeni EP 5 OUT
 +epx = None
 +dev.set_configuration(1)
 +for cfg in dev:
 +  for intf in cfg:
 +    for ep in intf:
 +      if ep.bEndpointAddress is 0x05 :
 +        epx = ep
 +
 +if epx is None:
 +  raise ValueError('ep not found')
 +
 +# inicializace
 +dev.ctrl_transfer(0x40, 0x9, 0x302, 0x3, "\x02\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
 +dev.ctrl_transfer(0x40, 0x9, 0x302, 0x3, "\x02\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
 +epx.write("\x00")
 +dev.ctrl_transfer(0x40, 0x9, 0x302, 0x3, "\x02\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
 +
 +# ovladani displayu
 +epx.write("\x00")
 +epx.write("\x01")
 +</code>
 +
 +Obraz je v displayi udrzovan dokud mu neprijde zprava o jeho obnoveni (0x00/0x01).
 +
 +===== Anaglyph =====
 +
 +[[wp>Anaglyph_image]]
 +
 +==== Inficolor ====
 +
 +[[https://www.youtube.com/watch?v=2cJ1KCTem9o]]
 +
 +===== Theory =====
 +
 +[[http://paulbourke.net/miscellaneous/stereographics/stereorender/|Paul Bourke's stereoscopic articles]]
project/arvr/start.txt · Last modified: 2016/11/28 01:55 by ruza