Augmented/Virtual Reality
Ideas
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)
# modprobe i2c-dev
$ i2cdetect -l
$ cat /sys/bus/i2c/devices/i2c-X/device/device/card0-VGA-1/edid
reference
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.
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
Ovladani displayu probiha na EP 5 OUT (0x05).
Inicializace se provadi zpravou typu control transfer v nasledujicim nastaveni:
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
Kompletni inizializace zarizeni a ovladani leveho/praveho oka v PyUSB:
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")
Obraz je v displayi udrzovan dokud mu neprijde zprava o jeho obnoveni (0x00/0x01).
Anaglyph
Inficolor
Theory