Notifications
Article
J_画板制作思路
Published 9 months ago
170
0
画板(J_PaintBoard与J_PixelPaint)

画板(shader与Graphics结合)

  1. 初始化一个RenderTexture
  2. 使用RenderTexture.GetTemporary获取临时图像用于设置
  3. 编写简单的shader,生成对应material,用于设置鼠标点击的坐标点,设置该点的颜色,大小。
  4. 如需橡皮擦功能,需要编写响应的mask的shader以用于遮挡
  5. 在每一帧鼠标绘画的路径上设置material的值,并使用Graphics.Blit(RenderTexture,RenderTexture,material)方法,将点的内容与rendertexture叠加,从而生成目标rendertexture。
  6. 该rendertexture即可被使用。可以将该rendertexture赋值给场景中的任一rawimage。
问题:
  1. 该方法在对不会编写shader的人来说有一定难度,即便找到合适的shader,如果后续还需要编写橡皮擦等功能,还需要对shader进行深入编写,则会产生不少麻烦。
  2. Graphics.Blit()方法叠加内容时会保留材质球的特性,可能会不断叠加而影响效果
  3. 该方法在移动端上不兼容,无法达到需要的效果

画板(像素点绘画)(推荐)

  1. 初始化一个texture2D
  2. 在鼠标点击的坐标点对周围像素进行填充,设置其颜色,大小。并apply
  3. 如需橡皮擦功能,只需要将鼠标垫周围的像素点进行alpha设置,或颜色设置即可
  4. 该Texture2D即可被使用,可以将该rendertexture赋值给场景中的任一rawimage。
问题:
  1. 该方法对于性能有些许要求,特别是生成的texture2D像素越高,在apply的时候会有帧数变化。

其他

如果需要做重做(undo)功能
  • 使用画板(shader与Graphics结合)方法时,只需要将RenderTexture.GetTemporary获取的方法用数组保存下来,重做时重新设置rendertexture即可
  • 使用画板(像素点绘画)时,建议将texture2D中的像素colors保存下来,而不要保存整个texture2D(内存占用过多),重做时重新设置像素colors即可

Jason_Ni
软件开发工程师 - Programmer
6
Comments