使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
使用利用Unity插件Voxel Importe绑定骨骼和制作动画
将vox和qb文件导入Unity项目中,自动转换为Voxel对象,可以作为预制使用。
这些功能仅对Unity 2017.1及更新版本有效。
脚本说明
Voxel Object
作用:生成GameObject。
它适用于基本的固定对象,并且它会生成一个优化的网格。
脚本位置:
Component/Voxel Importer/Voxel Object
使用方法:
- 创建一个空物体。
- 添加 “Voxel Importer / Voxel Object” 组件。
- 打开一个 voxel file 文件。
- 这样就完成优化了网格的创建。
注意:
- 此脚本仅在编辑器中工作。
- 网格是预构建的,因此在运行时不需要额外的资源。
- 在构建的情况下,它并没有保留所有的信息。
Voxel Skinned Animation Object
作用:绑定体素骨骼,制作动画的前一步。
应用到动画对象。 它生成一个优化的网格。
脚本位置:
Component/Voxel Importer/Voxel Skinned Animation Object
使用方法
- 创建一个空物体。
- 添加 “Voxel Importer / Voxel Skinned Animation Object” 组件。
- 打开一个 voxel 文件。
- 去改变中心坐标 “Import Offset” 的调整。
使中心坐标设置在体素模型的底部中间。 - 从模板中创建骨骼。
(1) 有四种不同的骨骼选择。
(2) Maximum Humanoid (Mecanim).asset ,骨骼形状如下
(3) Maximum Humanoid (Mecanim) Unity5.6.o or later.asset,骨骼形状如下
(4) Mi nimum Humanoid (Mecanim).asset,骨骼形状如下
(5) SD Human.asset,骨骼形状如下 - 选择骨骼。
- 按下 “Edit Bone Position” 按钮,这是用来编辑骨骼位置的。
- 把骨骼调整到合适的位置。
步骤如下:
(1) 将hips骨骼设置在人物相应的位置。
(2) 设置Chest骨骼的位置。
(3) 设置Head头部骨骼
(4) 设置LeftShoulder左肩旁骨骼,初始时默认勾选镜像骨骼设置,右肩膀会自动镜像设置。
(5) 设置LeftUpperLeg 左腿的骨骼。
(6) 到此骨骼位置设置好,按下Refresh按钮刷新。 - 如有必要,在 “Add Child Bone” 按钮中加入一根子节点骨骼。
以下的正确的骨骼位置示例:
也可以增加子节点骨骼,这里加入了尾巴和翅膀的骨骼。 - 调整好骨骼位置之后,选择各骨骼,开始设置骨骼的权重。
- 按下 “Edit Bone Weight” 按钮,开始设置骨骼的权重。
提示:按空格键可以看到原体素的样子。
骨骼权重设置界面如下:
可以看到左上角的窗口,是用来设置骨骼权重的:
最上面的两个是选择方式:分别是Voxel体素和Vertex顶点两种方式。
在Voxel体素选择下有三种选择方式,具体如下:
Voxel:单个体素
Fill:自动选择填充相关部分。
Rect:矩形选择,选择到的每个体素都是同一个权重值,配合Vertex使用。(常用)
下方的按钮分别是:替换、增加、减少、权重值、镜像设置。
在Vertex顶点选择下有两选择方式,具体如下:
Brush:笔刷模式,直接设置某些顶点。
Rect:矩形选择,会有比较好的过度。(常用) - 完成骨骼的权重设置之后,就完成了皮肤网格的创建,接下来就可以在Animation窗口中制作动画了。
以下使各部位正确的骨骼权重示例:
Spine脊椎开始的设置:由于还需要设置其他骨骼的权重,此处只为暂时设置而已。
左上臂
左下臂
头部
新增的子节点翅膀
左上腿
左下腿
新增子节点尾巴
Hips髋部
最终的Spine
最终骨骼绑定的效果
打开Avatar查看
添加Animator
设置动画,可以看到动画效果
Voxel Chunks Object
作用:将多个组合的体素物体组合在一起。
- 分割体素以创建一个网格。
- 它用于超过65000顶点的情况。
- 此外,你还可以在四元矩阵中分裂。
位置:Component/Voxel Importer/Voxel Chunks Object
使用方法:
1. 创建一个空物体。
2. 添加 “Voxel Importer / Voxel Chunks Object” 组件。
3. 打开一个voxel文件。
4. 则完成了优化网格的创建。
该脚本可以设置碎块效果
- Voxel Chunks Object导入体素文件,在物体下得到很多chunk,默认情况下Import下的Setting下的Split Mode勾选MagicVoxel World Editor,即按着MagicVoxel World的图层来获得chunk的,一个图层对应这一个chunk。
- 若设置为chunk size,则会按照下面设置的chunk size来生成chunk,不会按照MagicVoxel World的图层来区分。
- 若选中了Import下的Setting下的Create contact faces ,则会将每个chunk存在的缺口补上
- 在为每个chunk添加Rigidbody和Collider,Mesh Collider点上Conves,可以达到碎块效果
- 若不选中了Import下的Setting下的Create contact faces ,则每个chunk存在的缺口,这样不能做破碎效果。
- 若Import下的Setting下的Split Mode勾选MagicVoxel World Editor,再添加Rigidbody和Collider,破碎效果将会按照MagicaVoxel的图层设置来破碎。’
Voxel Frame Animation Object
作用:创建体素组合的帧动画。
位置:
Component/Voxel Importer/Voxel Frame Animation Object
使用方法:
1. 创建一个空物体。
2. 添加 “Voxel Importer / Voxel Frame Animation Object” 组件。
3. 打开一个体素文件。
4. 打开体素文件之后,在Animation中自动加入了一帧。
5. 点击Animation的Open加载第二各帧动画。
6. 可以在Frame List Window中查看加入的帧。
8. 也可以在Frame List Window中选择添加。
9.
9. 体素帧动画完成。
1.1.3插件新加入
单个体素对象的修改
将vox问文件保存在Unity中,MagicaVoxel对vox左的修改可以实时地现实在Unity中。
若在Advanced的Setting中不取消Legacy Vox Import,则在MagicaVoxel的位置的修改可以直接修改到Unity中。
若选中了Legacy Vox Import,则不会修改到Unity中。
Voxel Chunks Object的修改
点击Refresh,只会修改选中的对象
点击Refresh all chunks,可以对所有的chunks对象做修改。
点击Create contact faces of chunk,可以修补每个chunk的缺口
在Advanced中的object下的Material的Material Mode中设为Combine,则所有对象使用同一材质
若将Material Mode中设为In’dividual,则每个chunk都有独立的材质球。