def __init__(self): self.objects = [] self.camera = None self.playback = Parameter(default=self.PAUSED, enum=[('Play',self.PLAYING),('Pause',self.PAUSED)]) #self.playback = self.PLAYING self.fps = 24.0 self.time = 0 # in seconds? self.frame = Parameter(default=1, vmin=0, vmax=100, title='Frame', update=self.update_time) self.sframe = Parameter(default=1, vmin=0, vmax=100, title='Start Frame') self.eframe = Parameter(default=100, vmin=0, vmax=100, title='End Frame') self.ui3d_shader = Shader(self.vertex_shader) self.ui3d_batch = pyglet.graphics.Batch() self.grid = Grid(10, 10, self.ui3d_batch ) self.axes = Axes(0.5, self.ui3d_batch ) self.bbmin = None self.bbmax = None
def calculate_bounds(self): self.bbmin = None self.bbmax = None for ob in self.objects: if hasattr(ob, "bbmin") and hasattr(ob, "bbmax"): if self.bbmin is None and self.bbmax is None: self.bbmin = ob.bbmin self.bbmax = ob.bbmax else: self.bbmin.x = min(ob.bbmin.x, self.bbmin.x) self.bbmin.y = min(ob.bbmin.y, self.bbmin.y) self.bbmin.z = min(ob.bbmin.z, self.bbmin.z) self.bbmax.x = max(ob.bbmax.x, self.bbmax.x) self.bbmax.y = max(ob.bbmax.y, self.bbmax.y) self.bbmax.z = max(ob.bbmax.z, self.bbmax.z) self.grid.delete() del self.grid diam = self.bbmax - self.bbmin center = self.bbmin + diam*0.5 self.grid = Grid(10, 10, self.ui3d_batch, center=center[:])