mmd的骨骼必须名字要对,不对的话导出的动画是不会播放的。 注意,命名的时候不要复制excel表格里的文字,因为会带上制表符,回车啥的,从而导致导出有问题 导入fbx的时候,需要先导出为bvh格式再导入 导出的时候需要勾选Treat current pose as Rest Pose 导出vmd前需要先设置成A pose
基本流程
- Blender先绑定基础骨骼
- 可以参照mmd自带的模型添加基础骨骼和IK
- 自动权重
- 关节区域加循环边
- 手动修改权重
- A-pose
- Pmxeditor处理
- 用插件添加 准标准骨骼(捩骨、肩P啥的)(SemiStandardBones)
- 注意添加-180~-0.5的角度限制
- 还有IK骨骼loop,单位角?
物体的缩放
- 导出blender到Unity需要在Blender里设置成0.0909然后ctrl+A,因为blender的单位导入mmd是1:1.1
- 导入的fbx时候要勾选’自动设置bone方向’
- 再Object模式缩放的时候记得要apply(to delta有妙用)
脚部骨骼陷入地面的问题
- 首先模型需要有 右つま先/左つま先 这两个骨骼
- mmd的模型有严格的顺序,父骨骼必须在子骨骼前面,如果遇到标红色的父骨骼,请在pmx里改下位置
导入unity脚步有滑动
- 关闭动画压缩
- 或者调整动画压缩的值
- optimise
- rotaion 0.05
- position 0.05
- scale 1
手部骨骼动作不准确的问题
- 注意模型的初始状态必须为37度A-pose,如果是T-pose,请改为A-pose,因为大多数动作都是按照A-pose来K的
- blender里重置为A-pose的时候需要到修改器里Apply一下,否则不会生效
重命名脚本
import bpy
prefix_str = "mixamorig:"
for x in bpy.context.object.data.bones:
x.name = x.name.replace(prefix_str + 'Hips','センター')
x.name = x.name.replace(prefix_str + 'Spine2','上半身2')
x.name = x.name.replace(prefix_str + 'Spine','上半身')
x.name = x.name.replace(prefix_str + 'LeftShoulder','左肩')
x.name = x.name.replace(prefix_str + 'LeftArm','左腕')
x.name = x.name.replace(prefix_str + 'LeftForeArm','左ひじ')
x.name = x.name.replace(prefix_str + 'RightShoulder','右肩')
x.name = x.name.replace(prefix_str + 'RightArm','右腕')
x.name = x.name.replace(prefix_str + 'RightForeArm','右ひじ')
x.name = x.name.replace(prefix_str + 'RightLeg','右ひざ')
x.name = x.name.replace(prefix_str + 'LeftLeg','左ひざ')
x.name = x.name.replace(prefix_str + 'RightHand','右手首')
x.name = x.name.replace(prefix_str + 'LeftHand','左手首')
x.name = x.name.replace(prefix_str + 'RightUpLeg','右足')
x.name = x.name.replace(prefix_str + 'LeftUpLeg','左足')
x.name = x.name.replace(prefix_str + 'RightFoot','右足首')
x.name = x.name.replace(prefix_str + 'LeftFoot','左足首')
x.name = x.name.replace(prefix_str + 'Neck','首')
x.name = x.name.replace(prefix_str + 'Head','頭')
镜像改名
ctrl + m之后
import bpy
for x in bpy.context.object.data.bones:
if x.name.find('.001') > 0:
x.name = x.name.replace('左','右')
x.name = x.name.replace('.001','')
导入指定文件夹文件
import os
import bpy
# put the location to the folder where the objs are located here in this fashion
path_to_obj_dir = os.path.join('C:\\', 'Users', 'you login name', 'Desktop', 'ss') #<-WINDOWS_OS
#path_to_obj_dir = bpy.path.abspath('//OBJ/')
# get list of all files in directory
file_list = sorted(os.listdir(path_to_obj_dir))
# get a list of files ending in 'obj'
obj_list = [item for item in file_list if item[-3:] == 'pmx']
# loop through the strings in obj_list and add the files to the scene
for item in obj_list:
path_to_file = os.path.join(path_to_obj_dir, item)
bpy.ops.mmd_tools.import_model(filepath=path_to_file)
Blender导出fbx动作有大幅度飘移
- 导出PMX 用PE打开,检查并排序骨骼
- 用插件添加次标准,导出PMX
- 再导入Blender,导入VMD再导出就好了
- 原因不清楚😜
- 或者再原有基础上,加上groove 、腰 骨骼也行