V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
mikaotaku
V2EX  ›  游戏开发

在 Unity 中能做到通过程序修改模型的纹理吗

  •  
  •   mikaotaku · 116 天前 · 1802 次点击
    这是一个创建于 116 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是一个业余的游戏程序,现在有一个需求是这样的:在一个场景里同时有非常多的船,都使用同一个模型,除了船身上的舷号不一样,其余部分完全一样。如果仅仅是因为舷号不同就给每艘船一个单独的纹理感觉很没必要,所以在考虑能不能实现用程序在运行时去修改模型的纹理。 我考虑的方案大概是这样:有一个从 0~9 数字的纹理图片,在程序里按照舷号数字计算出要显示哪一部分,然后拼起来。但具体怎么实现,我感觉还有不少要解决的问题,希望大佬们能给我提些建议和方向。 本人对游戏开发比较小白,上面问题描述不专业还请海涵 qwq 。

    7 条回复    2024-08-29 16:17:43 +08:00
    shuiqingshabai
        1
    shuiqingshabai  
       116 天前   ❤️ 1
    把不一样的那部分贴图分出来一个单独的材质球不行吗
    metalvest
        3
    metalvest  
       116 天前 via Android   ❤️ 1
    用贴花或者用 shader
    metalvest
        4
    metalvest  
       116 天前 via Android
    glcolof
        5
    glcolof  
       116 天前   ❤️ 1
    以前游戏里面的做法是,在建模工具里面,增加专门显示弦号的子模型,程序运行中,只要在模型加载时,修改弦号子模型就可以了。修改的方法主要有 2 种:一种是修改顶点 UV 坐标,让子模型的各个四边形映射到数字纹理的相应数字的区域,这个操作也可以在 shader 里面实现;一种是修改子模型的材质球,即分别从 0~9 这 10 种数字对应的材质里面选择一个赋给相应的子模型。
    直接生成包含弦号的纹理也是一个可行的方案,Unity 没有提供现成的图像绘制库,楼主可以在网上找找有没有现成方案,或者使用 RenderTarget 和 Graphics 类自己实现一套。
    129ykx733D016U2n
        6
    129ykx733D016U2n  
       115 天前   ❤️ 1
    这个问题本身,就没有必要这样,直接不同材质球就可以了,简单,快速地实现了需求,在没有出现性能问题之前,怎么简单怎么做,产品做出来上线是最重要的,技术是为产品服务的。
    SmiteChow
        7
    SmiteChow  
       115 天前
    专业的是复制修改,存储只存一份
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:10 · PVG 02:10 · LAX 10:10 · JFK 13:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.