让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,然后在这个副本上进行操作!

这里写图片描述

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海Enoch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值