def main(): renderApp = QApplication(sys.argv) renderView = RenderWindow() redLambert = Material(diffuseColor=Vector(0.9, 0.1, 0.1)) blueLambert = Material(diffuseColor=Vector(0, 0, 0.9)) greenLambert = Material(diffuseColor=Vector(0.1, 0.9, 0.1)) whiteLambert = Material(diffuseColor=Vector(0.9, 0.9, 0.9)) yellowLambert = Material(diffuseColor=Vector(0.95, 0.4, 0.0)) lightBlueLambert = Material(diffuseColor=Vector(0.1, 0.5, 0.9)) mirror = Material(reflectionColor=Vector(1, 1, 1), reflectionWeight=1) redMirror = Material(reflectionColor=Vector(0.9, 0, 0), reflectionWeight=1) emissive = Material(emissionAmount=500) glass = Material(refractionWeight=1, reflectionWeight=1) sphere02 = Sphere(Vector(10, -20, -146), 30, material=mirror) sphere03 = Sphere(Vector(-25, -35, -115), 15, material=redMirror) sphere04 = Sphere(Vector(25, -35, -100), 15, material=glass) plane01 = Plane(Vector(0, -50, -136), Vector(0, 1, 0), material=whiteLambert) # bottom wall plane02 = Plane(Vector(-50, 0, -136), Vector(1, 0, 0), material=yellowLambert) # left wall plane03 = Plane(Vector(0, 0, -186), Vector(0, 0, 1), material=whiteLambert) # back wall plane04 = Plane(Vector(50, 0, -136), Vector(-1, 0, 0), material=lightBlueLambert) # right wall plane05 = Plane(Vector(0, 50, -136), Vector(0, -1, 0), material=emissive) # top wall light01 = DiskLight(Vector(0, 48, -136), 30, normal=Vector(0, -1, 0), samples=1, isDoubleSided=True, visible=True) newScene = Scene({ "geometry": [ plane01, plane02, plane03, plane04, plane05, sphere02, sphere03, sphere04 ], "light": [light01] }) teleCam = Camera(Vector(0, 0, 130), Vector(0, 0, 1), 80, aperture=1.4, focusDist=243, filmFit="Horizontal") renderView.startRender(newScene, teleCam) sys.exit(renderApp.exec_())
def __init__(self, pos, normal, material=Material()): #This is an infinite plane super().__init__(material) self.type = "Plane" self.pos = pos self.normal = normal self.epsilon = 0.0001
def __init__(self, pos, radius, normal, material=Material()): self.pos = pos self.radius = radius self.normal = normal super().__init__(self.pos, self.normal) self.material = material self.type = "Disk"
def __init__(self, p0, p1, p2, material=Material()): #Define the 3 vertices of the triangle in counter-clockwise order! self.p0 = p0 self.p1 = p1 self.p2 = p2 self.normal = (self.p1 - self.p0).cross(self.p2 - self.p0).normalized() self.pos = self.p0 super().__init__(self.pos, self.normal) self.material = material self.type = "Triangle"
def main(): renderApp = QApplication(sys.argv) renderView = RenderWindow() #All setting loaded from json file #--------------------Scene Modeling------------------------------- #Materials-------------------------------------------- redLambert = Material(diffuseColor=Vector(0.9,0.1,0.1)) blueLambert = Material(diffuseColor=Vector(0,0,0.9)) greenLambert = Material(diffuseColor=Vector(0.1,0.9,0.1)) whiteLambert = Material(diffuseColor=Vector(0.9,0.9,0.9)) mirror = Material(reflectionColor=Vector(1,1,1),reflectionWeight=1) redMirror = Material(reflectionColor=Vector(0.9,0,0),reflectionWeight=1) emissive = Material(emissionAmount=500) glass = Material(refractionWeight=1,reflectionWeight=1) #Geometries---------------------------------------------- #important! This is a right handed coordinate system! sphere01 = Sphere(Vector(-15,-30,-136),20,material=whiteLambert) sphere02 = Sphere(Vector(10,-20,-146),30,material=mirror) sphere03 = Sphere(Vector(-25,-35,-115),15,material=glass) sphere04 = Sphere(Vector(25,-35,-100),15,material=whiteLambert) #plane01 = Plane(Vector(0,-50,-136),Vector(0,1,0),material=whiteLambert) #bottom wall #plane02 = Plane(Vector(-50,0,-136),Vector(1,0,0),material=redLambert) #left wall #plane03 = Plane(Vector(0,0,-186),Vector(0,0,1),material=whiteLambert) #back wall #plane04 = Plane(Vector(50,0,-136),Vector(-1,0,0),material=greenLambert) #right wall #plane05 = Plane(Vector(0,50,-136),Vector(0,-1,0),material=whiteLambert) #top wall tri01 = Triangle(Vector(30,40,-136),Vector(-10,20,-136),Vector(50,20,-156),material=glass) tri02 = Triangle(Vector(30,40,-146),Vector(50,20,-166),Vector(-10,20,-146),material=glass) disk01 = Disk(Vector(-30,30,-136),15,Vector(1,0,0),material=blueLambert) quad01 = Quad(Vector(-50,-50,-186),Vector(-50,-50,-76),Vector(50,-50,-76),Vector(50,-50,-186),material=whiteLambert) #bottom wall quad02 = Quad(Vector(-50,50,-76),Vector(-50,-50,-76),Vector(-50,-50,-186),Vector(-50,50,-186),material=redLambert) #left wall quad03 = Quad(Vector(-50,50,-186),Vector(-50,-50,-186),Vector(50,-50,-186),Vector(50,50,-186),material=whiteLambert) #back wall quad04 = Quad(Vector(50,50,-186),Vector(50,-50,-186),Vector(50,-50,-76),Vector(50,50,-76),material=greenLambert) #right wall quad05 = Quad(Vector(-50,50,-76),Vector(-50,50,-186),Vector(50,50,-186),Vector(50,50,-76),material=emissive) #top wall quad06 = Quad(Vector(-50,20,-76),Vector(-50,20,-186),Vector(30,20,-186),Vector(30,20,-76),material=whiteLambert) #top matte #Lights------------------------------------------------------- light01 = DiskLight(Vector(0,48,-136),30,normal=Vector(0,-1,0),samples=8,isDoubleSided=True,visible=True) #light source on the top light02 = PointLight(Vector(-20,40,-120)) light03 = PointLight(Vector(20,30,-90)) newScene = Scene({"geometry":[quad01,quad02,quad03,quad04,quad05,sphere02,sphere03,sphere04],"light":[light01]}) cam = Camera(Vector(0,0,0),Vector(0,0,1),60) renderView.startRender(newScene,cam) sys.exit(renderApp.exec_())
def __init__(self, pos, radius, material=Material()): super().__init__(material) self.pos = pos # pos is a vector self.radius = float(radius) # radius is a scalar self.epsilon = 0.0001
def __init__(self, p0, p1, p2, p3, material=Material()): #Quad is 2 triangles, define in a counter-clockwise order self.triList = [Triangle(p0, p1, p2), Triangle(p0, p2, p3)] self.material = material self.type = "Quad"