前言

  • 之前因为新公司试用期+春节项目太忙,导致博客鸽了大半年了,年后总算有那么点时间给我捡起UE了,现在先从简单的开始搞起= =
  • 因为没有建模的基础,搞这东西其实也搞了我一整天了,主要是想初步替代掉引擎默认的小白人
  • 前排说明:
    • 这里使用的方式可能比较“古老”,但验证过当下依旧可行,也算一种方式
    • 本篇使用的是旧版Blender的方式转换模型,半透明的处理也是CG还没入门的方法,如果有高级需求还请回到搜索引擎😂

PMX是MMD常用的格式,虽说99.99%都不允许商用,但耐不住免费下载模型数量碾压其它模型网站,要是能一键导入引擎就学习而言还是很方便的


PMX转单个FBX文件

  • 转换模型需要下面这两玩意:

Vrm4u好像也支持,不过没捣鼓过~~(之后用上了再水一篇)~~

  • 下载到的模型目录大致如下:
  • 2024-02-18-zwkfoljx.png

  • 安装好插件后,第一步就是打开插件,插件的位置还挺隐蔽的,藏在Blender右上角的小箭头里:
    • 2024-02-18-ymlqnseo.png
    • 2024-02-18-ythpcxvj.png
  • 之后点击Import Model导入pmx模型(用Blender自身的菜单导入也可)
    • 2024-02-18-vxsntqco.png
    • 2024-02-15-edhaakvh.png
  • 导入后发现是个白模(如下图所示),先不要急:
    • 2024-02-15-lhwyglse.png
  • 点上GLSL和Shaders,才会“上色”,如果这一步后没问题,就说明模型的贴图导入没有问题了:
    • 2024-02-16-bptjrogg.png

  • 之后返回CATS选项卡,点击Fix Model,这一步是更改骨骼层级,非常重要,高版本的Blender就是栽在这里了
    • 2024-02-16-mlgkjarr.png
  • 修复后的骨骼如下图所示(你可以根原来的对比,确实不一样了)
    • 2024-02-16-zbfzdxdp.png
  • 之后要修改根骨骼,这一步也同样重要,因为Unreal需要且仅需要一个根骨骼(少了多了都不行)
    • 添加根骨骼,就是先选中模型最外层,然后直接添加:
    • 2024-02-18-vitjoowp.png
    • 添加完后就能看到视图下多了一段骨骼:
    • 2024-02-18-rrxdwutj.png
  • 把Bone重命名成 root
    • 2024-02-18-tzjauxun.png
  • 再把Hips的父级设置成root:
    • 2024-02-18-zibdzsdp.png
  • 回车后变成下面这样:
    • 2024-02-16-lgvjzbln.png
  • 最后再到处模型,基本就OK了:
    • 2024-02-16-kmqdfkte.png
    • 导出设置不需要修改
    • 2024-02-16-mcteqlnq.png
  • FBX到这里就制作完成了,下一步就是导入Unreal

FBX导入Unreal

当前演示为Unreal5.1版本

  • 将FBX拖进Unreal自定义的文件夹:
  • 2024-02-16-xyhxwwkc.png
  • 拖进去后会出现一个新的框,无论是4.X还是5.X的Unreal都需要把 转换场景单元勾上:
  • 2024-02-16-drefkitg.png
    • 如果需要保留表情/变形,则需要把 导入变形目标也勾上:
    • 2024-02-16-wgwgmrzb.png
  • 之后点击 导入所有即可:
  • 2024-02-16-nxppzvva.png
  • 把模型拖到场景,就大功告成了:
  • 2024-02-16-rlrikiow.png

半透明材质初步处理

PS:全透明和半透明是两回事,能处理全透明的方式不一定适合半透明

  • 模型是导入了,但目前是没有定义渲染/渲染管线的,这一点在一些半透明的模型上得以体现,比如我重新换个带半透明效果的模型导入,下载预览是下面这样的:
  • 2024-02-16-yuymheqz.png
  • 而我的模型导入后是这样:
  • 2024-02-16-odaxrzbe.png
  • 原因就在于并没有处理半透明的渲染,而一种简易的方式就是直接把混合模式改成半透明,然后连上A通道:
  • 2024-02-16-yqhpmbim.png
  • 结果就是确实半透明了,但翼的影子不见了(半透明模式的通病):
  • 2024-02-16-rznoblwg.png
  • 除此之外,单纯设置 半透明模式时,如果多个半透明物体叠加在一起时,就会出现渲染乱序的情况
  • 比如隔着一块半透明的玻璃看就会发现翅膀不见了:
  • 又或者,我换一个头以下部位全都用一张贴图的模型,开启半透明模式前如下所示:
  • 2024-02-16-wwpnyked.png
  • 改成半透明模式后:
  • 2024-02-16-oggqqjhy.png
  • 咳咳...围着模型转一圈能明显感觉到渲染顺序出错了,下面就先解决这个问题

解决半透明模式下渲染顺序问题

  • 虽然阴影的问题暂时解决不了,但是渲染顺序总归是能解决的
  • 首先打开shader,勾上 允许自定义深度写
  • 2024-02-16-mvnjbecn.png
  • 然后拉如下节点:
  • 2024-02-16-aphicenv.png
    • 注意箭头的位置要修改
  • 然后修改光照模式为 前向渲染
  • 2024-02-16-tqggkgwo.png
  • 再勾上 允许自定义深度
  • 2024-02-16-vvrenrzy.png
  • 可以看到对比一开始确实有些半透明了,但距离模型网站预览还是没那么透(还是shader问题,这里先不再深入了):
  • 2024-02-16-iebomcno.png
  • 到这里为止算是解决了顺序的问题,但由于头下全是贴图+设置半透明,所以地上只有头的影子,这还蛮奇怪的,于是就有了遮罩的实现方式

遮罩模式实现伪半透明

  • 玩过游戏的你一定见过下面这种效果,即视角贴近角色时角色就会被虚化,拿崩铁举例子就是下面这样:
  • 又或者Blender导入半透明模型且用上面的CATS点击Fix Model后,默认的透明也会有这种虚化效果:
  • 2024-02-16-tadvahdz.png
  • 在UE里模仿可以使用 DitherTemporalAA节点(设置遮罩模式):
  • 2024-02-16-spyvhxiq.png
  • 效果如下:
  • 2024-02-16-andeasot.png
  • 但无论是哪个方法其实都没有还原导入MMD中的效果,既有半透明,也有影子(游戏中也一致):
  • 2024-02-18-qfivvcyy.png
  • 想必在UE中是要拉一堆shader才能实现,但目前CG水平有限,以后有发现了再补补吧= =

后续发现是CATS导入模型的方式有问题


其它补充

导入变形目标的作用

  • 还记得上面说过的 如果需要保留表情/变形,则需要把导入变形目标也勾上吗:
  • 2024-02-17-rdwcfvwq.png
  • 这里勾上的作用就是可以像下面这样:
  • 镜师傅的萌嘤身也是这么来的:
  • 2024-02-18-ydcnghld.png

导入模型物理结构问题

  • 通过这篇文章的方式导入的模型,物理结构会变得非常大(碰撞盒子会很大),如下图所示:
  • 2024-02-17-bjaojtwc.png
  • 正常的模型物理结构应该是下面这样的:
  • 2024-02-17-lgpvgvpb.png

半透明模式的问题

  • 一个是上面提到过的没有影子:
  • 2024-02-17-vqioggwh.png
  • 另一个是半透明模式的性能也会更差:
  • 2024-02-17-aeouxizq.png