예제 #1
0
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_())
예제 #2
0
 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
예제 #3
0
    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"
예제 #4
0
    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"
예제 #5
0
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_())
예제 #6
0
 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
예제 #7
0
 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"