В этой статье я собираюсь показать вам, как можно использовать объект класса THREE.CatmullRomCurve в своем проекте для создания плавной наклонной кривой?
CatmullRomCurve3 используется для создания плавной наклонной кривой между как минимум двумя точками в 3D-среде.
Давайте посмотрим, как реализовать THREE.CatmullRomCurve3.
var point = []; point.push([1,0,1], [1,0,-1] , [-1,0,-1], [-1,0,1]); const curve = new THREE.CatmullRomCurve3( point.map((e)=>{ return new THREE.Vector3(e[0], e[1],e[2]) }) ); curve.closed = !false; curve.tension = .1;
Конструктор CalmullRomCurve3 принимает массив трехмерных точек, более 2. В приведенном выше примере я взял 4 точки для создания квадратных путей.
point.map создает новый массив с заданными 4 точками.
CatmullRomCurve3.getPoint(int: деление);
var vertices = []; curve.getPoints(100).forEach((e)=>{ vertices.push( e.x, e.y, e.z ); });
Метод CatmulRomCurves.getPoints( int : Division) возвращает массив точек, соответствующий значению деления. Большее значение деления дает вашему пути плавные кривые в углах.
Массив вершин используется для атрибута положения геометрии.
var geometry = new THREE.BufferGeometry(); geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) ); var material = new THREE.LineBasicMaterial({}); const curveObject = new THREE.Line( geometry, material ); //Adding to Scene s.add(curveObject);
Ссылки и ресурсы: