V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lmmir
V2EX  ›  程序员

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

  •  1
     
  •   lmmir · 2023-02-05 20:39:06 +08:00 · 3419 次点击
    这是一个创建于 680 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    你想做模型预览?

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

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

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

    总结一下:

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

    如果想要做一个跟 CSGO 内置一模一样的预览,建议使用 CSGO 的 workshop workbench 。
    lmmir
        20
    lmmir  
    OP
       2023-02-07 17:30:09 +08:00
    @UIXX 有 qq 或者 vx 么,我想再咨询一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:43 · PVG 10:43 · LAX 18:43 · JFK 21:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.