用Unity做简易的图像处理软件(四)

本文分享了一个使用Unity制作的简易图像处理软件项目,包括gamma矫正和裁剪功能。通过LineRenderer创建裁剪框,并利用Gamevars类协调程序运行。裁剪功能的实现涉及特殊shader,用户可进行四种方式的拖拽操作。项目源代码已开源,作者计划可能添加更多功能或在11月28日前结束开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目分享:https://github.com/Claymoreno1/RenderTexture

gamma与裁剪
添加了gamma矫正和裁剪功能,添加当前图片分辨率的显示。
关于裁剪选择时的框线,我是用的LineRenderer,然后给它一个material,添加一个由色块组成的纹理纹理
方便采样,这样框线会有颜色变化,不至于太单调。
用户一共有四种拖拽方式,所以我们还需要根据用户的推拽方式判断裁剪的坐标
首先是Line的实现部分

if (Input.GetMouseButtonDown(0))
                {
   
   
                    linerd.SetPosition(0, mospos = Input.mousePosition);
                    Gamevars.tailoring = true;
                    linerd.SetWidth(1.6f, 1.6f);
                }
                linerd.SetPosition(1, new Vector2(Input.mousePosition.x, mospos.y));
                linerd.SetPosition(2, new Vector2(Input.mousePosition.x, Input.mousePosition.y));
                linerd.SetPosition(3, new Vector2(mospos.x, Input.mousePosition.y));
                linerd.SetPosition(4, mospos);
if (Gamevars.tailoring && Input.GetMouseButtonUp(0))
                {
   
   
                    if (true)
                    {
   
   
                        Vector2 sizedelta = new Vector2(Gamevars.imagewidth, Gamevars.imageheight) * Gamevars.size;
                        Vector2 originpos = new Vector2(image.transform.position.x, image.transform.position.y - sizedelta.y);
                        Gamevars.xy[0, 0] = (mospos.x - originpos.x)/sizedelta.x;
                        Gamevars.xy[0, 1] = (mospos.y - originpos.y)/sizedelta.y;
                        Gamevars.xy[1, 0] = (Input.mousePosition.x - originpos.x) / sizedelta.x;
                        Gamevars.xy[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值