二维矢量动画智能制作软件开发合集
个人开发二维矢量动画智能制作软件界面如下:
目录
曲率调节控制
本篇介绍软件左侧工具栏→绘制工具→曲率调节控制
位置节点有尖点和贝塞尔节点,其中贝塞尔节点的曲率可调节控制。设计的对应功能包括:曲率大小设置、尖点和贝塞尔节点转换等。
一、曲率调节控制原理
为了操作和区分出位置节点是否为贝塞尔节点,贝塞尔节点需同时绘制出曲率控制手柄,既可经由曲率控制手柄调控矢量曲线曲率,也可看清位置节点的曲率控制节点个数,效果如下所示。
上图中,通过蓝绿色区分线条/节点的不同属性,其中,位置节点为绿色方块,曲率节点为蓝色方块,矢量线段为绿线,曲率控制手柄为蓝线。可以看到,一个位置节点可以有多个曲率控制手柄(特殊的,尖点没有曲率控制手柄),由此,也延伸出对曲率调节控制的2种模式:
① 模式一:【绑定调节】对有且仅有2个曲率控制手柄的位置节点,将2个曲率控制手柄进行绑定控制,以起到平滑矢量曲线的作用;(由于绘图需求,此模式被广泛采用。)
② 模式二:【单独调节】对于任意曲率控制手柄,均可单独调节。
曲率调节模式类型通过在位置节点设置属性变量(bool类型)来实现,通常采用alt键取反操作来设置该变量取值。
二、曲率绑定调节实现
1.代码示例
.h文件变量申明:
QList<QGraphicsItem*> posItems, curveItem;
QPointF delta;
QList<qreal> orginR;
.h文件方法申明:
/*角度计算::返回值为弧度制*/
qreal angleCal(qreal x,qreal y);
curveItems[0]->moveBy(delta.x(),delta.y());
qreal deltaX = curveItems[0]->x() - posItems[0]->x();
qreal deltaY = curveItems[0]->y() - posItems[0]->y();
qreal R0New = qSqrt(deltaX*deltaX+deltaY*deltaY);
qreal angle = angleCal(deltaX,deltaY);
qreal R1New = R0New*orginR[1]/orginR[0];
curveItems[1]->setX(posItems[0]->x()-R1New*qCos(angle));
curveItems[1]->setY(posItems[0]->y()-R1New*qSin(angle));
2.示例效果
绑定调节
三、曲率单一调节实现
1.代码示例
.h文件变量申明:
QList<QGraphicsItem*> curveItem;
QPointF delta;
curveItems[0]->moveBy(delta.x(),delta.y());
2.示例效果
单一调节
四、曲率调节软件测试视频
曲率控制调节实现
结束语
本文简要梳理了软件曲率调节控制的实现框架,内容均为原创。
作者文笔水平一般,请大家多多包涵和指正,十分欢迎进一步交流学习。
若需,请联系本人小红书(小红书号:YzLab96),谢谢。
链接: 软件开发及测试所有视频合集见小红书