RapidRaycast

Post on 14-Jan-2016

32 views 0 download

description

Trimesteroverschrijdend Project Bjorn Schobben Domien Nowicki. RapidRaycast. Overzicht. Wat Is Raycasting? Project Doel Project Structuur Project Algoritmen Demo Vragen?. Wat Is Raycasting?. Snelle techniek om 3D beeld te genereren uit 2D map (plattegrond) Sneller dan ray tracing - PowerPoint PPT Presentation

Transcript of RapidRaycast

RapidRaycastTrimesteroverschrijdend Project

Bjorn SchobbenDomien Nowicki

Overzicht

• Wat Is Raycasting?

• Project Doel

• Project Structuur

• Project Algoritmen

• Demo

• Vragen?

Wat Is Raycasting?• Snelle techniek om 3D beeld te

genereren uit 2D map (plattegrond)

• Sneller dan raytracing−Niet alle rays berekenen, slechts 1 per

vertikale streep van scherm

• Pseudo-3D beeld−Niet perspectief correct−Geen echte lichtinval−Altijd gebruik van simpele objecten

(bv. muren)

Wat Is Raycasting?

• Bekend voorbeeld: Wolfenstein 3D

Project Doel

• Raycast engine bouwen

• Met modeler−Eigen map kunnen maken

Project Structuur• Texturelijst

• Map− 2D array van cellen

• Ray− Zoeken van dichtsbijzijnde muren

• Slice− Renderen van een vertikale scherm-streep

• Raycaster− Heel het beeld renderen, via slice

• Keuze tussen vectoren en hoeken− Met vectoren: makkelijker en

nauwkeuriger

Project Algoritmen: Raycasting

• Position vector−Positie van het oog

• Direction vector (eenheids vector)−Richting waar het oog naar kijkt

• Camera plane vector (eenheids vector)−Richting van het cameravlak

Project Algoritmen: Raycasting

• Voor elke vertikale streep,“cast” een ray

• DW = afstand totdichtsbijzijnde muur

• DC = afstand tot camera = 1 (eenheidsvector)

• WH = eigenlijke muur hoogte

• PH = geprojecteerde muur hoogte = ?

Project Algoritmen: Raycasting

• PH/DC = WH/DW (driehoeksverhouding)

• PH = WH / DW * DC

Project Algoritmen: Raycasting

• PH = Wall slice hoogte

• SH = Scherm hoogte

• Wall slice is gecentreerd over het scherm−Positie van wall slice = (SH/2) – (PH/2)

• Teken nu wall slice voor elke vertikale streep, klaar!

Project Algoritmen: Ray

• DDA algoritme: Iteratief elke cel, die ray snijdt, controleren op aanwezigheid muur:−Bereken afstand tot volgende horizontale

en verticale intersectie−Als de horizontale korter: beschouw

bovenbuur−Als verticale korter: Beschouw

rechterbuur−Analoog voor rays in andere richtingen

• Afstand tot muur en intersectiepunt met muur onthouden

Demo

Vragen?