blender2.8 python脚本控制骨骼做动作

blender 能干什么

blender是一个开源,且功能十分强大的3d软件,可以建模,可以修改视频,可以动作跟随。最强大的是允许用户通过python脚本控制任何用户可见的东西。

The Blender/Python API can do the following:

  1. Edit any data the user interface can (Scenes, Meshes, Particles etc.).
  2. Modify user preferences, key-maps and themes.
  3. Run tools with own settings.
  4. Create user interface elements such as menus, headers and panels.
  5. Create new tools.
  6. Create interactive tools.
  7. Create new rendering engines that integrate with Blender.
  8. Subscribe to changes to data and it’s properties.
  9. Define new settings in existing Blender data.
  10. Draw in the 3D view using Python.

利用blender操作骨骼

  1. fbx文件为例,我引用mixamo生成的模型(如果有自己的模型,可以使用自己的,需要带骨骼)
  2. 直接上代码
# -*- coding: UTF-8 -*-
import bpy
import math


#input_fbx_path="E:/workspace/python/blender/gObj/Hip Hop Dancing.fbx"#模型输入文件路径,blender中运行需要指定绝对路径
#output_fbx_path="E:/workspace/python/blender/result/t1.fbx"#模型输出文件路径,blender中运行需要指定绝对路径

input_fbx_path="./Hip Hop Dancing.fbx" #模型输入文件路径,ubuntu终端运行脚本,可以写模型相对路径
output_fbx_path="./t1.fbx"#模型输出文件路径,ubuntu终端运行脚本,可以写模型相对路径

bpy.ops.import_scene.fbx(filepath=input_fbx_path)#导入fbx文件
bpy.context.scene.tool_settings.lock_object_mode = False #关闭 Edit->Lock Objects modes 选项

def createKeyFrame():
    ob = bpy.data.objects['Armature'] 
    bpy.context.view_layer.objects.active = ob #相当于鼠标左键选中
    bpy.ops.object.mode_set(mode='POSE') #切换为pose更改模式
    hip=ob.pose.bones['Hips'] #选中其中一块骨骼,根据自己模型中骨骼的名称,名称可以在Outliner(大纲)视图找到
	#对骨骼进行旋转
    hip.rotation_mode = 'XYZ'
    # select axis in ['X','Y','Z']  <--bone local
    axis = 'Z'
    angle = 120
    hip.rotation_euler.rotate_axis(axis, math.radians(angle))
    bpy.ops.object.mode_set(mode='OBJECT')
    #insert a keyframe
    hip.keyframe_insert(data_path="rotation_euler" ,frame=1)    

createKeyFrame()

bpy.ops.export_scene.fbx(filepath=output_fbx_path) #导出操作之后的模型
  1. 运行
    • 无界面运行,ubuntu中通过终端在命令行运行,指令如下

      blender --enable-autoexec -noaudio --background --python loadFBX.py [-- 参数] (loadFBX.py为脚本文件名称)

    • blender界面运行,在文本编辑器页面打开脚本,点击run script按钮即可
  2. 注意事项
    • 文件头需要加编码格式说明# -*- coding: UTF-8 -*-,否则中文报错
    • 如果对命令不熟悉,可以在blender交互式命令窗口输入命令,按ctrl+space bar获得提示
    • blender必须支持引用的fbx模型,否则会在导入的时候报错,可以先用blender界面导入一下fbx文件,在info窗口查看是否有报错信息
    • blenderpython脚本基本上可以操作所有可以看到东西,可以参考blender官方文档做相关的操作
    • ubuntu下安装blender,自行百度,很多博客都有说

你可能感兴趣的:(blender)