Oculus Rift

Muu yhteisön välinen keskustelu.
Post Reply
mikeful
Moderator
Moderator
Posts: 523
Joined: Mon Aug 27, 2007 8:36 pm
Location: Vaasa, Finalnd
Contact:

Oculus Rift

Post by mikeful »

Moimoi,

Kickstarterissa tukemani Oculus Rift -3D-lasit tulivat ja kasailin CB:llä pienen demon asiasta. Jos jollain tutulla sattuu myös olemaan, voi tuolla testailla 2D-syvyysefektiä. Tilekartan lattia- ja seinäkerrokset sekä pelaajahahmo ovat eri korkeudella. Demon pohjana on käytetty Mistheman tekemää splitscreen-esimerkkiä.

Vastailen mielelläni laseja koskeviin kysymyksiin.

EDIT: Laiskoille linkkiä valmiikseen pakettiin http://mikeful.kapsi.fi/files/temp/cb_o ... mo_001.zip

Code: Select all

SCREEN 1280,800, 0 ,0
FrameLimit 60

// Silmien välinen etäisyyys
IPD = 64

// Kerrosmuuttujat
syvyys = -1
karttasyvyys = -2

// Copy-pastea Mistheman splitscreen-esimerkistä
// http://www.coolbasic.com/phpBB3/viewtopic.php?f=12&t=3001

// Ruudun koko
SW = ScreenWidth()
SH = ScreenHeight()

// Pelaajien ruudun koko
splitW = SW / 2
splitH = SH

// Pelaajien ruutujen kuvapuskurit (image buffer)
buf1 = MakeImage( splitW, splitH )
buf2 = MakeImage( splitW, splitH )

//kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
kartta = LoadMap("Media\testmap.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

ukko = LoadObject ("Media\guy.bmp",72)
PositionObject ukko, 0, 100
SetupCollision ukko, kartta, 1, 4, 2

Repeat

    //Ukon ohjaus
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2
    
    If KeyHit(cbkeyf1) Then IPD = IPD - 1
    If KeyHit(cbkeyf2) Then IPD = IPD + 1

    UpdateGame
    
    // Vasemman silmän bufferin luominen
    Cls
    
    // Kameran liikutus ja siirto silmän välien mukaan
    CloneCameraPosition ukko
    TranslateCamera -IPD, 0
    
    // Lattiakerroksen piirto tilekartasta
    SetMap kartta, 1, 0
    ShowObject ukko, 0
    DrawGame
    
    // Seinäkerroksen ja ukon piirto
    SetMap kartta, 0, 1
    
    ShowObject ukko, 1
    TranslateObject ukko, -syvyys, 0
    TranslateObject kartta, -karttasyvyys, 0
    
    DrawGame
    
    // Kartan ja ukon reset
    TranslateObject kartta, karttasyvyys, 0
    TranslateObject ukko, syvyys, 0
    
    CopyBox (SW/2)-(splitW/2), 0, splitW, splitH, 0, 0, SCREEN(), Image(buf1)
    // Vasemman silmän bufferin luominen loppuu
    
    // Oikean silmän bufferin luominen
    Cls
    
    // Kameran liikutus ja siirto silmän välien mukaan
    CloneCameraPosition ukko
    TranslateCamera IPD, 0
    
    // Lattiakerroksen piirto tilekartasta
    SetMap kartta, 1, 0
    ShowObject ukko, 0
    DrawGame
    
    // Seinäkerroksen ja ukon piirto
    SetMap kartta, 0, 1
    
    ShowObject ukko, 1
    TranslateObject ukko, syvyys, 0
    TranslateObject kartta, karttasyvyys, 0
    
    DrawGame

    // Kartan ja ukon reset
    TranslateObject kartta, -karttasyvyys, 0
    TranslateObject ukko, -syvyys, 0
    
    CopyBox (SW/2)-(splitW/2), 0, splitW, splitH, 0, 0, SCREEN(), Image(buf2)
    // Oikean silmän bufferin luominen
    
    // Bufferien piirto ruudulle
    Cls
    DrawImage buf1, 0, 0
    DrawImage buf2, splitW, 0
    
    // Tekstit
    Color 255,255,255
    Text 0,10, "IPD: " + IPD + "px"
    Text 0,20,"FPS: " + FPS()

    DrawScreen

Forever
Pelejä: Pelasta puhe, Grinder
Muuta: Blogi, Twitter
Post Reply