def main(): """ Run the rendering loop for the scene. """ viewer = Viewer() origin = (-100,-120, -100) widthScale = 3 ground = Ground(origin, widthScale, 0.8) viewer.add(ground) #Generate trees according to a uniform law for appearance trees = [] for x, z in ground.iterPos(): if(not(x%10) and not(z%10)): #generating if(np.random.uniform() > 0.75): tree = Tree(x*widthScale, ground.getHeight(x, z)+2, z*widthScale) trees.append(tree) viewer.add(tree.node) control = Control() viewer.add(control) dino = Dino(ground) viewer.add(dino) viewer.run(dino)
def main(): cam = Camera("hw2") cam.createView(Point3f(0.0, 0.0, 30.0), Vector3f(0.0, 1.0, 0.0)) cam.setNear(1) cam.setFar(1000) viewer = Viewer(cam) color_shader = Shader("vert.vs", "frag.fs") geom_shader = Shader("point_shadows_depth.vs", "point_shadows_depth.fs", "point_shadows_depth.gs") lighter_shader = Shader("light_vert.vs", "light_frag.fs") """ image = load_texture("textures/cube2.png") second_image = load_texture("textures/cube.png") """ sphere_obj = ObjLoader() sphere_obj.load_model("object_files/sphere.obj") cornell_obj = ObjLoader() cornell_obj.load_modell_cornell("object_files/cornell.obj") LighterObject = LightObject(lighter_shader, [18, 3, 0], sphere_obj, [1.0, 1.0, 3.0], True) LighterObject2 = LightObject(lighter_shader, [0, 40, 0], sphere_obj, [1.0, 1.0, 3.0], False) ShadowsObject = RenderShadows(cam, color_shader, geom_shader, [0, 0, -5], cornell_obj, None, None, LighterObject, LighterObject2) CornellObject = ShapeFromObjectFile(cam, color_shader, [0, 0, -5], cornell_obj, None, None, LighterObject, LighterObject2) viewer.add( ["Shadow", True, ShadowsObject, False, LighterObject, LighterObject2]) viewer.add( ["Cornell", True, CornellObject, False, LighterObject, LighterObject2]) viewer.add([ "Lighter1", True, LighterObject, False, LighterObject, LighterObject2 ]) viewer.add([ "Lighter2", True, LighterObject2, False, LighterObject, LighterObject2 ]) print("Press a to enable/disable lighter1 animation.") print("Press 1 and 2 to enable/disable lighters.") print("Press b to enable/disable blinn specular formula for lighters.") print("Press x and Shift +x to move in x direction.") print("Press y and Shift +y to move in y direction.") print("Press z and Shift +z to move in z direction.") glutMainLoop()
def main(): """ create a window, add scene objects, then run rendering loop """ viewer = Viewer() # environment node environment = Node() # set skybox shader = Shader("./shaders/skybox.vert", "./shaders/skybox.frag") environment.add(Skybox(shader, "./../assets/skybox/underwater/")) # set seabed shader = Shader("./shaders/texture.vert", "./shaders/texture.frag") src = './../assets/models/seabed/seabed.fbx' texFile = './../assets/models/seabed/seabed.jpg' seabed = Node(transform=scale(0.008, 0.01, 0.008) @ translate(0, -100, 0)) model = Model(src, shader) for m in model.load_phong_textured_skinned(texFile): seabed.add(m) # plants node plants = Node() # add seaweed shader = Shader("./shaders/texture.vert", "./shaders/texture.frag") src = './../assets/models/plants/seaweed/seaweed.fbx' texFile = './../assets/models/plants/seaweed/seaweed.png' seaweed = Node(transform=scale(2, 2, 2)) seaweed_density = 80 for i in range(seaweed_density): model = Model(src, shader) temp = Node( transform=translate(randrange(-50, 50), 3.5, randrange(-50, 50))) temp2 = Node( transform=translate(randrange(-20, 20), 15, randrange(-20, 0))) for m in model.load_textured(texFile): temp.add(m) if (i % 2 == 0): temp2.add(m) seaweed.add(temp) if (i % 2 == 0): seaweed.add(temp2) plants.add(seaweed) # add coral coral_count = 7 src = './../assets/models/plants/coral/coral.obj' texFile = './../assets/models/plants/coral/coral.jpg' coral = Node(transform=scale(0.1, 0.1, 0.1)) for i in range(coral_count): model = Model(src, shader) temp = Node(transform=translate(randrange(-300, 300), 350, randrange(-300, -100))) for m in model.load_textured(texFile): temp.add(m) coral.add(temp) plants.add(coral) seabed.add(plants) environment.add(seabed) # add fish models shader = Shader("./shaders/phong_texture_skinning.vert", "./shaders/phong_texture_skinning.frag") fishes = [] fish_count = 20 fish_no = randint(1, 24) src = './../assets/models/fish/%d/model.fbx' % fish_no texFile = './../assets/models/fish/%d/texture.png' % fish_no fish = Node(transform=scale(0.0001, 0.0001, 0.0001)) model = Model(src, shader) control_node = ControlNode(KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, 30) for m in model.load_phong_textured_skinned(texFile): control_node.add(m) fish.add(control_node) fishes.append(fish) for i in range(0, fish_count + 1): fish_no = randint(1, 24) src = './../assets/models/fish/%d/model.fbx' % fish_no texFile = './../assets/models/fish/%d/texture.png' % fish_no fish = Node(transform=scale(0.0001, 0.0001, 0.0001)) model = Model(src, shader) for m in model.load_phong_textured_skinned(texFile): fish.add(m) fishanimation = FishAnimation() animated_node = KeyFrameControlNode(fishanimation.get_translate_keys(), fishanimation.get_rotate_keys(), { 0: 1, 2: 1, 4: 1 }, loop=True) animated_node.add(fish) fishes.append(animated_node) for fish in fishes: environment.add(fish) scene = Node() scene.add(environment) viewer.add(scene) print( "Controls : Use the mouse to change the scene view. Press spacebar to restart the scene animations. Press W to see polygons and ESC or Q to Quit." ) # start rendering loop viewer.run()