各位友友们,好久不见~ 消失好几年的破破又回来啦……
之前由于工作方面的原因,一直不方便上网,工作和生活大部分都是内网的节奏,最近换了工作,又可以写博客了。
本次分享Unity3D中绘制三维曲线(二次贝塞尔曲线),工程Unity3D 版本是2018.3.5f1,记得两年前一个项目是模拟某飞行器目标的飞行曲线,用到了贝塞尔,但是当时是2D的,直接在屏幕上绘制的,后续也没有总结分享,本次刚好项目又用到贝塞尔,索性分享一下。
贝塞尔曲线是最基本的曲线,一般用在计算机 图形学和 图像处理。
贝塞尔曲线中包含两个控制点的称为线性的贝塞尔曲线,包含三个控制点的称为二次贝塞尔曲线,包含四个控制点的称为三次贝塞尔曲线,还有更复杂的多次,到学术层的话就得查资料了。
咱们本次只讨论二次贝塞尔。
线性贝塞尔:
给定点P0、P1,线性贝塞尔曲线只是一条两点之间的直线。公式如下:
二次贝塞尔:
二次贝兹曲线的路径由给定点P0、P1、P2控制。公式如下:
三次贝塞尔:
P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝兹曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是用来充当控制点。P0和P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。公式如下:
下面看看二次贝塞尔曲线在Unity3D 中绘制的效果:
绘制线了还是使用的Unity3D自带的 LineRenderer,如果绘制虚线只需要调整一下Shader和贴图就行了。
代码感觉没什么难度,都在工程里,就不贴出来了。需要注意一点的是,实际项目中通常只提供两个点,另外中间的点咱们自己手动算一个差值在调用的时候放进去就可以了。
线性和三次贝塞尔作为思考题大家自己试试,如果实在写不出来,可以留言咱共同探讨。
工程下载地址:
https://download.youkuaiyun.com/download/xggllc/11084668
本来想设置0积分下载的,但是好久没用优快云,现在都没有设置积分的地方了,积分不太够的同学可以留下你的邮箱,我看见了会第一时间把工程发过去。
可能来不及回复,我把源码地址分享出来:
链接:https://pan.baidu.com/s/16pouYa1UlhWFriK-PITLpQ 密码:g6eu