Пример #1
0
def exportFbx(human, filepath, options):
    posemode.exitPoseMode()
    posemode.enterPoseMode()

    the.Human = human
    the.Config = export_config.exportConfig(human, True, [])
    the.Config.separatefolder = True
    outfile = export_config.getOutFileFolder(filepath, the.Config)
    (outpath, ext) = os.path.splitext(outfile)

    log.message("Write FBX file %s" % outfile)

    rawTargets = []
    if options["expressions"]:
        shapeList = read_expression.readExpressionUnits(human, 0, 1)
        rawTargets += shapeList

    if options["customshapes"]:
        the.Config.customshapes = True
        mhx_custom.listCustomFiles(the.Config)

        log.message("Custom shapes:")
        for path, name in the.Config.customShapeFiles:
            log.message("    %s", path)
            shape = mhx_custom.readCustomTarget(path)
            target = (name, shape)
            rawTargets.append(target)

    rigfile = "data/rigs/%s.rig" % options["fbxrig"]
    stuffs = object_collection.setupObjects(
        os.path.splitext(outfile)[0],
        human,
        rigfile,
        rawTargets=rawTargets,
        helpers=options["helpers"],
        hidden=options["hidden"],
        eyebrows=options["eyebrows"],
        lashes=options["lashes"],
    )

    (scale, unit) = options["scale"]

    bpy.initialize()
    name = os.path.splitext(os.path.basename(filepath))[0]
    boneInfo = stuffs[0].boneInfo
    rig = bpy.addRig(name, boneInfo)
    for stuff in stuffs:
        ob = bpy.addMesh(stuff.name, stuff, True)
        ob.parent = rig

    # name = os.path.splitext(os.path.basename(filepath))[0]
    # bpy.addMesh(name, human.meshData, False)

    filename = "%s.fbx" % outpath
    io_mh_fbx.fbx_export.exportFbxFile(bpy.context, filename)
    posemode.exitPoseMode()
    return
Пример #2
0
def exportFbx(human, filepath, options):
    posemode.exitPoseMode()        
    posemode.enterPoseMode()
    
    the.Human = human        
    the.Config = export_config.exportConfig(human, True, [])
    the.Config.separatefolder = True
    outfile = export_config.getOutFileFolder(filepath, the.Config)        
    (outpath, ext) = os.path.splitext(outfile)

    log.message("Write FBX file %s" % outfile)

    rawTargets = []
    if options["expressions"]:
        shapeList = read_expression.readExpressionUnits(human, 0, 1)
        rawTargets += shapeList

    if options["customshapes"]:
        the.Config.customshapes = True
        mhx_custom.listCustomFiles(the.Config)                            

        log.message("Custom shapes:")    
        for path,name in the.Config.customShapeFiles:
            log.message("    %s", path)
            shape = mhx_custom.readCustomTarget(path)
            target = (name,shape)
            rawTargets.append(target)

    rigfile = "data/rigs/%s.rig" % options["fbxrig"]
    stuffs = object_collection.setupObjects(
        os.path.splitext(outfile)[0], 
        human, 
        rigfile, 
        rawTargets=rawTargets,
        helpers=options["helpers"], 
        hidden=options["hidden"], 
        eyebrows=options["eyebrows"], 
        lashes=options["lashes"])

    (scale, unit) = options["scale"]   

    bpy.initialize()
    name = os.path.splitext(os.path.basename(filepath))[0]
    boneInfo = stuffs[0].boneInfo
    rig = bpy.addRig(name, boneInfo)
    for stuff in stuffs:
        ob = bpy.addMesh(stuff.name, stuff, True)
        ob.parent = rig
        
    #name = os.path.splitext(os.path.basename(filepath))[0]
    #bpy.addMesh(name, human.meshData, False)
    
    filename = "%s.fbx" % outpath
    io_mh_fbx.fbx_export.exportFbxFile(bpy.context, filename)
    posemode.exitPoseMode()        
    return
