当前位置:   article > 正文

让UE4中的TextRender永远面向摄像机,就像Billboard那样!

让UE4中的TextRender永远面向摄像机,就像Billboard那样!

让UE4中的TextRender永远面向摄像机,就像Billboard那样!

前言

最近找了个兼职,一家初创公司,做VR游戏的,用的UE4引擎,于是,从10月11日起,一直在学习UE4及其蓝图编程。
由于游戏是空战类,于是需要一个瞄准框,无论是《皇牌空战》还是《鹰击长空》,相信玩过的朋友大概理解是什么意思。
游戏界面

就像图中框住了敌军和友军的那五个框,以及任务点。于是就遇到一个问题,让其中的文字永远面向屏幕,或者说,在玩家从头戴式眼镜中看到的,能像图中这样的效果。

Find Look At 函数

最开始我们设想的是使用UE4蓝图中自带的FindLookAt 函数,这个函数只要给出一个Start,一个End,两个Vector3D 变量,然后给TextRender 或者任何Actor 即可使得文字永远面向屏幕。
BUT,然而,天不遂人愿,这种效果在陆地游戏中或许足够理想。但是空战不行啊!
玩家飞机会在空中有任何姿态,其中就包括一种让机身侧向平行于水平面(类似于睡姿中的侧躺,机翼垂直于水平面),在这种姿态下,文字并没有随着飞机的滚转而做出相应的、在面向屏幕的平行面中的旋转。或者,在另一种姿态,飞机如果倒着飞,肚子朝上头朝下平行于水平面的时候,文字虽然面向摄像机面向屏幕,但是并没有做一个180°的旋转。也就是说,文字是倒着的。
所以,我们必须找到一种更好的方法来代替。

BillBoard

在第三人称框架的新建项目里就有个蓝色的问号,在UE4官方示例中这样的问号也很多,我试着从任何角度看它,它总是面向我的,无论是多么奇葩的方向。
所以我们想把文字做成材质或者paper2D 或者Sprite,放在BillBoard上面。或者以其他方式,比如把textrender attach to the BillBoard。然而都失败了。因为BillBoard 的“永远面向相机”功能是从渲染层面写的。我们也没法找到BillBoard 的任何Set Rotation 之类的功能。

材质编程

直到后来,在UE4 的 AnswerHub 中的某个网友的回答中找到了答案。
这里写图片描述

如图所示, 给TextureRender的字体材质添加 World Position Offset 这样的一坨编程即可。 其中左侧是三个三维向量,左下角那个 -1, 需要先点选中那个节点,然后在 Detail 面板中修改它的值,否则,你是修改不到-1 的。
图中关于Base ColorEmissive ColorOpacityOpacity Mask 等节点的设置与面向相机这件事无关,这个不需要修改。按原来的就好。

应用并保存时,可能是因为我们修改了UE4默认的字体材质,所以报出了一个我暂时还没弄懂的错误。所以,建议先把字体材质复制一个副本为 MyFontMaterial,然后在这个副本上进行操作!

这里写图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号