blender
能干什么
blender
是一个开源,且功能十分强大的3d软件,可以建模,可以修改视频,可以动作跟随。最强大的是允许用户通过python
脚本控制任何用户可见的东西。
The Blender/Python API can do the following:
- Edit any data the user interface can (Scenes, Meshes, Particles etc.).
- Modify user preferences, key-maps and themes.
- Run tools with own settings.
- Create user interface elements such as menus, headers and panels.
- Create new tools.
- Create interactive tools.
- Create new rendering engines that integrate with Blender.
- Subscribe to changes to data and it’s properties.
- Define new settings in existing Blender data.
- Draw in the 3D view using Python.
利用blender
操作骨骼
- 以
fbx
文件为例,我引用mixamo生成的模型(如果有自己的模型,可以使用自己的,需要带骨骼) - 直接上代码
# -*- 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) #导出操作之后的模型
- 运行
- 无界面运行,ubuntu中通过终端在命令行运行,指令如下
blender --enable-autoexec -noaudio --background --python loadFBX.py [-- 参数]
(loadFBX.py为脚本文件名称) - blender界面运行,在文本编辑器页面打开脚本,点击
run script
按钮即可
- 无界面运行,ubuntu中通过终端在命令行运行,指令如下
- 注意事项
- 文件头需要加编码格式说明
# -*- coding: UTF-8 -*-
,否则中文报错 - 如果对命令不熟悉,可以在
blender
交互式命令窗口输入命令,按ctrl+space bar
获得提示 blender
必须支持引用的fbx
模型,否则会在导入的时候报错,可以先用blender
界面导入一下fbx
文件,在info
窗口查看是否有报错信息blender
中python
脚本基本上可以操作所有可以看到东西,可以参考blender官方文档做相关的操作ubuntu
下安装blender
,自行百度,很多博客都有说
- 文件头需要加编码格式说明