Пример #3
0
def writeShapeKeys(fp, human, name, config, proxy):
    fp.write("#if toggle&T_Shapekeys\n" + "ShapeKeys %s\n" % name +
             "  ShapeKey Basis Sym True\n" + "  end ShapeKey\n")
    """
    if (not proxy or proxy.type == 'Proxy'):        
        if config.faceshapes:
            shapeList = read_expression.readFaceShapes(human, rig_panel_25.BodyLanguageShapeDrivers, 0.6, 0.7)
            for (pose, shape, lr, min, max) in shapeList:
                writeShape(fp, pose, lr, shape, min, max, proxy)
    """

    if not proxy:
        if config.expressionunits:
            shapeList = read_expression.readExpressionUnits(human, 0.7, 0.9)
            for (pose, shape) in shapeList:
                writeShape(fp, pose, "Sym", shape, -1, 2, proxy)

    if config.bodyshapes and config.rigtype == "mhx":
        writeCorrectives(fp, human, rig_shoulder_25.ShoulderTargetDrivers,
                         "shoulder", "shoulder", proxy, 0.88, 0.90)
        writeCorrectives(fp, human, rig_leg_25.HipTargetDrivers, "hips",
                         "hips", proxy, 0.90, 0.92)
        writeCorrectives(fp, human, rig_arm_25.ElbowTargetDrivers, "elbow",
                         "body", proxy, 0.92, 0.94)
        writeCorrectives(fp, human, rig_leg_25.KneeTargetDrivers, "knee",
                         "knee", proxy, 0.94, 0.96)

    if not proxy:
        for path, name in config.customShapeFiles:
            log.message("    %s", path)
            shape = mhx_custom.readCustomTarget(path)
            writeShape(fp, name, "Sym", shape, -1, 2, proxy)

    fp.write("  AnimationData None (toggle&T_Symm==0)\n")

    if config.bodyshapes and config.rigtype == "mhx":
        armature.drivers.writeTargetDrivers(
            fp, rig_shoulder_25.ShoulderTargetDrivers, the.Human)
        armature.drivers.writeTargetDrivers(fp, rig_leg_25.HipTargetDrivers,
                                            the.Human)
        armature.drivers.writeTargetDrivers(fp, rig_arm_25.ElbowTargetDrivers,
                                            the.Human)
        armature.drivers.writeTargetDrivers(fp, rig_leg_25.KneeTargetDrivers,
                                            the.Human)

        armature.drivers.writeRotDiffDrivers(fp, rig_arm_25.ArmShapeDrivers,
                                             proxy)
        armature.drivers.writeRotDiffDrivers(fp, rig_leg_25.LegShapeDrivers,
                                             proxy)
        #armature.drivers.writeShapePropDrivers(fp, rig_body_25.BodyShapes, proxy, "Mha")

    fp.write("#if toggle&T_ShapeDrivers\n")

    if not proxy:
        for path, name in config.customShapeFiles:
            armature.drivers.writeShapePropDrivers(fp, [name], proxy, "")

    if not proxy:
        if config.expressionunits:
            armature.drivers.writeShapePropDrivers(
                fp, read_expression.ExpressionUnits, proxy, "Mhs")

        skeys = []
        for (skey, val, string, min, max) in config.customProps:
            skeys.append(skey)
        armature.drivers.writeShapePropDrivers(fp, skeys, proxy, "Mha")
    fp.write("#endif\n")

    fp.write("  end AnimationData\n\n")

    if config.expressionunits and not proxy:
        exprList = read_expression.readExpressionMhm("data/expressions")
        writeExpressions(fp, exprList, "Expression")
        visemeList = read_expression.readExpressionMhm("data/visemes")
        writeExpressions(fp, visemeList, "Viseme")

    fp.write("  end ShapeKeys\n" + "#endif\n")
    return
