Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
    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))
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
    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]
Ejemplo n.º 5
0
    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())