UE4贴图自适应屏幕大小

这篇具有很好参考价值的文章主要介绍了UE4贴图自适应屏幕大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

游戏开发中,不同屏幕下的分辨率不同,模型/物品被拉伸之后贴图也会随之拉伸。
如果需要在不同比例下实现贴图真实大小不变(以下简称为自适应),需要对UV进行缩放处理之后再取得对应贴图的颜色。
本文提供一种能够实现不同设备下面贴图的大小不变的方法,主要是借助于DDX/DDY接口实现。
具体效果如下:

效果

材质预览放大
UE4贴图自适应屏幕大小

材质预览缩小
UE4贴图自适应屏幕大小
可以发现枪的显示变小了,但是里面的感叹号图片标志大小没变

前置知识

DDX()和DDY()

对于指定的寄存器,求其值在临近像素上的变化率,可以传入不同类型的数据, 就可以得到对应的数据在指定的屏幕坐标下的变化率。
UE4贴图自适应屏幕大小

讲更简单一点
比如ddx(uv)就是屏幕x方向上,一像素跨度内uv变化了多少
ddx(rgb)就是屏幕x方向上,一像素跨度内rgb变化了多少(无需指定xy,类似这样)
UE4贴图自适应屏幕大小

如何自适应

那么根据ddx和ddy的含义。我们可以传入uv坐标,取得在不同设备下面两个像素之间具体uv是多少(称之为ddx(u)和ddy(v)),然后让uv去除以这个deltUV之后乘某个系数再取颜色即可。
同一个设备里面像素大小的是不变的。
假设某个图形附上了这个材质,长包含n个像素宽包含m个像素,而像素大小是相同的,那么1/ddx(u)就是n,1/ddy(v)就是m。
我们传入 n * u,m * v,然后再从对应的材质里面取值

  • u为1的时候取到 n,也就是贴图对应 U为n的位置;
  • v为1的时候取到 n,也就是贴图对应 v为m的位置。

由于像素大小相同,所以n/m是几,取到的贴图就在几倍的位置,
可以尝试这样去理解:uv / ddxy相当于获得了uv对应的是第几个像素,而贴图总像素长度不变,所以传入的像素个数一定和贴图长度成比例关系。
当然像素很多,所以我们需要传个系数去乘(下图Param),防止取到过大的uv。

蓝图实现

如果使用的贴图是正方形,如下(这里Param1传贴图的长对应的总像素个数,Param2传贴图的宽对应的总像素个数就是1:1大小的关系)
UE4贴图自适应屏幕大小

这里有个很坑的地方哈,Divide结点是支持向量相除的,具体就是一维除一维,所以要保证维数相同。

如图,Divide结点连到贴图uvs结点即可实现贴图自适应大小。文章来源地址https://www.toymoban.com/news/detail-485732.html

到了这里,关于UE4贴图自适应屏幕大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4 UE5 一直面向屏幕

                        一直面相屏幕,方法很简单 新建一个蓝图,如下添加组件: 蓝图如下: Rotation Actor :需要跟随镜头旋转的物体 Update:一个timeline(替代event tick 只是为了循环) Timeline: 蓝图直接可以复制:网址

    2024年02月04日
    浏览(61)
  • 游戏开发常用引擎工具介绍对比区别(UE4,Unity,Cocos,LayaAir,[egret-白鹭])

    是一套为开发实时技术而存在的引擎工具。目前广泛应用于3D建模渲染、游戏开发中。它完善的工具套件以及简易的工作流程能够使开发者快速修改或查看成果,对于代码的依赖性很低。而完整公开的源代码则能让使用者自由修改和扩展引擎功能。 是面向开发人员的 3D/2D 游戏

    2024年02月13日
    浏览(68)
  • PyQt5实现UI自适应屏幕大小且可缩放

    PyQt5实现UI自适应屏幕大小且可缩放 在开发GUI界面的过程中,为了让用户能够在不同尺寸屏幕下都有好的体验,我们需要实现UI自适应屏幕大小的功能。而PyQt5提供了很多方法和工具来达到这个目的。 下面是一个简单的例子,展示如何使用PyQt5来实现UI自适应屏幕大小的功能:

    2024年01月16日
    浏览(37)
  • [UE4]判断一个点或物体是否在屏幕内

    废话不多说(屏幕内,不是视野!) ---*--- 材质解决类:这是我在网上找到的,但是我的问题无关材质,做记录而已 材质中判断 ---*--- Actor: 1.判断这个物体有没有被渲染 EPIC已经给我们整了两个:  一个组件判断和一个Actor判断,Tolerance是值多少秒前,0.2就是0.2秒前(实际上

    2024年02月03日
    浏览(34)
  • UE4蓝图节点不同颜色代表

    UE4蓝图节点不同颜色代表 参考文章介绍:https://michaeljcole.github.io/wiki.unrealengine.com/Blueprint_Fundamentals/ A green node is usually associated with Get[Something]. 绿色节点通常与Get【something】相关联 。有时候也与construct相关联。 A blue node is usually a function/event (see different icon used) node where you do

    2024年02月06日
    浏览(70)
  • 【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)

    射线检测(Ray Casting) 是一种计算机图形和计算机图形学中的基本技术,用于检测光线或射线是否与三维场景中的物体相交,以确定相交点的位置和其他相关信息。射线检测通常用于实现各种交互功能、渲染效果和物理模拟,包括但不限于鼠标拾取、光线追踪、碰撞检测和物

    2024年02月07日
    浏览(121)
  • vue基础-vue监听当前屏幕大小做不同的操作

    在vue项目开发过程中,有个需求,就是当屏幕大于1024时,我们默认为PC模式。小于1024时,我们默认为H5模式。但是有的界面我们想在PC和H5上面展示不同的数据,请求不同的接口,而且要动态改变,就是屏幕缩小的时候做出改变。 下面介绍监听当前屏幕的宽度,动态请求数据

    2024年02月12日
    浏览(30)
  • UE4游戏保存

    在游戏运行过程中由于某些事情需要暂停一下游戏,那就需要把游戏当前的进度保存起来,下次打开的时候还可以再次玩,我们这里主要保存的就是。所有需要有一个游戏保存的机制。UE4提供了这样的机制。 首先新建一个类继承在SaveGame,命名为FirstSaveGame 打开VS2019编辑代码

    2024年02月12日
    浏览(57)
  • ue4游戏dump

    链接 UE4Dumper:https://github.com/kp7742/UE4Dumper 游戏示例: https://www.bilibili.com/video/BV12v41167Gy 定义 GWorld 指向游戏世界对象 GNames 指向游戏字符串数组 GUObject 指向游戏对象数组 UE4版本 查看AndroidManifest.xml 游戏版本为 U E 4 + R e l e a s e - 4 . 2 5 指针怎么找 GWorld 切换到Exports 搜索【

    2024年02月04日
    浏览(51)
  • UE4使用GameInstance设置全局变量(不同关卡、类之间数据传递)

    一、GameInstance是什么? (UE4官方)是一个正在运行的游戏的 高级别的管理对象 ,在游戏创建时生成,游戏实例关闭时销毁,一个游戏中可以有多个GameInstance; 在游戏中切换关卡,GameInstance不会销毁(切换关卡时可用GameInstance携带信息); 二、GameInstance有什么作用? 在多关

    2024年02月02日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包