前言
在unity里模拟毛笔字效果,在我看来这个应该和压力、面积、速度相关。但受限于硬件条件,故使用算法去实现。
一、之前效果展示
甲方表示不满意,没有笔锋效果,故需要完善修改,第一想到的是直接百度,居然还有相关的资料,这里附链接。
https://blog.csdn.net/May11st/article/details/80746092
二、完善修改
使用这个方法有个明显的问题,就是横向效果可以但竖直笔画字体的粗细明显不对,效果也不好。
所以就想到了在笔画不同走向使用不同的笔触来改善这个问题。
以下是四种走向改变笔触得到的效果。甚至还尝试过八种笔触,但变化太多反而效果更差。
乍一看这个单笔画的效果其实也还不错,但是!!!!
当写连笔时,走向变化时就会出现明显的不和谐连接点,甚至在停笔处可能会出现错误笔触!!!!
1.停笔出现其他笔触
2.笔触变更接点不平滑
看到这个两个问题,很快就蹦出了修改方案,使用单一笔触,让笔触随着走向做旋转。目前就到这种情况,还在修改中…
继续文章来源:https://www.toymoban.com/news/detail-414467.html
GL.TexCoord2(RotateRound(Vector3.zero).x, RotateRound(Vector3.zero).y);
GL.Vertex3(left / Screen.width, top / Screen.height, 0);
GL.TexCoord2(RotateRound(new Vector3(1,0,0)).x, RotateRound(new Vector3(1, 0, 0)).y);
GL.Vertex3(right / Screen.width, top / Screen.height, 0);
GL.TexCoord2(RotateRound(new Vector3(1, 1, 0)).x, RotateRound(new Vector3(1, 1, 0)).y);
GL.Vertex3(right / Screen.width, bottom / Screen.height, 0);
GL.TexCoord2(RotateRound(new Vector3(0, 1, 0)).x, RotateRound(new Vector3(0, 1, 0)).y);
GL.Vertex3(left / Screen.width, bottom / Screen.height, 0);
public Vector3 RotateRound(Vector3 position)
{
Vector3 point = Quaternion.AngleAxis(angle, new Vector3(0,0,-1)) * (position - new Vector3(0.5f,0.5f,0));
Vector3 resultVec3 = new Vector3(0.5f, 0.5f, 0) + point;
return resultVec3;
}
以上代码实现笔触跟随笔画走向旋转,这里笔触一定要使用正方形。
大概是解决走向变化连接点不平滑的问题,但是任存在停笔时小抖动出现错误笔触的情况…
在触屏上测试了下最终的效果
文章来源地址https://www.toymoban.com/news/detail-414467.html
到了这里,关于Unity模拟毛笔字效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!