在网格上绘画以进行改造

时间:2017-12-10 17:18:49

标签: unity3d textures shader paint projection

我现在正在为我正在制作的游戏的一部分而奋斗数周。 作为Unity和编程的初学者,我需要您的经验和建议,以了解如何在这样的皮肤网格上绘画(从1:10开始):

https://www.youtube.com/watch?v=grVEK1Bb6ZM

我花了很多时间找到没有结果的解决方案。 (贴图着色器用于分隔纹理,在网格上绘制alpha,项目纹理,合并纹理......)。但是这些解决方案对于移动设备来说看起来很糟糕,或者不是我所需要的。

所以,如果有人知道这样做的方法,即使是一些信息或任何内容,这将推动我的研究,这是非常受欢迎的。

谢谢!

1 个答案:

答案 0 :(得分:0)

您提供的示例使用位图蒙版(即眉毛或嘴唇)限制绘画的范围,因此绘画仅用于更有趣的用户体验。如果这是你需要的,你应该做这样的事情:

您需要知道鼠标与模型的交互位置。光线投射是昂贵的,并且需要每帧更新碰撞器,因为角色是剥皮的。如果你使用你的例子的掩蔽技巧,这会大大减少计算量,因为你可以传递只包含那个特定区域的网格子集(可能只是前面的面)

https://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer.BakeMesh.htmlhttps://answers.unity.com/questions/39490/collider-on-skinned-mesh.html

(如果你不能,可能会有其他技巧,比如将角色的UV渲染成单独的浮动缓冲区/纹理,并使用鼠标位置对缓冲区进行采样)

一旦你可以对网格进行光线投射,你就可以获取命中的UV位置 https://docs.unity3d.com/ScriptReference/RaycastHit-textureCoord.html

使用这些UV可以写入纹理,或渲染目标上的实例粒子/对象等(这里有很多选项)。

然后,您需要将该纹理与角色着色器中的位图蒙版组合。