如何在 Unity3d 中的运行时更改剪切着色器的 Alpha 遮罩

问题描述 投票:0回答:0

我正在使用代码在运行时交换蒙皮网格。我有一个问题,就是皮肤会透过几层衣服流血。

根据我的研究,有一些解决方案:

  1. 将身体网格变成几个对象:胸部、腰部、臀部和大腿,以及肩部(例如)。附加衣服时隐藏这些身体对象。 (这不是一个糟糕的解决方案,但我认为它会使基础网格的权重绘制变得乏味。我也不喜欢它如何在场景中创建更多游戏对象,因为这似乎不是最佳选择)。

  2. 应用一件衣服时,使用形状键使顶点变形。这是一个很有前途的解决方案,可能会运作良好。特别是因为您可以使用滑块编辑 shapekeys,这将提供很大的灵活性。

  3. 制作 alpha 贴图,隐藏穿过不同衣服的身体纹理区域。在 Unity 中使用默认的剪切着色器,在运行时换掉漫反射 alpha 以隐藏身体的渗出部分。 Ootii 在这个资产中使用了这种方法:https://assetstore.unity.com/packages/tools/animation/mount-points-16318

我了解如何实施前两个选项,但我对第三个选项感到困惑。我已经购买了Ootii的资产,但代码对我来说是个谜。

我想知道是否有人可以告诉我如何在运行时更改剪切着色器中漫反射纹理的 alpha?

unity3d shader alpha masking
© www.soinside.com 2019 - 2024. All rights reserved.