我现在正在为我正在制作的游戏的一部分而奋斗数周。作为Unity和编程的初学者,我需要您的经验和建议,以了解如何在这样的蒙皮网格上绘画(从1:10开始):
https://www.youtube.com/watch?v=grVEK1Bb6ZM
我花了很多时间找到没有结果的解决方案。 (贴图着色器用于分隔纹理,在网格上绘制alpha,项目纹理,合并纹理......)。但是这些解决方案对于移动设备而言看起
因此,如果有人知道这样做的方法,即使是一些信息或任何东西,这将推动我的研究,这是非常受欢迎的。
谢谢 !
您提供的示例使用位图蒙版(即在眉毛上或在嘴唇上)限制绘画的范围,因此绘画仅用于更愉快的用户体验。如果这是你需要的,你应该做这样的事情:
您需要知道鼠标与模型的交互位置。光线投射是昂贵的,并且需要每帧更新碰撞器,因为角色是剥皮的。如果你使用你的例子的掩蔽技巧,这会大大减少计算量,因为你可以传递只包含那个特定区域的网格子集(可能只是ex的面)
看看https://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer.BakeMesh.html和https://answers.unity.com/questions/39490/collider-on-skinned-mesh.html
(如果不能,可能还有其他技巧,比如将角色的UV渲染到单独的浮动缓冲区/纹理中,并使用鼠标位置对缓冲区进行采样)
一旦你可以光线投射网格,你可以获取命中https://docs.unity3d.com/ScriptReference/RaycastHit-textureCoord.html的紫外线位置
使用这些UV可以写入纹理,或渲染目标上的实例粒子/对象等(这里有很多选项)。
然后,您需要将该纹理与角色着色器中的位图蒙版组合。