Пример #4
0
def writeShapeKeys(fp, human, name, config, proxy):
    fp.write(
"#if toggle&T_Shapekeys\n" +
"ShapeKeys %s\n" % name +
"  ShapeKey Basis Sym True\n" +
"  end ShapeKey\n")

    """
    if (not proxy or proxy.type == 'Proxy'):        
        if config.faceshapes:
            shapeList = read_expression.readFaceShapes(human, rig_panel_25.BodyLanguageShapeDrivers, 0.6, 0.7)
            for (pose, shape, lr, min, max) in shapeList:
                writeShape(fp, pose, lr, shape, min, max, proxy)
    """
    
    if not proxy:
        if config.expressionunits:
            shapeList = read_expression.readExpressionUnits(human, 0.7, 0.9)
            for (pose, shape) in shapeList:
                writeShape(fp, pose, "Sym", shape, -1, 2, proxy)
        
    if config.bodyshapes and config.rigtype == "mhx":
        writeCorrectives(fp, human, rig_shoulder_25.ShoulderTargetDrivers, "shoulder", "shoulder", proxy, 0.88, 0.90)                
        writeCorrectives(fp, human, rig_leg_25.HipTargetDrivers, "hips", "hips", proxy, 0.90, 0.92)                
        writeCorrectives(fp, human, rig_arm_25.ElbowTargetDrivers, "elbow", "body", proxy, 0.92, 0.94)                
        writeCorrectives(fp, human, rig_leg_25.KneeTargetDrivers, "knee", "knee", proxy, 0.94, 0.96)                

    if not proxy:
        for path,name in config.customShapeFiles:
            log.message("    %s", path)
            shape = mhx_custom.readCustomTarget(path)
            writeShape(fp, name, "Sym", shape, -1, 2, proxy)                        

    fp.write(
"  AnimationData None (toggle&T_Symm==0)\n")
        
    if config.bodyshapes and config.rigtype == "mhx":
        armature.drivers.writeTargetDrivers(fp, rig_shoulder_25.ShoulderTargetDrivers, the.Human)
        armature.drivers.writeTargetDrivers(fp, rig_leg_25.HipTargetDrivers, the.Human)
        armature.drivers.writeTargetDrivers(fp, rig_arm_25.ElbowTargetDrivers, the.Human)
        armature.drivers.writeTargetDrivers(fp, rig_leg_25.KneeTargetDrivers, the.Human)

        armature.drivers.writeRotDiffDrivers(fp, rig_arm_25.ArmShapeDrivers, proxy)
        armature.drivers.writeRotDiffDrivers(fp, rig_leg_25.LegShapeDrivers, proxy)
        #armature.drivers.writeShapePropDrivers(fp, rig_body_25.BodyShapes, proxy, "Mha")

    fp.write("#if toggle&T_ShapeDrivers\n")

    if not proxy:
        for path,name in config.customShapeFiles:
            armature.drivers.writeShapePropDrivers(fp, [name], proxy, "")    

    if not proxy:
        if config.expressionunits:
            armature.drivers.writeShapePropDrivers(fp, read_expression.ExpressionUnits, proxy, "Mhs")
            
        skeys = []
        for (skey, val, string, min, max) in  config.customProps:
            skeys.append(skey)
        armature.drivers.writeShapePropDrivers(fp, skeys, proxy, "Mha")    
    fp.write("#endif\n")
        
    fp.write(
"  end AnimationData\n\n")

    if config.expressionunits and not proxy:
        exprList = read_expression.readExpressionMhm("data/expressions")
        writeExpressions(fp, exprList, "Expression")        
        visemeList = read_expression.readExpressionMhm("data/visemes")
        writeExpressions(fp, visemeList, "Viseme")        

    fp.write(
        "  end ShapeKeys\n" +
        "#endif\n")
    return    
