BabylonJS内置了api来创建一些复杂的数学曲线.我们之前已经看过使用复杂方程创建的带状线,用于绘制图案并计算给予网格的路径的坐标.我们这里有一个内置的API,以避免进行复杂的计算,就像在Curves API中一样.
解释的曲线如下 :
二次贝塞尔曲线
Cubic Bezier曲线
Hermite spline
Catmull-Rom spline
二次Bezier曲线
在本节中,我们将了解二次贝塞尔曲线.
语法
var bezier = BABYLON.Curve3.CreateQuadraticBezier(origin, control, destination, nb_of_points);
参数
考虑以下与二次贝塞尔曲线相关的参数.
Origin : 曲线的原点.
控制 : 曲线的控制点.
目的地 : 目的地点.
Noofpoints : 数组中的点.
Cubic Bezeir曲线
在本节中,我们将了解Cubic Bezier曲线.
语法
var bezier3 = BABYLON.Curve3.CreateCubicBezier(origin, control1, control2, destination, nb_of_points)
参数
考虑以下与Cubic Bezier曲线相关的参数.
Origin : 原点.
control1 : 矢量形式的第一个控制点.
control2 : 矢量形式的第二个控制点.
目的地 : 矢量形式的目标点.
no_of_points : 数组形式的点数.
HermiteSpline曲线
在本节中,我们将了解Hermite样条曲线.
语法
var hermite = BABYLON.Curve3.CreateHermiteSpline(p1, t1, p2, t2, nbPoints);
参数
考虑以下与Hermite样条曲线相关的参数 :
p1 : 曲线的原点.
t1 : 原点切线向量点.
p2 : 目的地点.
t2 : 目标切线向量.
NbPoints : 最终曲线的点数组.
Catmull-Rom样条曲线
本节内容,我们将了解Catmull-Rom样条曲线.
语法
var nbPoints = 20;//每个Vector3控制点之间的点数 var points = [vec1,vec2,...,vecN];//曲线必须通过的Vector3数组:控制点 var catmullRom = BABYLON.Curve3.CreateCatmullRomSpline(points,nbPoints);
参数
考虑以下与Catmull-Rom样条曲线相关的参数 :
积分 : 一个Vector3数组,曲线必须通过控制点.
NbPoints : 每个Vector3控制点之间的点数.
var path = catmullRom.getPoints( );//getPoints()返回连续Vector3的数组. var l = catmullRom.length();//方法返回曲线长度.
演示
BabylonJs - Basic Element-Creating Scene
输出
以上代码行将生成以下输出 :