def nextMat(): global lw_idx lw_idx += 1 if lw_idx < len(lightwarps): toon.setMaterial( CIGlobals.getCharacterMaterial(specular=(0, 0, 0, 0), lightwarp=lightwarps[lw_idx])) tn.setText(Filename(lightwarps[lw_idx]).getBasename()) else: lw_idx = -1 toon.setMaterial( CIGlobals.getCharacterMaterial(specular=(0, 0, 0, 0), lightwarp=None)) tn.setText("No Lightwarp")
def generateSuit(self, suitPlan, variant, voice=None, hideFirst=False): startTime = globalClock.getRealTime() self.suitPlan = suitPlan self.suit = suitPlan.getSuitType() self.head = suitPlan.getHead() self.dept = suitPlan.getDept() self.handColor = suitPlan.getHandColor() self.variant = variant self.setVoice(voice) self.generateCog() mat = CIGlobals.getCharacterMaterial(shininess=50.0, specular=(0.4, 0.4, 0.4, 1)) self.setMaterial(mat) #ts = TextureStage('shiny') #ts.setMode(TextureStage.MAdd) #ts.setRgbScale(2) #tex = loader.loadCubeMap('phase_14/maps/cubemap/defaultcubemap_#.png') #tex = loader.loadTexture('phase_14/maps/envmap001a_cog.png') #self.setTexGen(ts, TexGenAttrib.MEyeSphereMap) #self.setTexture(ts, tex) self.initializeBodyCollisions() if hideFirst: self.hide() else: self.show() endTime = globalClock.getRealTime() print("generateSuit took {0} ms".format((endTime - startTime) * 1000))
def generateToon(self, makeTag=1): self.generateLegs() self.generateTorso() self.generateHead() self.setToonColor() self.setClothes() self.setGloves() self.parentToonParts() self.rescaleToon() self.generateMask() # Make torso subparts so we can play a run animation on the pants but another animation on the spine and arms. if self.gender == 'boy': self.makeSubpart("torso-pants", [ "def_left_pant_bottom", "def_left_pant_top", "def_right_pant_bottom", "def_right_pant_top" ], parent="torso") elif self.gender == 'girl': if self.torso == 'dgs_skirt': self.makeSubpart("torso-pants", [ "def_left_skirt_backA", "def_left_skirt_frontA", "def_left_skirt_topA", "def_right_skirt_backA", "def_right_skirt_frontA", "def_right_skirt_topA" ], parent="torso") elif self.torso == 'dgl_skirt': self.makeSubpart("torso-pants", [ "def_left_skirt_bottomA", "def_left_skirt_topA", "def_right_hip" ], parent="torso") else: self.makeSubpart("torso-pants", [ "def_left_skirt_bottomA", "def_left_skirt_topA", "def_right_skirt_bottomA", "def_right_skirt_topA" ], parent="torso") self.makeSubpart("torso-top", ["def_spineB"], parent="torso") Avatar.Avatar.initShadow(self) self.updateChatSoundDict() self.setBlend(frameBlend=True) bodyMat = CIGlobals.getCharacterMaterial(shininess=5, specular=(0.5, 0.5, 0.5, 1)) self.setMaterial(bodyMat, 1) if not hasattr(base, 'localAvatar') or base.localAvatar != self: self.setupPhysics(1.0, self.getHeight()) # We can safely optimize the scene graph and combine nodes since we're done manipulating # the separate pieces. After this point, the separate pieces of the toon are no # longer manipulatable, such as arms, sleeves, shirt, etc. If this needs to be done, # the toon will have to be regenerated. # Don't do it in Make-A-Toon though, as we have to be constantly modifying the pieces. if not self.mat: self.optimize() if makeTag: self.setupNameTag() if self.cr.isShowingPlayerIds: self.showAvId() self.loop('neutral')
def loadChar(self): data = CHAR_DATA[self.charId] self.loadModel(data[0], 'modelRoot') self.loadAnims(data[1], 'modelRoot') if self.charId == SLEEP_DONALD: self.setPlayRate(0.5, 'neutral') self.setHeight(data[2]) self.setupPhysics(1.0, data[2]) self.setName(data[3]) self.talkEnabled = data[4] if self.talkEnabled: self.speechSound = data[5] if self.speechSound is not None: base.audio3d.attachSoundToObject(self.speechSound, self) self.setupNameTag() self.headNode = self.attachNewNode('headNode') self.headNode.setZ(self.getHeight() - 0.5) #smiley = loader.loadModel('models/smiley.egg.pz') #smiley.reparentTo(self.headNode) self.ears = [] if self.cr.isChristmas(): self.santaHat = loader.loadModel( "phase_4/models/accessories/tt_m_chr_avt_acc_hat_elfhat.bam") tex = "phase_4/maps/tt_t_chr_avt_acc_hat_elfhat8.mat" self.santaHat.setBSPMaterial(tex, 1) if self.charId in [MINNIE, MICKEY]: for bundle in self.getPartBundleDict().values(): bundle = bundle['modelRoot'].getBundle() earNull = bundle.findChild('sphere3') if not earNull: earNull = bundle.findChild('*sphere3') earNull.clearNetTransforms() for bundle in self.getPartBundleDict().values(): charNodepath = bundle['modelRoot'].partBundleNP bundle = bundle['modelRoot'].getBundle() earNull = bundle.findChild('sphere3') if not earNull: earNull = bundle.findChild('*sphere3') ears = charNodepath.find('**/sphere3') if ears.isEmpty(): ears = charNodepath.find('**/*sphere3') ears.clearEffect(CharacterJointEffect.getClassType()) earRoot = charNodepath.attachNewNode('earRoot') earPitch = earRoot.attachNewNode('earPitch') earPitch.setP(40.0) ears.reparentTo(earPitch) earNull.addNetTransform(earRoot.node()) ears.clearMat() ears.node().setPreserveTransform(ModelNode.PTNone) ears.setP(-40.0) ears.flattenMedium() self.ears.append(ears) ears.setBillboardAxis() if self.cr.isChristmas(): ears.hide() self.santaHat.reparentTo(earRoot) self.santaHat.setScale(self, 1.5) self.santaHat.setPos(0, -0.15 * 1000, 0.35 * 1000) self.santaHat.setHpr(0, 10, 0) if self.charId == MINNIE: self.santaHat.setZ(0.25 * 1000) self.eyesOpen = 'phase_3/maps/eyes1.mat' self.eyesClosed = 'phase_3/maps/mickey_eyes_closed.mat' self.eyes = self.find('**/eyes') self.eyes.setBin('transparent', 0) self.lpupil = self.find('**/joint_pupilL') self.rpupil = self.find('**/joint_pupilR') self.drawInFront('joint_pupil?', 'eyes*', -3) elif self.charId == PLUTO: self.eyesOpen = 'phase_6/maps/plutoEyesOpen.mat' self.eyesClosed = 'phase_6/maps/plutoEyesClosed.mat' self.eyes = self.find('**/eyes') self.lpupil = self.find('**/joint_pupilL') self.rpupil = self.find('**/joint_pupilR') self.drawInFront('joint_pupil?', 'eyes*', -3) elif self.charId == DAISY: self.geoEyes = 1 self.eyeOpenList = [] self.eyeCloseList = [] self.eyeCloseList.append(self.find('**/eyesclose')) self.eyeOpenList.append(self.find('**/eyesclose')) self.eyeOpenList.append(self.find('**/eyespupil')) self.eyeOpenList.append(self.find('**/eyesopen')) for part in self.eyeOpenList: part.show() for part in self.eyeCloseList: part.hide() elif self.charId == SAILOR_DONALD: self.eyes = self.find('**/eyes') self.lpupil = self.find('**/joint_pupilL') self.rpupil = self.find('**/joint_pupilR') self.drawInFront('joint_pupil?', 'eyes*', -3) if self.lpupil is not None: self.lpupil.adjustAllPriorities(1) self.rpupil.adjustAllPriorities(1) #if self.eyesOpen: # self.eyesOpen.setMinfilter(Texture.FTLinear) # self.eyesOpen.setMagfilter(Texture.FTLinear) #if self.eyesClosed: # self.eyesClosed.setMinfilter(Texture.FTLinear) # self.eyesClosed.setMagfilter(Texture.FTLinear) if self.charId == MICKEY: pupilParent = self.rpupil.getParent() pupilOffsetNode = pupilParent.attachNewNode('pupilOffsetNode') pupilOffsetNode.setPos(0, 0.025, 0) self.rpupil.reparentTo(pupilOffsetNode) self.initShadow() self.shadow.setScale(0.6) self.disableShadowRay() bodyMat = CIGlobals.getCharacterMaterial(shininess=20.0, specular=(0.2, 0.2, 0.2, 1.0)) self.setMaterial(bodyMat) self.__blinkName = 'blink-' + data[3]
def generateGoon(self): self.loadAvatar() self.setupPhysics(1.0, self.getHeight()) #self.initShadow() self.enableRay() #self.enableShadowRay() self.loadModel("phase_9/models/char/Cog_Goonie-zero.bam", "goon") self.loadAnims(self.anims, "goon") self.getGeomNode().setH(180) self.find("**/hard_hat").setTwoSided(True) self.find("**/security_hat").setTwoSided(True) self.find("**/eye").setLightOff(1) if self.hatType == Goon.Security: self.hat = self.find("**/security_hat") self.find("**/hard_hat").stash() elif self.hatType == Goon.Construction: self.hat = self.find("**/hard_hat") self.find("**/security_hat").stash() self.find("**/hard_hat").setMaterial( CIGlobals.getCharacterMaterial(shininess=400.0)) elif self.hatType == Goon.Nothing: self.find("**/hard_hat").stash() self.find("**/security_hat").stash() self.setEyeColor(self.IdleEyeColor) self.setMaterial(CIGlobals.getCharacterMaterial(shininess=50.0)) self.lightGlow = loader.loadModel( "phase_14/models/props/lightglow.egg") self.lightGlow.setLightOff(1) self.lightGlow.setMaterialOff(1) self.lightGlow.setShaderOff(1) self.lightGlow.reparentTo(self) self.lightGlow.setP(90) self.lightGlow.setZ(0.01) self.lightGlow.setScale(3) self.lightGlow.setTransparency(1) self.lightGlow.setColorScale(1, 0, 0, 0) self.enableBlend() self.whipSound = base.audio3d.loadSfx( "phase_5/audio/sfx/General_device_appear.ogg") base.audio3d.attachSoundToObject(self.whipSound, self) self.shootSound = base.audio3d.loadSfx( "phase_5/audio/sfx/lightning_1.ogg") base.audio3d.attachSoundToObject(self.shootSound, self) self.detectSound = base.audio3d.loadSfx( "phase_9/audio/sfx/CHQ_GOON_tractor_beam_alarmed.ogg") base.audio3d.attachSoundToObject(self.detectSound, self) self.dieSound = base.audio3d.loadSfx( "phase_14/audio/sfx/CHQ_GOON_hunker_down_fix.ogg") base.audio3d.attachSoundToObject(self.dieSound, self) self.scanBeginSound = base.audio3d.loadSfx( "phase_11/audio/sfx/LB_laser_beam_on_2.ogg") base.audio3d.attachSoundToObject(self.scanBeginSound, self) self.scanLoopSound = base.audio3d.loadSfx( "phase_14/audio/sfx/LB_laser_beam_hum_loop.ogg") base.audio3d.attachSoundToObject(self.scanLoopSound, self) self.scanEndSound = base.audio3d.loadSfx( "phase_11/audio/sfx/LB_laser_beam_off_2.ogg") base.audio3d.attachSoundToObject(self.scanEndSound, self) self.wakeupSound = base.audio3d.loadSfx( "phase_9/audio/sfx/CHQ_GOON_rattle_shake.ogg") base.audio3d.attachSoundToObject(self.wakeupSound, self) self.idleSound = base.audio3d.loadSfx( "phase_9/audio/sfx/CHQ_FACT_stomper_raise.ogg") base.audio3d.attachSoundToObject(self.idleSound, self) self.idleSound.setLoop(True) self.scannerMdl = loader.loadModel( "phase_14/models/props/lightscanner.egg") self.scannerMdl.setTransparency(1) self.scannerMdl.setColorScale(1, 1, 0.5, 0.5) self.scannerMdl.setTwoSided(True) self.scannerMdl.setH(180) self.scannerMdl.setZ(3.25) self.scannerMdl.setY(-0.8) self.scannerMdl.reparentTo(self.find("**/eye")) self.scannerMdl.hide() self.scannerMdl.setMaterialOff(1) self.scannerMdl.setShaderOff(1) self.scannerMdl.setLightOff(1) self.eyeLaser = loader.loadModel("phase_14/models/props/laser.egg") self.eyeLaser.find("**/laser").setBillboardAxis() #self.eyeLaser.setColorScale(1, 0, 0, 1) self.eyeLaser.setLightOff(1) self.eyeLaser.setMaterialOff(1) self.eyeLaser.setShaderOff(1) self.eyeLaser.setTwoSided(True) self.resetEyeLaser() self.ragdoll = GoonRagdoll(self, "goon") self.ragdoll.setup() self.ragdoll.mode = self.ragdoll.RMRagdoll # For the antenna self.find("**/unknown406").setTwoSided(True) self.nametag3d.setZ(self.getHeight())