骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 1232|回复: 0

[经验与教程] 多角度解决问题--如何调整有重叠区域的多个界面图标的显示优先级

[复制链接]

212

主题

1032

回帖

1048

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
2893127
第纳尔
14847
精华
0
互助
93
荣誉
21
贡献
325
魅力
1382
注册时间
2017-11-5
鲜花(431) 鸡蛋(0)
发表于 2022-10-18 15:21:47 | 显示全部楼层 |阅读模式
本帖最后由 vegetto 于 2022-10-27 07:54 编辑

前言:我的全体mod都是以txt为基础,所以局部变量都是采用var的写法pos什么不考虑复用slot都是数字序号,你们重在理解即可。且我只讲自己研究的部分,涉及前人的成果的其他办法请自行搜索查找,莫一代代陷入重复劳动和仿写的循环中。https://bbs.mountblade.com.cn/thread-2094114-1-1.html这个是我一系列骑砍战团模型程序研究成果的目录篇,用来汇集一些分散的我的技术贴,还没更新多少,将会持续更新一些你们不常见的冷门技术。(759523711我的魔兽争霸mod开发群可以加群学习,定时分享一些其他技术成果,来自我的一系列自制mod https://bbs.mountblade.com.cn/thread-2093251-1-1.html的研究)

程序部分内容只允许在2021年以后(含2021)发布的非子mod非使用20个以上他人osp的mod使用。
也就是你是2021年以前发布的mod,或者是人家成熟mod的子mod,或使用了其他人20个以上osp功能的非原创杂交mod,这3类mod不可以使用我的相关成果,包括后面其他成果分享也是这个要求。并且不可以通过改写优化的方式进行加工重新发布新贴osp以及改版后传播他人,目的就是希望你们原创并且有独立思考,避免所有人都学一套模板一家之言,mod内容越做越像越来越杂交。


以下正文:

多种角度看待同一个功能问题--如何调整位置重叠半重叠界面图标的显示优先级


这个呢有一个代码原理和两个模型原理


1.代码原理


(overlay_set_additional_render_height, <overlay_id>, <height_adder>),含义就是:(设置贴图显示的优先级, 界面图案的id, 优先级填数字), 也就是最后填的数字越大,显示越靠前。


2.模型原理:
打开openbrf的材质,看到面板让你填的参数没有,打个比方,4000101就比3000101显示优先级高,这个4和3就是根据右下角的render order参数选项决定的


3.模型原理:
在openbrf的z坐标值,比如你复制两个mesh模型准备当界面图标,比如叫他们a和b,如果你们导入界面mesh到brf操作正规的话,按理他们的Z坐标应该是0,这时候你把b的z坐标往上抬0.01,那么如果在游戏里面你打算把a和b部分重叠一起放在界面上,a和b重合屏幕位置的部分显示的就是b的那块图案。注意点:
所以这时候我就要纠正一些人的说法,什么界面是贴图,这个游戏只有是游戏里看到的有形的东西,都是模型,界面mesh是要靠一个方形的无背向面的一片模型来呈现贴图材质的,至于为什么presentation还有直接按材质生成的,你看后面注释都讲了,系统生成mesh把这个材质贴图装起来。也就是这个游戏贴图是不会单独调用的,贴图一定依附模型而存在。

特别的,界面mesh可以是复杂的三维模型,比如我七龙珠的动态头像hud就是一个三维的头。
所以,界面mesh模型在presentation你可以这么里面理解,你可以等效看成一个mesh片状的prop场景物将平行于oxy平面的面设置在距离屏幕一定距离且平行于屏幕的位置,并且贴图显示优先级高于场景系统的其他贴图。不要因为大部分图案你们采用的是一个片状模型就把它当贴图材质的性质看待它。然后为什么我要用prop来类比举例,因为可以实现用prop模拟presentation的图案及其点击等等功能,比如怎么让prop贴图显示优先级高,避免用prop做界面被其他场景物遮挡,你可以看上图Z-write这些贴图参数的勾选项,勾了后贴图可以无视障碍物显示到屏幕。
所以,你上微调Z坐标幅度不要大,大了,距离屏幕设置的位置就变了,那么你在屏幕看到的mesh标准大小就小了,如果涉及平移放缩界面图案的操作,就成非线性变化,无法自己估摸合适位置了。




引申应用:
1.从常规做法来看建议你们使用方法1的代码方法解决界面图案显示优先级的问题。
2.但是,有些情况用2,3两种模型方法更方便:
    比如你像我一样做一个dota的界面,首先有个大界面背景,然后有些方块的技能图标要镶嵌到背景界面里面各个技能槽,这时候,你就可以在openbrf把应该前置显示的mesh的z坐标往上微调一点,然后利用openbrf的一个平移模型的操作,把你的不同界面mesh在brf里提前拼好。这种只用于“你不需要在游戏中需要按条件多次调整位置大小的mesh图案,你只是想将多个图案拼成一个整体风格,但是局部的mesh需要进行渐影色变更换贴图的操作”的这种情形。




知道这个是在openbrf里调整模型位置旋转大小的设置吧,我感觉你们很多人都不会真正用这个,我给你们顺带讲讲操作要点:
1,首先前三排是调整位置,正常人都应该没问题,主要是后面9个方块一样的按钮,你们要灵活用,不是没用的操作,很有用,意思就是将你的模型的几何中心或几何边缘位置与软件里的OXY坐标系的O原点进行快速对齐,像比如你三排都按中间的,比如你是个人的模型,就会把你腰部的中心(即模型几何中心)放在坐标原点上,当然正常你应该把脚放在原点上,这时候你应该按第二排y的第一个方块按钮,也就是你的人体模型最下面的形体边缘对齐坐标原点。这种对于武器的调整位置,特别是界面模型尤其重要,界面模型一般是方形的比较多,你可以利用这九个按钮把方形的对角线中心或者某个顶点快速对齐坐标原点即表现为mesh几何外形平行于OXY平面且z=0的状态,如果你导入不注意这种,mesh可是三维的哟,你在presentation系统使用overlay set pos/size时就会因为模型几何外形距离坐标原点有间距,边放大边产生非线性的移动,那你还怎么一个界面mesh和另一个好好组合位置。
不过呢,如果你们不是自己瞎做或者只会复制现有的,用自带导入就没啥问题:



从浏览里面导入,然后导入后,中间的选项可以方便你调整大小,按平面的百分比调整或随意调整。
中间九个方块的按钮和模型调整一个道理,就是将模型的几何中心设置在游戏平面的相对位置(也就是模型几何外形距离坐标系原点有一定距离了,以屏幕范围为尺度),比如右上角就是界面如果在游戏里 set xyz(0,0,0)后overlay set pos的话,图案会紧贴屏幕右上角出现。



评分

参与人数 1第纳尔 +20 互助 +2 魅力 +20 收起 理由
Aomine Daiki + 20 + 2 + 20 文章不错,继续努力!

查看全部评分

您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-11-19 08:36 , Processed in 0.126019 second(s), 22 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表