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
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
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
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
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