【前言】
【思路一】获得模型顶点以对应Spline上面的各个点
之前文字自动化附着Spline各点想着是Get模型上面的Verts顶点来产生,这就是思路一
思路一:如何获取到模型表面的所有顶点在世界场景当中的位置。
https://forums.unrealengine.com/development-discussion/c-gameplay-programming/7509-accessing-vertex-positions-of-static-meshforums.unrealengine.com但是这个好多还要写C++代码啥的,就没怎么看了。
【思路二】获取模型骨骼以对应Spline上面的各个点
印度小伙的Spline是需要手动挪动的,但是我感觉如果每次导入新文字都这样手动操作简直是太麻烦了,于是结合Blender的文字转Mesh,想着导入到UE4当中直接根据这些Mesh的骨骼来生成Spline各个点该多好啊。后来结合Skeletal Mesh的骨骼测试成功了。
【导图】
一、在Blender当中创建文字
【1.1】创建Text Tab键入
- Shift+A Text
- R X 90
- Tab 编辑
- 键入UE4 Interesting 520(或者是UE4有意思吧)
【1.2】如何键入中文字体
【1.2.1】显示中文路径
- Edit Preferences
- Interface->Translation勾选可显示中文路径(否则是乱码,之前一直都是,没留意过)
【1.2.2】选择ttf格式中文字体
这个跟Curve一样还可以挤出等效果。
Regular选择Font
字体路径:C:WindowsFonts
在以上路径中打开ttf格式的字体文件
【注意事项】
我们不可以直接在Blender当中使用输入法打字。
所以需要在外面打好字之后,Ctrl C/V粘贴即可。
二、将文字转化为Mesh
Curve的话不能使用Skin Modifier创建骨骼
1.Object->Convert To
2.或者在模型上直接右键也是可以的Convert To Mesh(还有设置枢轴点的,比较方便。)
三、使用Decimate Modifier给文字进行减面(将文字拆开)
注意啊,上面没有选中文字体格式的话出不来啊。
我这里呢,减到了0.3。之后Apply应用。(之后创建骨骼的时候更省力一点)
四、添加Skin Modifier将Vertex顶点变成骨骼Bones
直接点击创建。(其他不要管)
不知道这里有一点小Bug,就是直接对所有文字都进行转化的话,如下,只有单个的文字(或最后一个文字)才能转化成骨骼。
所以需要P 分离,再进行创建骨骼。(UE4 三个单独分开),如果是中文文字的话,骨骼可能只创建了一半,那么你就需要将它们分开。
P Seperate Selection
另外还有Origin的问题,如果你旋转你的文字模型的话,发现枢轴点离本体太远了,你需要Set Origin To Geometry。之后再用Skin Modifier创建骨骼呢。
五、精简骨骼
【5.1】删除文字内部骨骼和Skin Modifier
骨骼创建好之后,删掉SkinModifier或者是那个小屏幕的UI,不显示当前Modifier的应用效果。
骨骼创建之初跟模型是一样的,内部还有很多折线,我们需要将它们一一删除。
由于我们不能对模型进行处理(三角面四角面好多都在“U”上),只能对转化后的骨骼进行一些处理。
精简后的效果:
选中新创建的骨骼Armature,进入Edit Mode,对多余的骨骼进行删除。
注意不要选中点删除,要选中线才能删除掉骨骼。可以先Dissolve Bones,如果有些骨骼不能够Dissolve的话,那么再删除(要不然有好多的牵连的黑线)
【5.2】骨骼相关操作
【5.2.1】显示骨骼名字和UI
在Armature骨骼的Object Data Properties下我们可以更改骨骼的显示形状以及开启名字显示等等。
【5.2.2】展开骨骼列表
- Shift+左键点击主层,全部展开。
- 键盘+/- 逐个地展开下属层(长按跟Shift一样是全部展开的)
【5.2.3】骨骼操作快捷键
它的操作其实跟编辑模型的顶点是一样的。
【常用的】
1.我们用到的是Alt+F->Switch Direction
- 选中全部骨骼的话,它可以切换父子的顺序,正着来还是反着来
- 选中单个骨骼的话,它可以脱离父层,变为跟其他骨骼一样同级。
Y 可直接Split,将骨骼放在同级。
2.F可将两骨骼连在一起。
【5.2.4】骨骼名字
- Names->Flip Names(可以将当前所有骨骼名字按照从Bone.001进行排序,注意Strip Numbers需要打勾)
- 可通过 【 】快捷键检查文字环绕关系
【5.2.5】编辑骨骼父子关系(骨骼排序)
总共就两种方法,可以X删除添加,也可以Ctrl+P直接附着。
- 选儿子后选爹,然后Ctrl+P,Make Parent,Connected即可
- 或者是X删除两点之间的骨骼,然后F创建骨骼
【注意事项】
- 先Alt+F 将所有骨骼放在同级,然后X F即可。将当前骨骼删除,然后F 连接起来,这样的话就会自动绑定上了呢。简直不要太省力!太爽了~
尽量在世界大纲中用Ctrl加选父子,而不要在场景当中用Shift加选父子,前者能得到正常的父子关系结果。
鼠标单击选中线删除,然后框选两个点,F进行连接起来呢。就直接附着上去了呢。
我们需要对骨骼的顺序进行重新排序,在UE4蓝图当中写的就是按照从上到下的顺序进行生成Spline Point的呢。
原骨骼框架,当我们选中相应的骨骼时,发现它们并不是按照(“U”)这样连在一起排列,而是跳来跳去的。所以我们就需要调整一下骨骼的父子关系次序。(从一段环绕到另一端)
调整为如下规整骨骼框架即可。
六、导出模型并在UE4当中进行检验
不必设置Origin啥的,我们会通过蓝图设置Spline初生点位置。
框选文字和骨骼导出(注意是单个,U一个、E一个、4一个)
导入的时候勾选骨骼
这里要你非常注意一下:
骨骼一定要像顶点连起来的线一样(否则等会儿写蓝图的Spline很难看,我测试了好长时间才发现)
也就是不要出现这个黑线。(我们可以通过Alt+F取消黑线,黑线代表的是骨骼父子关系,也就是当全部骨骼同级的时候这个黑线就会消失掉了呢)
所有的骨骼都需要Connected。(Ctrl+P的时候选择Connected)
七、填写蓝图
我们先创建一个Actor,添加Skeletal Mesh和Spline。(并选中Mesh相对应的文字模型)
【原版——没有中空的文字】
这里的蓝图跟这里程序化生成的类似。
X Tesla:【UE4】Spline BP 程序化模型/动画轨迹(爆肝般的详细)zhuanlan.zhihu.com注意这个Point Index 和 Index的区别。
如这个Spline BP当中,我们的一个Index有两条线。对于我们这里的蓝图的话,是原先本身它就有2个Spline点,
- For Loop First Index=Last Index=0 ,那么又生成了一个Index,共三个点
- For Loop First Index=0,Last Index=1,那么生成两个Index,共四个点
注意一下。
骨骼索引为2~12的话,那么总共有12-2+1=11个骨骼。(last-first+1)
然后封装成一个函数即可。
当然还要注意这个索引,坑死我了。(UE4这样两级的骨骼竟然不是按照顺序来的)
自己可以使用GetBoneName进行检验
我们在Spline Details下打勾Closed Loop,这样的话,首尾骨骼就会连接起来了。
上图红色框选的部分勾选之后呢,我们就可以直接进行编辑了(但是不要挪动,我们只是点击选择看生成点的索引罢了,不要挪动点的位置,否则Spline不会更新了)
- 不能编辑——大紫红色
- 可编辑——红色和白色
【改良版】【有中空的文字】
- 设置First Index为第一个骨骼
- First Bone Order Offset 为骨骼偏移值(对于有中空的文字)
- Bone Length为骨骼的总长度(有多少数量的骨骼)
八、最终SplineBP点+文字骨骼 程序化对应关系大检查
(视频为旧版,但大概就是这么个意思,可以通过程序化来控制我们的Spline线条)