Пример #5
0
def writeShapeKeys(fp, human, name, proxy):
    fp.write(
"#if toggle&T_Shapekeys\n" +
"ShapeKeys %s\n" % name +
"  ShapeKey Basis Sym True\n" +
"  end ShapeKey\n")

    if (not proxy or proxy.type == 'Proxy'):
        if the.Config.faceshapes:            
            shapeList = read_expression.readFaceShapes(human, rig_panel_25.BodyLanguageShapeDrivers, 0.6, 0.7)
            for (pose, shape, lr, min, max) in shapeList:
                writeShape(fp, pose, lr, shape, min, max, proxy)

    if not proxy:
        if the.Config.expressions:
            shapeList = read_expression.readExpressions(human, 0.7, 0.9)
            for (pose, shape) in shapeList:
                writeShape(fp, pose, "Sym", shape, 0, 1, proxy)
        if the.Config.expressionunits:
            shapeList = read_expression.readExpressionUnits(human, 0.7, 0.9)
            for (pose, shape) in shapeList:
                writeShape(fp, pose, "Sym", shape, 0, 1, proxy)
        
    if the.Config.bodyshapes and the.Config.mhxrig=="mhx":
        writeCorrectives(fp, human, rig_shoulder_25.ShoulderTargetDrivers, "shoulder", proxy)                
        writeCorrectives(fp, human, rig_leg_25.HipTargetDrivers, "hips", proxy)                
        writeCorrectives(fp, human, rig_arm_25.ElbowTargetDrivers, "elbow", proxy)                
        writeCorrectives(fp, human, rig_leg_25.KneeTargetDrivers, "knee", proxy)                
        #copyShapeKeys("shared/mhx/templates/shapekeys-body25.mhx", fp, proxy, True)

    for path in the.Config.customshapes:
        print("    %s" % path)
        #copyShapeKeys(path, fp, proxy, False)   

    fp.write(
"  AnimationData None (toggle&T_Symm==0)\n")
        
    if the.Config.bodyshapes and the.Config.mhxrig=="mhx":
        mhx_rig.writeTargetDrivers(fp, rig_shoulder_25.ShoulderTargetDrivers, the.Human)
        mhx_rig.writeTargetDrivers(fp, rig_leg_25.HipTargetDrivers, the.Human)
        mhx_rig.writeTargetDrivers(fp, rig_arm_25.ElbowTargetDrivers, the.Human)
        mhx_rig.writeTargetDrivers(fp, rig_leg_25.KneeTargetDrivers, the.Human)

        mhx_rig.writeRotDiffDrivers(fp, rig_arm_25.ArmShapeDrivers, proxy)
        mhx_rig.writeRotDiffDrivers(fp, rig_leg_25.LegShapeDrivers, proxy)
        #mhx_rig.writeShapePropDrivers(fp, rig_body_25.BodyShapes, proxy, "&")

    fp.write("#if toggle&T_ShapeDrivers\n")
    if (not proxy or proxy.type == 'Proxy'):
        if the.Config.faceshapes:
            drivers = rig_panel_25.BodyLanguageShapeDrivers
            if the.Config.facepanel:
                mhx_rig.writeShapeDrivers(fp, drivers, None)
            else:
                mhx_rig.writeShapePropDrivers(fp, drivers.keys(), proxy, "&_")                
    fp.write("#endif\n")

    if the.Config.mhxrig != "rigify":
        fp.write("#if toggle&T_ShapeDrivers\n")
        if not proxy:
            if the.Config.expressions and not proxy:
                mhx_rig.writeShapePropDrivers(fp, read_expression.Expressions, proxy, "*")
            if the.Config.expressionunits and not proxy:
                mhx_rig.writeShapePropDrivers(fp, read_expression.ExpressionUnits, proxy, "*")
                
            skeys = []
            for (skey, val, string, min, max) in  the.CustomProps:
                skeys.append(skey)
            mhx_rig.writeShapePropDrivers(fp, skeys, proxy, "&")    
        fp.write("#endif\n")
        
    fp.write(
"  end AnimationData\n" +
"end ShapeKeys\n" +
"#endif\n")
    return