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

2023-10-27

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

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • DNF搭建服务器服务端搭建教程

    DNF搭建服务器服务端搭建教程 我是艾西 今天给大家分享下怎么样自己搭建一个DNF 前阵子体验了下其他GM搭建的服 那么对于自己搭建的好处在于出道即巅峰 想要什么武器就是一串代码命令的事情 下面我跟大家说一下需要准备那些东西 DNF服务端
  • 月薪1000到游戏创业赚百万,程序员到自媒体达人,他是怎么做到的?

    深圳雷哥 一位8年游戏开发经验的程序员游戏创业赚了百万从程序员转战自媒体写作与职场教练目前副业每月收入高达4K全网粉丝2 万 预计年底破5万下面来听听雷哥的传奇故事 希望对大家有所启发和帮助 01 我的学生时代 我叫雷巍 今年32岁 来自湖
  • UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 遇到的问题 二 操作步骤 前言 UE4 Unreal Engine4 在蒙太奇动画中添加音频轨道通知 我们想在某一帧动画中添加声音 比如我们想在动画的第13帧这里添加音效 一 遇到
  • Pygame 教程(4)拓展:使用 subsurface 方法

    原文 图像传输和绘制文本 在本拓展文章 将展示如何使用pygame Surface subsurface方法实现原文中的更改线条粗细步骤 pygame Surface subsurface将获取原Surface对象的子Surface它与原S
  • 【Unity Shader】屏幕后处理1.0:调整亮度/饱和度/对比度

    1 Unity中实现屏幕特效的基本步骤 什么叫屏幕后处理 Screen post processing effects 渲染完整个场景得到屏幕图像后对图像进行一系列操作 实现各种屏幕特效 这一步我们可以添加很多例如景深 Depth of F
  • leetcode-跳跃游戏系列

    1 跳跃游戏 leetcode 55 跳跃游戏 1 问题描述 给定一个非负整数数组 n u m s nums nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1
  • UE4文字显示乱码“字字字字字字字字”的解决办法

    键盘win R 搜索fonts 2 滑到最底下右键复制 宋体常规简体字 3 复制到ue4项目的字体文件夹中 如下 注意在外部文件处复制 4 回到项目界面 此时右下角会有个弹窗提示是否确认导入 点击导入 然后会弹一个 字体样式导入选项 弹框
  • 投资捕鱼游戏市场的如何避雷?以及研发技术问题。

    随着国内捕鱼市场在姚记科技 波克城市 途游等捕鱼龙头的深耕下 整个产品的研发 运营门槛都了非常大的提高 对于目前想要研发出一款具有竞争力的产品和版本 投入低于500万的资金很难出有竞争力的产品 加上运营门槛的提高 运营成本至少需要准备500
  • 程序员升职记 全关卡攻略&通俗思路 Human Resource Machine

    程序员升职记 全过关方法 通俗思路 博主本着能过就过的思想 写出的解答必然不是最优解 但是可以给大家提供一点思路来参考 其中17和22的解答整理自网络 特别是17的解答 要比博主的原解答巧妙不少 1 收发室 模拟程序输入输出 HUMAN R
  • 什么是页面文件使用率

    你好 很高兴能看到你的问题 也很高兴我能够回答你的问题 你提问 什么是页面文件使用率 首先我们必须要了解什么叫 页面文件 页面文件是一个存放在硬盘上的文件 大多数情况下都放在系统磁盘 如C 盘 的根目录下 这个文件不允许用户访问 只能够被操
  • visual studio 一直显示正在准备解决方案

    首先重启电脑 无法解决的情况下执行以下步骤 Kill Visual Studio Open Visual Studio without loading a solution Disable AnkhSvn as Source Control
  • 基于java的飞机大战游戏系统设计与实现

    基于java的飞机大战游戏系统设计与实现 I 引言 A 研究背景和动机 背景 随着现代游戏产业的不断发展 传统的飞行射击游戏已经无法满足玩家对新颖 刺激的需求 因此 设计一个基于Java的飞机大战游戏系统成为了游戏开发人员们的共同目标 动机
  • 秋招内推码汇总:2024届 游戏公司

    给24届秋招的同学整理了一批秋招内推码 有需要的同学请自取 PS 内推码来自 内推鸭小程序 完美世界 内推码 NTAHVOH 巨人网络 内推码 NTAX3AU 诗悦网络 内推码 NTANdQx 网龙 内推码 EVBMJ3 西山居 内推码 N
  • 利用阿里云的尖端数据库解决方案增强游戏数据管理

    在快节奏和动态的游戏世界中 对于努力为玩家提供无缝体验的公司来说 管理大量数据是一项关键挑战 阿里云是亚太地区的主要参与者 也是全球公认的运营数据库管理系统领导者 提供量身定制的创新解决方案 以应对游戏公司面临的独特数据管理挑战 这篇博客探
  • 收单外包服务机构的评级工作已经开始了!

    评级收单外包服务机构的工作不仅是金融监管部门规范和引导收单外包服务市场的重要举措 也影响着外包机构的业务发展 并且是每年最重要的合规工作之一 中国支付清算协会于2023年12月18日发布了一份关于进行2023年度收单外包服务机构评级工作的通
  • 计算机提示vcruntime140.dll丢失的解决方法,多种修复教程分享

    vcruntime140 dll是一个非常重要的动态链接库文件 它包含了许多运行时的函数和类 然而 有时候我们可能会遇到vcruntime140 dll无法继续执行代码的问题 这会给我们带来很大的困扰 那么 这个问题是什么原因导致的呢 又应
  • 如何有效获取APP新增用户

    在提升APP用户获取效果方面 有几个关键策略可以考虑 市场定位与目标用户明确 在推广过程中 确保清晰地了解你的目标用户是谁 以便有针对性地开展推广活动 对用户的需求和偏好有深入了解 可以更好地制定吸引用户的策略 引人入胜的营销策略 设计有吸
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 游戏开发常见操作梳理之小地图的制作

    游戏中一般存在小地图系统 实际上就是设置一个新的摄像机放置在玩家的正上方 然后在小地图上显示新摄像机看见的东西就可以了 在小地图上一般存在放大地图和缩小地图的按钮可以方便放大和缩小地图 这些操作是如何实现的呢 接下来直接上核心代码 usin
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐

  • dataclass的作用

    dataclasss的作用 from dataclasses import dataclass dataclass class Person name str age int gender str unknown init 方法用于初始化对
  • HTML转义字符大全

    1 常用转义字符 转义字符串 Escape Sequence 也称字符实体 Character Entity 在HTML中 定义转义字符串的原因有两个 第一个原因是像 lt 和 gt 这类符号已经用来表示HTML标签 因此就不能直接当作文本
  • 学习 bison 原理(四)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 学习 bison 原理 四 第5步 转变第 4 步的状态机为确定的 LALR 状态机 在 三 中我们已经看到 LR0 状态机很可能有 r r 冲突 s r 冲突 那这关键的
  • QList与QVector

    看qt的文档 只要是不要求数据所存放的内存是连续的 都建议用QList 因为QList的查询速度跟QVecotr是差不多的 感觉有点奇怪 至少与我之前所认识的List的查询是一不样的 好吧 看看源码的 原来QList的元素的指针是通过数组来
  • 文本处理——基于 word2vec 和 CNN 的文本分类 :综述 & 实践(一)

    原文地址 https zhuanlan zhihu com p 29076736 导语 传统的向量空间模型 VSM 假设特征项之间相互独立 这与实际情况是不相符的 为了解决这个问题 可以采用文本的分布式表示方式 例如 word embedd
  • ohmyzsh主题修改

    1 选择主题 ohmyzsh Themes by Github 2 修改zsh配置 vim zshrc 3 使配置生效 source zshrc 效果如下
  • 二、初识arduino uno开发板

    开发板参数表 什么是arduino Arduino是一款便捷灵活 方便上手的开源电子原型平台 包含硬件 各种型号的Arduino板 和软件 ArduinoIDE 构建于开放原始码simple I O介面版 并且具有使用类似Java C语言的
  • Golang闭包陷阱

    golang闭包陷阱本质原理其实是range陷阱 Golang for range陷阱 ep 1 func main var values int 1 2 3 4 5 for value range values go func fmt P
  • 编译 OneFlow 模型

    本篇文章译自英文文档 Compile OneFlow Models tvm 0 14 dev0 documentation 作者是 BBuf Xiaoyu Zhang GitHub 更多 TVM 中文文档可访问 Apache TVM 是一个
  • 3月6日服务器例行维护公告,2014年3月6日停机维护公告

    亲爱的玩家 为了保证服务器的稳定和服务质量 新大话西游2 将于2014年3月6日早上8 00停机 进行每周例行的维护工作 维护时间为早上08 00至09 30 同时 本次停机还将发布最新的客户端补丁 patch2 0 476 如果在维护期间
  • Java高级编程——多线程(JDK5新增创建线程方式Callable,线程池)

    创建线程的第三 四种方式 一 实现Callable接口 1 1与Runnable相比 1 2实现步骤 创建Callable接口实现类 重写call方法 新建实现类对象 将实现类对象作为参数传递待FutureTask的构造器中 创建Futur
  • 使用redis进行用户接口访问时间次数限制

    使用redis进行用户接口访问时间次数限制 假设一个用户 用IP判断 每分钟访问某一个服务接口的次数不能超过10次 import org apache commons lang3 StringUtils import org slf4j L
  • Android Studio一直Waiting for build to finish

    今天安卓的gradle文件出现问题 所以将C Users Administrator gradle删除 接下来出现下图的问题 这是由于安卓缺少gradle文件 图片来自https blog csdn net Hanghang article
  • 手撕yolo3系列——详解主干网络darknet53代码(详细注释)

    完整代码百度云直达链接 包含预训练权重 小白注释 https pan baidu com s 1US6e93OaCYOghmF21v0UIA 提取码 z8at 参考链接 注 代码是大神的代码 在此基础上添加了详细的小白注释 方便我以后阅读
  • Keil调试即全速运行/断点不停的其中一个原因

    平台 芯片 STM32F767IGT6 环境 Keil 5 14 00 问题 keil 下载程序可以执行 调试时刚进调试就上电运行 打断点不停 但是程序正常在跑 可以单步调试 原因 Jlink硬件版本和驱动的问题 解决 之前电脑使用stm3
  • image.shape[0],image.shape[1],image.shape[2]

    import cv2 image cv2 imread D shape bmp print image shape 0 print image shape 1 print image shape 2 结果 300 200 3 其中shape
  • mysql8.0安装之后,无法使用密码正常登陆

    修改方法 重置密码 以下为步骤 1 以管理员身份先关闭mysql服务器 net stop mysql 删除mysql目录下data文件夹 如果有就删除 2 在mysql目录下输入 mysqld initialize user mysql c
  • python如何判断是否为整数

    python 判断是否为整数的方法 1 使用 type 函数判断 代码为 type name bases dict 2 使用 isinstance 函数判断 代码为 isinstance object classinfo 本教程操作环境 w
  • java 生成随机字母数字组合

    import java util Random public class RandomTest 方法1 生成随机数字和字母组合 param length return public static String getCharAndNumr
  • 让UE4中的TextRender永远面向摄像机,就像Billboard那样!

    让UE4中的TextRender永远面向摄像机 就像Billboard那样 让UE4中的TextRender永远面向摄像机就像Billboard那样 前言 Find Look At 函数 BillBoard 材质编程 前言 最近找了个兼职