class HealthBar(object): def __init__(self, ship, screenPos): super().__init__() sg = Renderer.activeRenderer.getSceneGraph() self._ship = ship self._maxHealth = ship._health self._screenPos = screenPos tNode = sg.newTransform(t=vec(-280, screenPos*(-300+25))) self._barFill = SceneObject(dataSrc = DiscreteRect(200, h=20), t=tNode, color = Color.Green) self._border = SceneObject(dataSrc = DiscreteRect(w=200, h=20), t=tNode, \ color = Color.Grey, batch=pyglet.graphics.Batch(), group = LinePolygonMode) def update(self, dt): currentHealth = self._ship._health if self._ship._health > 0 else 0 ratio = currentHealth/self._maxHealth self._barFill._dataSrc.resize(ratio*200, 20) def removeFromWorld(self): self._barFill.getTransform().killSubtree() self._barFill.removeTransform()
def __init__(self,diameter,height,offset): SceneObject.__init__(self,Point3D(),GL_SMOOTH,True) self.diameter = diameter self.height = height self.offset = offset self.cylinder = gluNewQuadric() gluQuadricTexture(self.cylinder, GL_TRUE) gluQuadricNormals(self.cylinder, GLU_SMOOTH)
def __init__(self, diameter, height, offset): SceneObject.__init__(self, Point3D(), GL_SMOOTH, True) self.diameter = diameter self.height = height self.offset = offset self.cylinder = gluNewQuadric() gluQuadricTexture(self.cylinder, GL_TRUE) gluQuadricNormals(self.cylinder, GLU_SMOOTH)
def __init__(self,diameter,center_pole,center_equator,strip_top,strip_bottom): SceneObject.__init__(self,Point3D(),GL_SMOOTH,True) self.diameter = diameter self.center_pole = center_pole self.center_equator = center_equator self.strip_top = strip_top self.strip_bottom = strip_bottom self.sphere = gluNewQuadric() gluQuadricTexture(self.sphere, GL_TRUE) gluQuadricNormals(self.sphere, GLU_SMOOTH)
def __init__(self, diameter, center_pole, center_equator, strip_top, strip_bottom): SceneObject.__init__(self, Point3D(), GL_SMOOTH, True) self.diameter = diameter self.center_pole = center_pole self.center_equator = center_equator self.strip_top = strip_top self.strip_bottom = strip_bottom self.sphere = gluNewQuadric() gluQuadricTexture(self.sphere, GL_TRUE) gluQuadricNormals(self.sphere, GLU_SMOOTH)
def __init__(self, a, b, c, d, height, yawAngle, pitchAngle, fov=68.2, aspectRatio=0.75): # Projectors SceneObject.__init__(self, Point3D(), GL_FLAT, False) self.a = a self.b = b self.c = c self.d = c self.yawAngle = yawAngle self.pitchAngle = pitchAngle self.aspectRatio = aspectRatio self.fov = fov self.height = height self.draw = True
def __init__(self, material: Material, vertex1: Point3D, vertex2: Point3D, vertex3: Point3D): SceneObject.__init__(self, material) self.vertex1 = vertex1 self.vertex2 = vertex2 self.vertex3 = vertex3 self.center = Point3D((self.vertex1.vector.x + self.vertex2.vector.x + self.vertex3.vector.x) / 3, (self.vertex1.vector.y + self.vertex2.vector.y + self.vertex3.vector.y) / 3, (self.vertex1.vector.z + self.vertex2.vector.z + self.vertex3.vector.z) / 3)
def __init__(self, imageSrc, **kwArgs): super().__init__(**kwArgs) # Set Image/Animation if isinstance(imageSrc, Animation): self._animation = AnimationState(imageSrc) self._texture = self._animation.getImage().get_texture() else: self._animation = None self._texture = imageSrc.get_texture() # Create the Scene Object representation self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height), \ t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None)) self._sceneObject.isDrawn = False
def addItem(self): """ Adds Arbitrary items to 3dMap Viewport :return: """ arr = self.sphereMesh sceneObject = SceneObject(Vec3(0, 0, 0), arr[0], arr[1], arr[2], [0, 0, 1, 1]) self._viewportWidget.addItem(sceneObject.object)
def addWaypoint(self, pos, passed): """ Adds a new Waypoint to the Waypoint Map :param pos: Position of waypoint. :param passed: Flag of whether Waypoint was passed or not. :return: """ mesh = self.sphereMesh self.waypointList.append( SceneObject(pos, mesh[0], mesh[1], mesh[2], [1, 0, 0, 1], 1))
class Sprite(Transformable): def __init__(self, imageSrc, **kwArgs): super().__init__(**kwArgs) # Set Image/Animation if isinstance(imageSrc, Animation): self._animation = AnimationState(imageSrc) self._texture = self._animation.getImage().get_texture() else: self._animation = None self._texture = imageSrc.get_texture() # Create the Scene Object representation self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height), \ t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None)) self._sceneObject.isDrawn = False '''''''''''''''''''''''''''''''''''''''''''''''''''''' def update(self, dt): if self._animation and self._animation.update(dt): self._texture = self._animation.getImage().get_texture() def draw(self): glBindTexture(self._texture.target, self._texture.id) glEnable(self._texture.target) self._sceneObject.draw() glDisable(self._texture.target) '''''''''''''''''''''''''''''''''''''''''''''''''''''''' def getImage(self): return self._texture def setAnimation(self, animState): self._animation.setState(animState) def getAnimation(self): return self._animation
class Entity(Transformable): def __init__(self, sprite, **kwArgs): super().__init__(**kwArgs) self._sprite = sprite self._sprite.setTransform(self.getTransform().createChild()) self._collider = CollisionRect(self._sprite.getImage().width, self._sprite.getImage().height, t=self.getTransform().createChild()) self._collider.addListener(self) self._boundsDisplay = SceneObject(dataSrc = self._collider, t=self._collider.getTransform(), color=Color.Green, \ batch=pyglet.graphics.Batch(), group=LinePolygonMode) '''''''''''''''''''''''''''''''''''''''''''''''''' def update(self, dt): if self._sprite.update(dt): self._updateDimensions() self._collider.update(dt) def _updateDimensions(self): w, h = self._sprite.getDimensions() self._collider.resize(w, h) '''''''''''''''''''''''''''''''''''''''''''''''''' def notifyCollisions(self, colliderObj, otherColliders): if self._boundsDisplay: if otherColliders: self._boundsDisplay.setColor(Color.Red) else: self._boundsDisplay.setColor(Color.Green) '''''''''''''''''''''''''''''''''''''''''''''''''' def getSprite(self): return self._sprite
def __init__(self, sprite, **kwArgs): super().__init__(**kwArgs) self._sprite = sprite self._sprite.setTransform(self.getTransform().createChild()) self._collider = CollisionRect(self._sprite.getImage().width, self._sprite.getImage().height, t=self.getTransform().createChild()) self._collider.addListener(self) self._boundsDisplay = SceneObject(dataSrc = self._collider, t=self._collider.getTransform(), color=Color.Green, \ batch=pyglet.graphics.Batch(), group=LinePolygonMode)
class Sprite(Transformable): def __init__(self, imageSrc, **kwArgs): super().__init__(**kwArgs) # Set Image/Animation if isinstance(imageSrc, Animation): self._animation = AnimationState(imageSrc) self._texture = self._animation.getImage().get_texture() else: self._animation = None self._texture = imageSrc.get_texture() # Create the Scene Object representation self._sceneObject = SceneObject(dataSrc = DiscreteRect(self._texture.width, self._texture.height), \ t=self.getTransform(), ed=[('t3f', self._texture.tex_coords)], batch=kwArgs.get('batch', None), group=kwArgs.get('group', None)) self._sceneObject.isDrawn = False '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' def update(self, dt): if self._animation and self._animation.update(dt): self._texture = self._animation.getImage().get_texture() def draw(self): glBindTexture(self._texture.target, self._texture.id) glEnable(self._texture.target) self._sceneObject.draw() glDisable(self._texture.target) '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '''''' '' def getImage(self): return self._texture def setAnimation(self, animState): self._animation.setState(animState) def getAnimation(self): return self._animation
def __init__( self, a, b, c, d, # Projectors height, yawAngle, pitchAngle, fov=68.2, aspectRatio=0.75): SceneObject.__init__(self, Point3D(), GL_FLAT, False) self.a = a self.b = b self.c = c self.d = c self.yawAngle = yawAngle self.pitchAngle = pitchAngle self.aspectRatio = aspectRatio self.fov = fov self.height = height self.draw = True
def __init__(self, ship, screenPos): super().__init__() sg = Renderer.activeRenderer.getSceneGraph() self._ship = ship self._maxHealth = ship._health self._screenPos = screenPos tNode = sg.newTransform(t=vec(-280, screenPos*(-300+25))) self._barFill = SceneObject(dataSrc = DiscreteRect(200, h=20), t=tNode, color = Color.Green) self._border = SceneObject(dataSrc = DiscreteRect(w=200, h=20), t=tNode, \ color = Color.Grey, batch=pyglet.graphics.Batch(), group = LinePolygonMode)
def setWaypoint(self, waypointInfo): """ Adds waypoint if waypoint is not present. :param waypointInfo: :return: """ if not waypointInfo.name in self.waypointList.keys(): pos = Vec3(waypointInfo.generalWaypoint[0], waypointInfo.generalWaypoint[1], waypointInfo.generalWaypoint[2]) orientation = Vec3(waypointInfo.generalWaypoint[3], waypointInfo.generalWaypoint[4], waypointInfo.generalWaypoint[5]) #orientation = Vec3(0, 0, 0) mesh = self.sphereMesh col = [] if waypointInfo.reachedGeneralWaypoint is True: col = [1, 0, 0, 1] else: col = [1, 1, 0, 1] self.waypointList[waypointInfo.name] = SceneObject( pos, mesh[0], mesh[1], mesh[2], col, 1) self.waypointList[waypointInfo.name].setOrientation(orientation) self.addItem(self.waypointList[waypointInfo.name].object)
def __init__(self, material:Material, center:Point3D, radius:float): SceneObject.__init__(self, material) self.center = center self.radius = radius
def Main(cgnsMeshFileName): app = App() #app.MainLoop() #return style = vtk.vtkInteractorStyleTrackballCamera() Roster.RenderWindow.GetInteractor().SetInteractorStyle(style) """ picker = vtk.vtkPropPicker() picker.AddObserver("EndPickEvent", PickEventCallback) Roster.RenderWindow.GetInteractor().SetPicker(picker) """ axesActor = vtk.vtkAxesActor() markerWidget = vtk.vtkOrientationMarkerWidget() markerWidget.SetOrientationMarker(axesActor) markerWidget.SetInteractor(Roster.RenderWindow.GetInteractor()) if cgnsMeshFileName != None: cgnsf = CGNSFile.CGNSFile(cgnsMeshFileName) zones = cgnsf.ReadZones() Roster.Zones = zones #ren = vtk.vtkRenderer() ren = Roster.Renderer B = 1 for zone in zones: xyz = cgnsf.ReadZoneCoord(B, zone["Zone"]) for boco in zone["Bocos"]: if Roster.FindPatchByName(boco["Name"]) != None: RenamePatch(boco) r = CanonizeRange(boco["Range"]) xyz2 = xyz[:, r[0] - 1:r[3], r[1] - 1:r[4], r[2] - 1:r[5]] xyzCoarse = CoarsenPatchMesh(xyz2) so = SceneObject(xyzCoarse) actors = so.ActorSurface, so.ActorOutline actors[0].GetProperty().SetColor(1.0, 1.0, 1.0) for actor in actors: ren.AddActor(actor) #Roster.Patches.append([zone, boco, actors]) Roster.RegisterPatch(zone, boco, actors) if True: for c1to1 in zone["1to1s"]: if not c1to1.IsPeriodic(): continue if Roster.FindPatchByName(c1to1["Name"]) != None: RenamePatch(c1to1) """ for i in range(2,100): candidateName = "%s_%d" % (c1to1["Name"], i) if Roster.FindPatchByName(candidateName) == None: print "Duplicate patch %s was renamed to %s" % (c1to1["Name"], candidateName) c1to1["Name"] = candidateName break """ r = CanonizeRange(c1to1["Range"]) xyz2 = xyz[:, r[0] - 1:r[3], r[1] - 1:r[4], r[2] - 1:r[5]] xyzCoarse = CoarsenPatchMesh(xyz2) so = SceneObject(xyzCoarse) actors = so.ActorSurface, so.ActorOutline actors[0].GetProperty().SetColor(0.0, 0.0, 1.0) for actor in actors: ren.AddActor(actor) Roster.RegisterPatch(zone, c1to1, actors) del xyz markerWidget.SetEnabled(True) markerWidget.InteractiveOn() Roster.RosterModified() app.MainLoop()
from DiscretePrimitives import * from Vector import vec #-------------------------------------------------------# window = pyglet.window.Window(800, 600) winDimensions = [800, 600] rendMan = Renderer(winSize=winDimensions) sg = rendMan.getSceneGraph() so1 = SceneObject( t=sg.newTransform(t=vec(150, 0)), vs=[vec(-100, -100), vec(100, -100), vec(100, 100), vec(-100, 100)], ds=GL_LINES, vis=(0, 1, 1, 2, 2, 3, 3, 0), cs=Color.Purple + Color.Blue + Color.Orange + Color.Green) so2 = SceneObject(t=so1.getTransform().createChild(), dataSrc=DiscreteRect(10, 50)) so3 = SceneObject(t=sg.newTransform(), numVerts=3, drawStyle=GL_TRIANGLES, explicitData=[('v2f/static', [-30, -30, 30, -30, 0, 30])]) def update(dt): so2.rotate(.005)
from Renderer import Renderer from TransformationGraph import Transform from SceneObject import SceneObject from DiscretePrimitives import * from Vector import vec #-------------------------------------------------------# window = pyglet.window.Window(800, 600) winDimensions = [800, 600] rendMan = Renderer(winSize=winDimensions) sg = rendMan.getSceneGraph() so1 = SceneObject(t=sg.newTransform(t=vec(150,0)), vs=[vec(-100,-100), vec(100,-100), vec(100,100), vec(-100,100)], ds=GL_LINES, vis = (0, 1, 1, 2, 2, 3, 3, 0), cs = Color.Purple+Color.Blue+Color.Orange+Color.Green) so2 = SceneObject(t=so1.getTransform().createChild(), dataSrc=DiscreteRect(10, 50)) so3 = SceneObject(t=sg.newTransform(), numVerts=3, drawStyle=GL_TRIANGLES, explicitData=[('v2f/static', [-30, -30, 30, -30, 0, 30])]) def update(dt): so2.rotate(.005) @window.event def on_draw(): window.clear() rendMan.render() pyglet.clock.schedule(update) pyglet.app.run()
def __init__(self, *args, **kwargs): window.Window.__init__(self, *args, **kwargs) self.scene_objects = [] self.mouse_position = (0,0) obj1 = SceneObject() obj1.addCollisionTriangle(0,0,40,40,40,0) obj1.addCollisionTriangle(40,40,70,60,20,90) obj1.addCollisionTriangle(0,0,40,40,40,0) #obj1.addCollisionTriangle(0,0,1,1,0,1) obj1.setPosition((100,100)) obj1.name = "Smiley Tile" obj1.loadImage("tile1.png") obj2 = SceneObject() obj2.addCollisionTriangle(1,1,600,1,600,20) obj2.addCollisionTriangle(1,1,1,20,600,20) obj2.addCollisionTriangle(1,400,600,400,600,380) obj2.addCollisionTriangle(1,400,1,380,600,380) obj2.addCollisionTriangle(0,0,0,400,20,400) obj2.addCollisionTriangle(0,0,20,0,20,400) obj2.addCollisionTriangle(600,0,600,400,580,400) obj2.addCollisionTriangle(600,0,580,0,580,400) obj2.setPosition((0,0)) obj2.name = "Green Border" obj2.loadImage("tile2.png") obj3 = SceneObject() obj3.addCollisionTriangle(0,0,40,80,0,80) obj3.addCollisionTriangle(0,0,40,80,40,0) obj3.setPosition((610,150)) obj3.name = "Red Spotty" obj3.loadImage("tile3.png") self.scene_objects.append(obj1) self.scene_objects.append(obj2) self.scene_objects.append(obj3)