I have no idea what I'm doing lol

This commit is contained in:
Looki2000 2023-03-21 00:21:56 +01:00
parent fd46a55009
commit 9112b3c297
3 changed files with 74 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
__pycache__
renders/*

48
main_scene.py Normal file
View File

@ -0,0 +1,48 @@
import pygame
import numpy as np
import raytracer # raytracer.py
##### CONFIG #####
window_size = (1280, 720)
# raytracer config
vertical_fov = 90 # fov in degrees
##################
# convert fov to radians
vertical_fov = np.radians(vertical_fov)
# pygame init
pygame.init()
window = pygame.display.set_mode(window_size)
clock = pygame.time.Clock()
# raytracer init
focal_length = 1 / np.tan(vertical_fov / 2)
rt = raytracer.Raytracer(window_size, focal_length)
rt.update_cam_rot((np.radians(70), np.radians(-27), 0))
# main loop
while True:
# events
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
window.fill((0, 0, 0))
# update
pygame.display.update()
clock.tick(60)

24
raytracer.py Normal file
View File

@ -0,0 +1,24 @@
import numpy as np
# Z up
class Raytracer:
def __init__(self, window_size, focal_length):
self.window_size = window_size
self.focal_length = focal_length
self.cam_pos = np.zeros(3, dtype=np.float32)
self.cam_rot = np.zeros(3, dtype=np.float32)
self.cam_dir = np.zeros(3, dtype=np.float32)
def update_cam_rot(self, cam_rot): # pitch (down - top) | yaw (left - right) | roll
self.cam_rot = np.array(cam_rot, dtype=np.float32)
#### calculate camera direction ####
self.pitch_sin = np.sin(self.cam_rot[0])
self.cam_dir[0] = -np.sin(self.cam_rot[1]) * self.pitch_sin # from yaw and pitch
self.cam_dir[1] = np.cos(self.cam_rot[1]) * self.pitch_sin # from yaw and pitch
self.cam_dir[2] = -np.cos(self.cam_rot[0]) # from pitch
print(self.cam_dir)