130 likes | 271 Views
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
E N D
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 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