def set_up(self): self.display_region = base.camNode.get_display_region(0) win = self.display_region.get_window() self.perspective_lens = PerspectiveLens() self.perspective_lens = base.camLens # use panda3d's default for automatic aspect ratio on window resize self.lens = self.perspective_lens self.perspective_lens.set_aspect_ratio(window.aspect_ratio) self.perspective_lens_node = LensNode('perspective_lens_node', self.perspective_lens) self.lens_node = self.perspective_lens_node self.orthographic_lens = OrthographicLens() self.orthographic_lens.set_film_size(self.fov * window.aspect_ratio, self.fov) self.orthographic_lens_node = LensNode('orthographic_lens_node', self.orthographic_lens) application.base.cam.node().set_lens(self.lens) self.orthographic = False self.fov = 40 # horizontal fov # self.fov = 22.5 self.clip_plane_near = 0.1 self.clip_plane_far = 10000 self.ui_display_region = win.make_display_region() self.ui_display_region.set_sort(20) self.ui_camera = NodePath(PandaCamera('ui_camera')) self.ui_lens = OrthographicLens() # moved set_film_size() to window module for correct aspect ratio after setting window size self.ui_lens.set_near_far(-1000, 1000) self.ui_camera.node().set_lens(self.ui_lens) self._ui_lens_node = LensNode('_ui_lens_node', self.ui_lens) self.ui_render = NodePath('ui_render') self.ui_render.set_depth_test(0) self.ui_render.set_depth_write(0) self.ui_camera.reparent_to(self.ui_render) self.ui_display_region.set_camera(self.ui_camera) scene.ui_camera = self.ui_camera self.ui = Entity(eternal=True, name='ui', parent=self.ui_camera, scale=(self.ui_size * .5, self.ui_size * .5)) self.overlay = Entity(parent=self.ui, model='quad', scale=99, color=color.clear, eternal=True, z=-99) # these get created when setting a shader self.filter_manager = None self.filter_quad = None self.render_texture = None self.filter_quad = None self.depth_texture = None
def set_up(self, use_filters=True): self.display_region = base.camNode.get_display_region(0) win = self.display_region.get_window() self.perspective_lens = PerspectiveLens() self.lens = self.perspective_lens self.perspective_lens.set_aspect_ratio(window.aspect_ratio) self.perspective_lens.set_focal_length(50) self.perspective_lens_node = LensNode('perspective_lens_node', self.perspective_lens) self.lens_node = self.perspective_lens_node self.orthographic_lens = OrthographicLens() self.orthographic_lens.set_film_size(self.fov * window.aspect_ratio, self.fov) self.orthographic_lens_node = LensNode('orthographic_lens_node', self.orthographic_lens) application.base.cam.node().set_lens(self.lens) self.orthographic = False self.fov = 40 self.clip_plane_near = 0.0001 self.clip_plane_far = 70000000 self.ui_display_region = win.make_display_region() self.ui_display_region.set_sort(20) self.ui_camera = NodePath(PandaCamera('ui_camera')) self.ui_lens = OrthographicLens() self.ui_lens.set_film_size(self.ui_size * .5 * self.aspect_ratio, self.ui_size * .5) self.ui_lens.set_near_far(-1000, 70000) self.ui_camera.node().set_lens(self.ui_lens) self._ui_lens_node = LensNode('_ui_lens_node', self.ui_lens) self.ui_render = NodePath('ui_render') self.ui_render.set_depth_test(0) self.ui_render.set_depth_write(0) self.ui_camera.reparent_to(self.ui_render) self.ui_display_region.set_camera(self.ui_camera) scene.ui_camera = self.ui_camera # ui_camera.hide() # self.black_bars_display_region = win.make_display_region() # self.black_bars_display_region.set_sort(-100) self.ui = Entity(eternal=True, name='ui', parent=self.ui_camera, scale=(self.ui_size * .5, self.ui_size * .5)) scene.ui = self.ui if (use_filters): self.filter_manager = FilterManager(base.win, base.cam) self.render_texture = PandaTexture() self.filter_quad = None
def set_up(self): self.display_region = base.camNode.get_display_region(0) win = self.display_region.get_window() self.perspective_lens = PerspectiveLens() self.lens = self.perspective_lens self.perspective_lens.set_aspect_ratio(window.aspect_ratio) self.perspective_lens.set_focal_length(50) self.perspective_lens_node = LensNode('perspective_lens_node', self.perspective_lens) self.lens_node = self.perspective_lens_node self.orthographic_lens = OrthographicLens() self.orthographic_lens.set_film_size(self.fov * window.aspect_ratio, self.fov) self.orthographic_lens_node = LensNode('orthographic_lens_node', self.orthographic_lens) application.base.cam.node().set_lens(self.lens) self.orthographic = False self.fov = 40 self.clip_plane_near = 0.0001 self.clip_plane_far = 10000 self.ui_display_region = win.make_display_region() self.ui_display_region.set_sort(20) self.ui_camera = NodePath(PandaCamera('ui_camera')) self.ui_lens = OrthographicLens() self.ui_lens.set_film_size(self.ui_size * .5 * self.aspect_ratio, self.ui_size * .5) self.ui_lens.set_near_far(-1000, 1000) self.ui_camera.node().set_lens(self.ui_lens) self._ui_lens_node = LensNode('_ui_lens_node', self.ui_lens) self.ui_render = NodePath('ui_render') self.ui_render.set_depth_test(0) self.ui_render.set_depth_write(0) self.ui_camera.reparent_to(self.ui_render) self.ui_display_region.set_camera(self.ui_camera) scene.ui_camera = self.ui_camera # ui_camera.hide() # self.black_bars_display_region = win.make_display_region() # self.black_bars_display_region.set_sort(-100) self.ui = Entity() self.ui.eternal = True self.ui.name = 'ui' self.ui.parent = self.ui_camera self.ui.scale = (self.ui_size * .5, self.ui_size * .5) # self.ui.model = 'quad' scene.ui = self.ui
def announceGenerate(self): DistributedAvatarAI.announceGenerate(self) if not self.eyeLensNP: lens = PerspectiveLens() lens.setMinFov(180.0 / (4. / 3.)) node = LensNode('toonEyes', lens) node.activateLens(0) self.eyeLensNP = self.attachNewNode(node) self.eyeLensNP.setZ(self.getHeight() - 0.5) self.eyeLensNP.setY(-1) self.setEyesOpenDuration() taskMgr.add(self.__eyesLookTask, self.taskName("eyesLookTask"))
def aspect_ratio(self, value): self.perspective_lens = PerspectiveLens() self.perspective_lens.set_aspect_ratio(value) application.base.cam.node().set_lens(self.perspective_lens) self.ui_lens.set_film_size(self.ui_size * .5 * value, self.ui_size * .5) self.ui_camera.node().set_lens(self.ui_lens) self._ui_lens_node = LensNode('_ui_lens_node', self.ui_lens) print('setting camera aspect ratio')
def generateHead(self, gender, head, headType, forGui=0): def stashMuzzles(length, stashNeutral=0): if stashNeutral: if length == "short": self.findAllMatches('**/muzzle-long-neutral;+s').stash() elif length == "long": self.findAllMatches('**/muzzle-short-neutral;+s').stash() else: if length == "short": if self.find('**/muzzle-long-neutral;+s').isStashed(): self.find('**/muzzle-long-neutral;+s').unstash() elif length == "long": if self.find('**/muzzle-short-neutral;+s').isStashed(): self.find('**/muzzle-short-neutral;+s').unstash() self.findAllMatches('**/muzzle-' + length + '-s*;+s').stash() self.findAllMatches('**/muzzle-' + length + '-laugh;+s').stash() self.findAllMatches('**/muzzle-' + length + '-angry;+s').stash() def stashParts(length): for part in self.findAllMatches('**/*' + length + '*;+s'): part.stash() self.gender = gender self.animal = head self.head = headType _modelDetail = "1000" if head != "dog": self.loadModel( "phase_3/models/char/%s-heads-%s.bam" % (head, _modelDetail), 'head') else: self.loadModel( "phase_3/models/char/tt_a_chr_%s_head_%s.bam" % (headType, _modelDetail), 'head') partAnimations = {} # Load the body part animations. for animName in ToonGlobals.ANIMATIONS: animationData = list(ToonGlobals.ANIMATIONS[animName]) animPath = None if len(animationData) == 2: animPhase = animationData[0] animFile = animationData[1] # Let's create the path for the animation. animPath = ToonGlobals.BASE_MODEL % (animPhase, headType, '', 'head', animFile) if '_-' in animPath: animPath = animPath.replace('_-', '-') if '__' in animPath: animPath = animPath.replace('__', '_') partAnimations[animName] = animPath self.loadAnims(partAnimations, 'head') _pupilL = self.findAllMatches('**/def_left_pupil') _pupilR = self.findAllMatches('**/def_right_pupil') if headType == "1": stashParts("long") stashMuzzles("long", stashNeutral=0) stashMuzzles("short", stashNeutral=1) _pupilL = self.findAllMatches('**/joint_pupilL_short') _pupilR = self.findAllMatches('**/joint_pupilR_short') elif headType == "2": if head == "mouse": stashParts("short") stashMuzzles("short", stashNeutral=1) stashMuzzles("long", stashNeutral=0) _pupilL = self.findAllMatches('**/joint_pupilL_long') _pupilR = self.findAllMatches('**/joint_pupilR_long') else: stashParts("long") stashMuzzles("short", stashNeutral=0) stashMuzzles("long", stashNeutral=1) _pupilL = self.findAllMatches('**/joint_pupilL_short') _pupilR = self.findAllMatches('**/joint_pupilR_short') if head == "rabbit": self.findAllMatches('**/head-long').unstash() self.findAllMatches('**/head-front-long').unstash() #self.findAllMatches('**/head-front-short').stash() #self.findAllMatches('**/head-short').stash() elif headType == "3": stashParts("short") stashMuzzles("long", stashNeutral=0) stashMuzzles("short", stashNeutral=1) _pupilL = self.findAllMatches('**/joint_pupilL_long') _pupilR = self.findAllMatches('**/joint_pupilR_long') if head == "rabbit": self.findAllMatches('**/head-long').stash() self.findAllMatches('**/head-front-long').stash() self.findAllMatches('**/head-front-short').unstash() self.findAllMatches('**/head-short').unstash() elif headType == "4": stashParts("short") stashMuzzles("short", stashNeutral=0) stashMuzzles("long", stashNeutral=1) _pupilL = self.findAllMatches('**/joint_pupilL_long') _pupilR = self.findAllMatches('**/joint_pupilR_long') self.pupils.append(_pupilL) self.pupils.append(_pupilR) self.fixEyes() if self.gender == "girl": self.setupEyelashes() if not forGui: if not self.eyeLensNP: lens = PerspectiveLens() lens.setMinFov(180.0 / (4. / 3.)) node = LensNode('toonEyes', lens) node.activateLens(0) #node.showFrustum() self.eyeLensNP = self.attachNewNode(node) self.eyeLensNP.setZ(self.getHeight() - 0.5) self.eyeLensNP.setY(-1) self.setEyesOpenDuration() taskMgr.add(self.__eyesLookTask, "toonHeadEyesLook-" + str(id(self))) return