天晴动作工具组文档
首页
C3相关
天晴盒子
脚本文档
开发公约
  • MAXScript2020 Help (opens new window)
  • 3dsmax-2023-MAXScript Help (opens new window)
  • 3dsmax-2023-Max-Python Help (opens new window)
  • DeveloperSDK2023 Help (opens new window)
教程
更新
关于
  • 动画重定向
  • 3ds Max 文件降版本
  • GIF播放器
  • 表情绑定助手
  • MAXtoUnrealTools
  • MMD4Max
  • AnimFiltersMax2021
  • 分类
  • 标签
  • 归档
首页
C3相关
天晴盒子
脚本文档
开发公约
  • MAXScript2020 Help (opens new window)
  • 3dsmax-2023-MAXScript Help (opens new window)
  • 3dsmax-2023-Max-Python Help (opens new window)
  • DeveloperSDK2023 Help (opens new window)
教程
更新
关于
  • 动画重定向
  • 3ds Max 文件降版本
  • GIF播放器
  • 表情绑定助手
  • MAXtoUnrealTools
  • MMD4Max
  • AnimFiltersMax2021
  • 分类
  • 标签
  • 归档
  • CATRig

    • 创建CAT
    • 创建特别注意
    • 动画-图层
    • 动画-IK_Arm_手
    • 动画-IK_Leg_腿
    • 动画-导入-bip
    • 动画-IK固定
    • 动画-缩放拉伸
    • 导出-Motion-Extraction-Node
  • NetSDK(C#)动画曲线插件课程
  • 蒙皮增强
  • 游戏中的动画拉伸效果 - 上
  • FBXMetaData
  • Engine

    • Unity上下半身动画融混合
    • Unity资源单位
    • UE4_AnimDynamics
    • UE4_Dynamic_Simulated_Ponytail
    • UE4_径向模糊
    • UE4CharacterMovement
    • montage
    • UE4基础材质
    • unity_DynamicBone
    • 快速创建包围盒UE4
    • 跳跃动作注意
    • 虚幻EditorUtilityBlueprint_动作资源批量工具
  • MaxPython_Msx

    • Python执行MAXScript
    • 3dsMax 安装 NumPy
    • Python 编译 pyd
    • Sublime Text 发送到 3ds Max
    • Visual Studio Code 发送到 3ds Max
    • 3dsMax_Python中文编码
    • 3dsMax PySide 控件键盘输入问题
    • Max不同版本的Python差异
    • FBX_SDK_动画操作
      • 1.0 下载安装 FBXSDK
      • 1.1 引用 FBXSDK
      • 2.1 Node 的动画曲线 - take ,动画层 ,曲线
      • 2.2 Node 修改动画曲线
    • Python3编译Pyd-vc14.16
  • iPhone表情捕捉3dsMax流程
  • 面部蒙皮权重处理
  • Cascadeur动画调研
  • AI视频动捕产品调研
  • RigNet自动绑定角色-AI- 部署测试
  • MotoricaAI-MoGen 动画合成
  • 3dsMax与Spine互导工具
  • EasyMocap视频动捕部署测试
  • FreeMocap无标记视频动捕部署
  • RootMotion和InPlace动画差异
  • 虚幻物理资产导出XML
  • 关闭骨骼移动带转父级的特性
  • 简易Biped绑定框架方案
  • 关于蒙皮权重镜像匹配问题介绍以及解决方案
  • GVHMR视频动捕部署
  • 教程
  • MaxPython_Msx
2021-09-13
目录

FBXSDK动画操作

# PythonFBXSKD 01 - 基础的动画操作

# 1.0 下载安装 FBXSDK

我这里演示的是 FBXSDK_2020.2 只有 py37 版本的 ,FBXSDK_2020.1.1 版本有 py27 和py33 两个版本,根据自己的python环境选择合适的FBXSDK版本即可

  • Autodesk FBX SDK 2020 (opens new window)

  • 默认安装路径 C:\Program Files\Autodesk\FBX\FBX Python SDK


# 1.1 引用 FBXSDK

  • 先将 FBXSDK 的安装路径添加到 sys.path 中
  • 然后导入 FbxCommon,fbx 这两个包

参考:

GitHub-FBX_Scene.py (opens new window)

FBX_Scene.py 其中涉及加载FBX,查找对象,修改重命名之类的操作。本文都是基于该基础代码修改实现

知乎-FBX SDK 介绍 (opens new window)


# 2.1 Node 的动画曲线 - take ,动画层 ,曲线

curve_type 参数 1 :位置,2:旋转,3:缩放 ,curves_name 就是XYZ 各轴曲线了,

先是遍历FBX中的 take ,3ds max 导出的fbx资源都只要一条take 001.

for i in range(self.scene.GetSrcObjectCount(FbxCriteria.ObjectType(FbxAnimStack.ClassId))):
    # Take 001 遍历 take
    lAnimStack = self.scene.GetSrcObject(FbxCriteria.ObjectType(FbxAnimStack.ClassId), i)
    print("Take: %s" % lAnimStack.GetName())

然后在take 取动画层, 下面代码中,我就不遍历动画了,直取 0 : BaseLayer 基础动画层

lAnimLayer = lAnimStack.GetSrcObject(FbxCriteria.ObjectType(FbxAnimLayer.ClassId), 0)

有了动画层就可以直取 对象的动画曲线了,代码写的很清楚了,

位移曲线:

lAnimCurve = node.LclTranslation.GetCurve(lAnimLayer, KFCURVENODE_T_X)

旋转曲线:

lAnimCurve = node.LclRotation.GetCurve(lAnimLayer, KFCURVENODE_T_X)

缩放曲线:

lAnimCurve = node.LclScaling.GetCurve(lAnimLayer, KFCURVENODE_T_X)

# 2.2 Node 修改动画曲线

这个测试的是把 role_node 对象的Y轴位移动画 转移到 root_node 对象的 Z轴

先取得动画曲线上的帧数

role_KeyCount = role_node_y_AnimCurve.KeyGetCount()

然后遍历这些帧

for lCount in range(role_KeyCount):
	lKeyValue = role_node_y_AnimCurve.KeyGetValue(lCount)
	lKeyTime  = role_node_y_AnimCurve.KeyGetTime(lCount)

start_key_value 是role_node 对象的第零帧动画位移数值 ,KeySetValue 是给帧设置新数值

new_value = lKeyValue - start_key_value
role_node_y_AnimCurve.KeySetValue(lCount,start_key_value)

给root_node 对象Z轴曲线添加帧,lKeyTime 是 FbxTime 对象,不是普通的数值,KeySetInterpolation 是设置帧的贝兹曲线类型

lKeyIndex = root_node_y_AnimCurve.KeyAdd(lKeyTime)[0]
root_node_y_AnimCurve.KeySetValue(lKeyIndex, new_value * -1 )
root_node_y_AnimCurve.KeySetInterpolation(lKeyIndex, FbxAnimCurveDef.eInterpolationCubic)

修改完成之后,SaveScene 保存即可。

完整代码 链接:https://pan.baidu.com/s/1GITx2pw0ev9GL4_l7Wb52g 提取码:6y5f


SDK 路径下面的 samples 文件夹 有很多官方的演示了,我也只是看看 ImportScene 路径下 ImportScene.py 打印出来的FBX信息来学习的

将 ImportScene.py 如下这样修改,即可运行打印出FBX文件中的各种信息了

#Python
Max不同版本的Python差异
Python3编译Pyd-vc14.16

← Max不同版本的Python差异 Python3编译Pyd-vc14.16→

最近更新
01
GVHMR视频动捕部署
04-20
02
关于蒙皮权重镜像匹配问题介绍以及解决方案
03-19
03
简易Biped绑定框架方案
03-18
更多文章>
Theme by Vdoing | Copyright © 2019-2025 ND|99u:199505| 鄂ICP备2022012500号 | 鄂公网安备 42022202000122号

共产主义:是对生产资料的共享,不是对生活资料财产的均分

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×