使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

使用利用Unity插件Voxel Importe绑定骨骼和制作动画

将vox和qb文件导入Unity项目中,自动转换为Voxel对象,可以作为预制使用。
这些功能仅对Unity 2017.1及更新版本有效。


脚本说明


Voxel Object

作用:生成GameObject。
它适用于基本的固定对象,并且它会生成一个优化的网格。

脚本位置:
Component/Voxel Importer/Voxel Object

使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

使用方法:

  1. 创建一个空物体。
  2. 添加 “Voxel Importer / Voxel Object” 组件。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  3. 打开一个 voxel file 文件。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  4. 这样就完成优化了网格的创建。

注意:

  • 此脚本仅在编辑器中工作。
  • 网格是预构建的,因此在运行时不需要额外的资源。
  • 在构建的情况下,它并没有保留所有的信息。

Voxel Skinned Animation Object

作用:绑定体素骨骼,制作动画的前一步。

应用到动画对象。 它生成一个优化的网格。

脚本位置:
Component/Voxel Importer/Voxel Skinned Animation Object

使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

使用方法

  1. 创建一个空物体。
  2. 添加 “Voxel Importer / Voxel Skinned Animation Object” 组件。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  3. 打开一个 voxel 文件。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  4. 去改变中心坐标 “Import Offset” 的调整。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    使中心坐标设置在体素模型的底部中间。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  5. 从模板中创建骨骼。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (1) 有四种不同的骨骼选择。
    (2) Maximum Humanoid (Mecanim).asset ,骨骼形状如下
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (3) Maximum Humanoid (Mecanim) Unity5.6.o or later.asset,骨骼形状如下
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (4) Mi nimum Humanoid (Mecanim).asset,骨骼形状如下
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (5) SD Human.asset,骨骼形状如下
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  6. 选择骨骼。
  7. 按下 “Edit Bone Position” 按钮,这是用来编辑骨骼位置的。
  8. 把骨骼调整到合适的位置。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    步骤如下:
    (1) 将hips骨骼设置在人物相应的位置。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (2) 设置Chest骨骼的位置。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (3) 设置Head头部骨骼
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (4) 设置LeftShoulder左肩旁骨骼,初始时默认勾选镜像骨骼设置,右肩膀会自动镜像设置。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (5) 设置LeftUpperLeg 左腿的骨骼。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    (6) 到此骨骼位置设置好,按下Refresh按钮刷新。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  9. 如有必要,在 “Add Child Bone” 按钮中加入一根子节点骨骼。
    以下的正确的骨骼位置示例:
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    也可以增加子节点骨骼,这里加入了尾巴和翅膀的骨骼。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  10. 调整好骨骼位置之后,选择各骨骼,开始设置骨骼的权重。
  11. 按下 “Edit Bone Weight” 按钮,开始设置骨骼的权重。
    提示:按空格键可以看到原体素的样子。
    骨骼权重设置界面如下:
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    可以看到左上角的窗口,是用来设置骨骼权重的:
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    最上面的两个是选择方式:分别是Voxel体素和Vertex顶点两种方式。
    Voxel体素选择下有三种选择方式,具体如下:
    Voxel:单个体素
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    Fill:自动选择填充相关部分。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    Rect:矩形选择,选择到的每个体素都是同一个权重值,配合Vertex使用。(常用)
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    下方的按钮分别是:替换、增加、减少、权重值、镜像设置。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    Vertex顶点选择下有两选择方式,具体如下:
    Brush:笔刷模式,直接设置某些顶点。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    Rect:矩形选择,会有比较好的过度。(常用)
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  12. 完成骨骼的权重设置之后,就完成了皮肤网格的创建,接下来就可以在Animation窗口中制作动画了。

以下使各部位正确的骨骼权重示例:

Spine脊椎开始的设置:由于还需要设置其他骨骼的权重,此处只为暂时设置而已。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
左上臂
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
左下臂
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
头部
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
新增的子节点翅膀
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
左上腿
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
左下腿
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
新增子节点尾巴
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
Hips髋部
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
最终的Spine
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

最终骨骼绑定的效果

打开Avatar查看
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
添加Animator
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
设置动画,可以看到动画效果
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画


Voxel Chunks Object

作用:将多个组合的体素物体组合在一起。

  • 分割体素以创建一个网格。
  • 它用于超过65000顶点的情况。
  • 此外,你还可以在四元矩阵中分裂。

位置:Component/Voxel Importer/Voxel Chunks Object
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

使用方法:
1. 创建一个空物体。
2. 添加 “Voxel Importer / Voxel Chunks Object” 组件。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
3. 打开一个voxel文件。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
4. 则完成了优化网格的创建。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

该脚本可以设置碎块效果

  • Voxel Chunks Object导入体素文件,在物体下得到很多chunk,默认情况下Import下的Setting下的Split Mode勾选MagicVoxel World Editor,即按着MagicVoxel World的图层来获得chunk的,一个图层对应这一个chunk。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  • 若设置为chunk size,则会按照下面设置的chunk size来生成chunk,不会按照MagicVoxel World的图层来区分。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  • 若选中了Import下的Setting下的Create contact faces ,则会将每个chunk存在的缺口补上
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  • 在为每个chunk添加Rigidbody和Collider,Mesh Collider点上Conves,可以达到碎块效果
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  • 若不选中了Import下的Setting下的Create contact faces ,则每个chunk存在的缺口,这样不能做破碎效果。
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
  • 若Import下的Setting下的Split Mode勾选MagicVoxel World Editor,再添加Rigidbody和Collider,破碎效果将会按照MagicaVoxel的图层设置来破碎。’
    使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

Voxel Frame Animation Object

作用:创建体素组合的帧动画。

位置:
Component/Voxel Importer/Voxel Frame Animation Object

使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

使用方法:
1. 创建一个空物体。
2. 添加 “Voxel Importer / Voxel Frame Animation Object” 组件。
3. 打开一个体素文件。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
4. 打开体素文件之后,在Animation中自动加入了一帧。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
5. 点击Animation的Open加载第二各帧动画。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
6. 可以在Frame List Window中查看加入的帧。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
8. 也可以在Frame List Window中选择添加。
9. 使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
9. 体素帧动画完成。


1.1.3插件新加入

单个体素对象的修改

将vox问文件保存在Unity中,MagicaVoxel对vox左的修改可以实时地现实在Unity中。
若在Advanced的Setting中不取消Legacy Vox Import,则在MagicaVoxel的位置的修改可以直接修改到Unity中。
若选中了Legacy Vox Import,则不会修改到Unity中。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

Voxel Chunks Object的修改

点击Refresh,只会修改选中的对象
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
点击Refresh all chunks,可以对所有的chunks对象做修改。

点击Create contact faces of chunk,可以修补每个chunk的缺口
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画

在Advanced中的object下的Material的Material Mode中设为Combine,则所有对象使用同一材质
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
若将Material Mode中设为In’dividual,则每个chunk都有独立的材质球。
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画
使用Unity插件Voxel Importe为MagicaVoxel模型添加动画