RapidRaycast Trimesteroverschrijdend Project Bjorn Schobben Domien 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 hoe de camera loopt
Project Algoritmen: Raycasting Voor elke vertikale streep, “cast” een ray DW = afstand tot dichtsbijzijnde 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 Hier uitleg over ray
Demo
Vragen?