第三方 csgo 的武器 3d 检视图是如何实现的?

2023-02-05 20:39:06 +08:00
 lmmir

在 steam 上点击 csgo 的检视链接会跳到游戏检视页面。。。 一些网站的 csgo web 3d 检视如何实现的?

3157 次点击
所在节点    程序员
20 条回复
yulon
2023-02-05 20:57:42 +08:00
之前接触到一个外包,说是服务器跑游戏,然后从游戏抓的模型或截图,除非你能破解印花生成的算法
Sisyphe42
2023-02-05 23:33:49 +08:00
模型扔到前端渲染啊
MoRanjiang
2023-02-06 02:36:53 +08:00
我猜这种贴图没必要加密,游戏里可能有
lmmir
2023-02-06 07:02:27 +08:00
@Sisyphe42 模型有,包含磨损的贴图哪里来
kokutou
2023-02-06 08:26:48 +08:00
@lmmir #4 游戏里都有...
cs go 随便解包..
ragnaroks
2023-02-06 08:35:35 +08:00
做过的来说下,磨损本身是固定的,你可以理解为相同皮肤相同磨损那么外观一致。唯一的不同点就是图案模板,这个需要做解析渲染的供应商本身穷举,早期甚至有 buff 是 p1 ,igxe 是 p2 的 BUG 。不过大多数皮肤图案模板不会发生变化。
ragnaroks
2023-02-06 08:36:34 +08:00
如果你只是想知道 mdl 怎么在网页上查看,那就搜 threejs inspect
lmmir
2023-02-06 09:05:48 +08:00
@ragnaroks 0.9333 0.8333 的磨损的 贴图纹理应该不一样,这贴图纹理怎么获取
karatsuba
2023-02-06 10:04:25 +08:00
冷知识,同磨损的贴纸刮出来的效果可能不一样
ragnaroks
2023-02-06 10:19:18 +08:00
@lmmir 贴图是一样的,或者说是同一个,磨损的效果不一样而已,我猜你想知道的是怎么获得这个磨损渲染细节,谷歌搜 source 2007 leak
ragnaroks
2023-02-06 10:21:26 +08:00
source 2017 leak ,起源引擎 2017 版本的几乎是完整的源码,磨损效果是通用模块,L4D2 也有人做 CSGO 皮肤搬运,就是参考这些玩意做的插件
lmmir
2023-02-06 10:39:02 +08:00
@ragnaroks 磨损渲染效果是用实时用算法算的 而不是生成带有磨损的贴图在贴上去的?
UIXX
2023-02-06 12:46:28 +08:00
...

我来说吧,常规皮肤就是三板斧:模型+皮肤贴图(这部分可能会有多种贴图,包括材料贴图、法线贴图等)+着色器。
模型文件跟皮肤贴图可以解包出来,你说的磨损效果( Exterior )是着色器部分的工作,跟那个小数磨损值( Float value )有关。

你看到的市场( market )一般会有好几个着色器,如同游戏内置的高低着色器那样,在不同的环境条件下用不同着色器可以提高性能,但也会有不同的视觉效果。
lmmir
2023-02-06 20:18:04 +08:00
@UIXX 所以要用网页实现 没法去用现成的图,必须自己写算法?
UIXX
2023-02-07 10:12:58 +08:00
@lmmir

你想做模型预览?

事实上你没法 100%还原它在游戏游玩过程中的样子,理由如下:
1. 你可能会经常看到老生常谈的帖子说 CSGO 的皮肤呈现问题(比如高细节着色影响性能,低细节着色模糊区分不大,不同磨损之间几乎无差异等),为此官方打过非常多针对性的 patch 。
2. 官方禁止了某些特殊材质、颜色的纹理(土豪专供)。
3. 官方会根据玩家的 3D 配置动态(强行)修改着色器参数。

所以大部分民间的物品浏览在着色器上的处理主要还是调整光照模型的亮度。你会发现调整 float value 的时候会有比较明显的明暗转换。
lmmir
2023-02-07 14:19:40 +08:00
@UIXX 对,做模型预览。
lmmir
2023-02-07 14:20:59 +08:00
@UIXX 只要能和游戏中的检视饰品的画面效果一样就行。
UIXX
2023-02-07 15:47:53 +08:00
@lmmir

那你不是从零做普通的模型预览,而是做跟官方 market 一样的效果。直接用控制台里面的工作台你就能明白很多东西是怎么实现的了。
UIXX
2023-02-07 16:02:17 +08:00
@lmmir

总结一下:

如果需要自行实现一套跟 CSGO 类似的物品预览程序,就是模型+贴图+着色器,磨损的效果由贴图跟着色器共同决定。磨损的数值会影响明暗,这个可由着色器实现,也可由贴图+某些磨损生成器生成(不过到了前端,这部分已经固定)。 [这里不讨论特殊皮肤,特殊皮肤的效果呈现受多种因素影响]

如果想要做一个跟 CSGO 内置一模一样的预览,建议使用 CSGO 的 workshop workbench 。
lmmir
2023-02-07 17:30:09 +08:00
@UIXX 有 qq 或者 vx 么,我想再咨询一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/913412

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX