# Spline

A spline is a curve or collection of continuous curves that are defined by a set of (in this case) 3D points. Unlike point clouds, splines are an excellent type of geometry for drone formation definition because they can be split up infinitely to support any number of drones.&#x20;

## Spline Shapes

There are multiple spline-based shapes that can be generated/manipulated with simple parameters. Any of these shapes can be converted into an "Editable Spline" by selected the associated button in the spline edit toolbar.

These shapes include:

* [Bezier Circle](https://docs.verge.aero/drone-show-software/verge-design-studio/scene-objects/spline/bezier-circle)
* [Bezier Helix](https://docs.verge.aero/drone-show-software/verge-design-studio/scene-objects/spline/bezier-helix)
* [Bezier Line](https://docs.verge.aero/drone-show-software/verge-design-studio/scene-objects/spline/bezier-line)

## Color

Splines can be assigned solid colors, or gradients. If a gradient is assigned, then the gradient will be applied along the spline in order from the start to end.

## Editing Splines

When selecting one or more splines, spline shapes, or compound splines, a toolbar will appear on the top of the scene view. This toolbar provides quick ways of manipulating splines, editing geometry, and managing groupings. Buttons become enabled/disabled based on the current selection and state of the splines.

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FB3TzUyFCMQQ1aSoOnXu8%2Fimage.png?alt=media&#x26;token=184937f2-418a-4249-99f1-dd36eaa258ec" alt=""><figcaption><p>The spline toolset panel</p></figcaption></figure>

{% tabs %}
{% tab title="Convert" %}
These buttons are responsible for changing a shape into another shape container. Some tools and options are not available unless a bezier shape is converted into an editable spline or the shape is a compound spline.

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FxxJgHkUVAdM0EXuDsj0O%2Fimage.png?alt=media&#x26;token=487b1793-042f-44e7-9a06-f7fe0ad54df7" alt="" data-size="original"> To Editable Spline</summary>

Convert a bezier shape into a form that can be manually editable. This will cause the shape to lose its unique parameters in favor of a generic spline

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FtkiaV7wbynD2xnmcGXIS%2Fimage.png?alt=media&#x26;token=a02b1d56-919b-43d5-bf7e-b4037bd81357" alt=""> To Compound Spline</summary>

Convert a bezier spline or shape into a compound spline, supporting multiple splines in a single shape

</details>
{% endtab %}

{% tab title="Spline Tools" %}
This set of tools provide high-level ways of manipulating one or more splines. They also expose ways of grouping/ungrouping splines into and out of compound splines.

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FII6s0J14UH5MZ55cMmIj%2Fimage.png?alt=media&#x26;token=0f232331-f0cf-403a-b936-9189c9e3dddf" alt=""> Center Anchor</summary>

Automatically shift the shape's centroid to be the average of all spline control points

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2Fn2wTZSvJFBckFz10r6AO%2Fimage.png?alt=media&#x26;token=224c94aa-6ae9-42a5-bfd6-ea946840d03e" alt=""> Shift Anchor</summary>

Enter a mode where the anchor can be shifted while keeping the spline's geometry world-locked. To stop anchor shifting, the button must be toggled again.

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FZzdu7UZw0TabzCyVmXNE%2Fimage.png?alt=media&#x26;token=7e29b477-ea11-4a27-95d7-ba71caacf06b" alt=""> Reverse</summary>

Reverse the order of the points in the spline. This will result in an identical spline, but with start and end points reversed. Useful for ensuring that lighting effects move in the correct direction

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FZzdu7UZw0TabzCyVmXNE%2Fimage.png?alt=media&#x26;token=7e29b477-ea11-4a27-95d7-ba71caacf06b" alt=""> Reverse</summary>

Reverse the order of the points in the spline. This will result in an identical spline, but with start and end points reversed. Useful for ensuring that lighting effects move in the correct direction

</details>

<details>

<summary> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2Fz5DRhuzsCZ5tD50C9rwQ%2Fimage.png?alt=media&#x26;token=90b2a05e-41b8-44fe-8251-f2978da3e793" alt=""> Duplicate</summary>

Duplicates the selected spline/s. This only works for compound splines. The duplicated spline will appear as a new sub-spline.

{% hint style="warning" %}
Spline must be converted to a compound spline to use the Duplicate tool
{% endhint %}

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FOKiPeugDMdJeJa5Q3MAG%2Fezgif-5a69d8fdd1f070.gif?alt=media&#x26;token=9b34aa2b-d033-40fa-9f78-c99223720fea" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FcVmzQKfF40qYoqKkXkM1%2Fimage.png?alt=media&#x26;token=1db7bea7-60d4-4216-93a3-81580838f81e" alt=""> Merge (Group)</summary>

Combines the selected splines into a single compound spline.&#x20;

</details>

<details>

<summary> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FVBwWTa3AYr40BYzBaLlh%2Fimage.png?alt=media&#x26;token=53e70fda-6550-4bfc-b1c4-1f87b6f6aaed" alt=""> Separate (Ungroup)</summary>

Removes the selected splines from their current compound spline and puts them into separate standalone splines.

</details>

<details>

<summary> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FeKg4xO3RhgVQEY35IVsP%2Fimage.png?alt=media&#x26;token=4ee23aba-a13f-46f5-927d-c6ecb073e648" alt=""> Close</summary>

Forces the spline to be a complete loop. The endpoint will be shifted to be placed on top of the start point.

</details>

<details>

<summary> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FIveKO3BYantAK69PsGTw%2Fimage.png?alt=media&#x26;token=27477ac7-a002-4bbd-8fb8-086224237f9b" alt=""> Open</summary>

Allows the spline start and end points to be separated

</details>

<details>

<summary> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FnL1s51hfYAjSxf5Qeu9D%2Fimage.png?alt=media&#x26;token=9c8aa4f7-ec4a-4536-9371-4e28b476d804" alt=""> Delete</summary>

Deletes the currently selected anchor point, segment, or spline

</details>
{% endtab %}

{% tab title="Edit" %}
This button array provides a way to choose selection mode as well as entering/exiting spline edit mode. Edit mode must be entered to modify spline anchor points or use the geometry tools

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FqmOdehsSkn6bUHRtzMoa%2Fimage.png?alt=media&#x26;token=5e3a1538-7406-40ca-905f-43ea2f2e886c" alt=""> <img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FltS5wJ5SMoIniJXWWwqX%2Fimage.png?alt=media&#x26;token=3a841cfb-d61a-4e4c-b332-89742f2e3913" alt=""> Edit Mode (Exit Edit Mode)</summary>

Enter edit mode and allow geometry to be selected and manipulated. The button will toggle to an X when active and must be clicked again to exit edit mode.

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FPC3GvEBJhYwwGpbYvrkf%2Fimage.png?alt=media&#x26;token=b7dae3bb-fa60-49d2-92e7-0f41dda2ba26" alt=""> Anchor Point/Vertex Selection Mode</summary>

Enter anchor point selection mode where only anchor points (points that lie directly on geometry) can be selected

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2F6rJeznoUb6mgq9rTZcwO%2Fimage.png?alt=media&#x26;token=846265cb-b456-4687-88e5-59b30c33d3d5" alt=""> Control Point/Handle Selection Mode</summary>

Enter control point selection mode where any control point can be selected and shifted

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FFeFBO44ia1gGvO672iER%2Fimage.png?alt=media&#x26;token=48a74c03-1ba3-4678-956e-1d9611d961a2" alt=""> Segment Selection Mode</summary>

Enter segment selection mode where any segment can be selected and shifted

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FybJqW38tesEJuhAxaxpA%2Fimage.png?alt=media&#x26;token=21740e29-7b2d-4a0d-b335-edde74906e0b" alt=""> Spline Selection Mode</summary>

Enter spline selection mode where any spline can be selected and shifted

</details>
{% endtab %}

{% tab title="Geometry Tools" %}

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FYTZIdjuNutyr6VOZHfbI%2Fimage.png?alt=media&#x26;token=ac49b957-b374-40b7-81ce-4f2c005635c0" alt="" data-size="original"> Smooth Geometry</summary>

Takes all selected geometry and sets it to be as smooth as possible by adjusting spline control points to be tangential and parallel

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FyVP8UUsYe5D0KJb85THQ%2Fezgif-53150e76cb59a7.gif?alt=media&#x26;token=86e7b294-3d21-4304-91f2-1499831134ed" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FvW1Licc29B6a2Elv4LI1%2Fimage.png?alt=media&#x26;token=d32f9a86-563a-409f-b1ce-fb668559b948" alt=""> Straighten Geometry</summary>

Takes all selected geometry and sets it to be as straight or sharp as possible by adjusting spline control points to be coincident (or on top of eachother) for each anchor point

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2Fpiaent8OmNLYtfGcHN5k%2Fezgif-56ca5bd2bb7cc4.gif?alt=media&#x26;token=93ff0cbe-6fa2-435a-a3d6-6686e9fb4801" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2F30TKDSWvyLxFfEVKoYKk%2Fimage.png?alt=media&#x26;token=ec401254-66d8-4242-b8b4-07e9229f8980" alt=""> Extrude Geometry</summary>

Takes selected segment (or vertex if on an endpoint) and creates a new line on each side so that it may be pulled away without disturbing surrounding segments

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FCxvzTJmmy1YUwQ3qxMsj%2Fezgif-7527c947c9b5e0.gif?alt=media&#x26;token=c86a27cd-8b54-43ba-b0c6-e4490ac9a878" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FYTZIdjuNutyr6VOZHfbI%2Fimage.png?alt=media&#x26;token=ac49b957-b374-40b7-81ce-4f2c005635c0" alt="" data-size="original"> Merge Geometry</summary>

Fuses two selected endpoints to form a single spline

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FkQXF3hsBEVz3wHrv71oz%2Fezgif-502c764f09758b.gif?alt=media&#x26;token=4bcb337d-f333-4b0f-bdc3-7d8317599d7e" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FYTZIdjuNutyr6VOZHfbI%2Fimage.png?alt=media&#x26;token=ac49b957-b374-40b7-81ce-4f2c005635c0" alt="" data-size="original"> Split Geometry</summary>

Takes selection and breaks its endpoints from the containing spline. This will create new splines to properly contain the new separated segments.

{% hint style="warning" %}
Spline must be converted to a compound spline to use the Split tool
{% endhint %}

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FM1IYVpuGTBVxuu3jLzDE%2Fezgif-59089b17909faf.gif?alt=media&#x26;token=ac0ce42c-0779-4ed0-b463-73e24a91b02b" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FYTZIdjuNutyr6VOZHfbI%2Fimage.png?alt=media&#x26;token=ac49b957-b374-40b7-81ce-4f2c005635c0" alt="" data-size="original"> Subdivide Geometry</summary>

Takes the selected segments and evenly subdivides them, inserting a single new vertex per-segment for every click

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FRMhD3z0an9Zg0fjgGOlv%2Fezgif-58aebd0f8e1314.gif?alt=media&#x26;token=d0441836-9eed-4cce-be14-92218e93a787" alt=""><figcaption></figcaption></figure>

</details>
{% endtab %}
{% endtabs %}

## Slotting Control

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FY0dPv42ap7b0BHJcR6Au%2Fimage.png?alt=media&#x26;token=610d7d9c-149e-4a9a-b2aa-379922a26a24" alt=""><figcaption></figcaption></figure>

## Pivot Weighting

The design studio leverages geometric information to make decisions around where to place slots. In the case of a spline, harsh angles or "corners" can be treated specially and the software well make sure that a drone is placed exactly on the corner. This will maximize detail and definition.

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FcIyZbwCFxDX2xQvvfI90%2Fimage.png?alt=media&#x26;token=52802bec-ad6d-4e97-9d03-d4a496f4203f" alt=""><figcaption><p>Pivot weighting on (Left) and off (right)</p></figcaption></figure>

`Use Pivot Weighting:` Enable/Disable the use of pivot weighting in the slot solution

`Pivot Angle Threshold:` The angle (in degrees) that a corner must be *below* in order for it to be treated as a pivot point

## Partial Spline

The slot solver can be set to use *only a portion* of a spline. This is particularly useful in combination with animating the slot offset field if you want to move a group of splines along a path.

{% hint style="warning" %}
You must disable pivot weighting in order to use partial spline functionality
{% endhint %}

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FQj7vMoqIYNsPgBE76HYF%2Fimage.png?alt=media&#x26;token=e68d079a-d76a-4f3c-9464-2c93d65bdb22" alt=""><figcaption></figcaption></figure>

`Use Partial Spline:` Enable/Disable the use of a partial spline

`Start Percent (%):` The location (in percent, where 0% is the start and 100% is the end) to start the spline&#x20;

`End Percent (%):` The location (in percent, where 0% is the start and 100% is the end) to end the spline&#x20;

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FV7xf1mteNoKyLekqVqJL%2Fezgif-443043bf055540.gif?alt=media&#x26;token=7f10daf3-a46e-4a42-9508-1b7c09068694" alt=""><figcaption><p>Shifting end percent from 100% to 0%</p></figcaption></figure>

## Hull Slot Solver

Along with the standard linear solver, there is also a mode that allows a spline shape to be filled in.

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2F7ZH1aVtHJhun6uUcVB8L%2Fimage.png?alt=media&#x26;token=92204fae-b2be-4290-85a1-f4eba6563d14" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1654204364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FakGR2bVCZLTNoe2hkqeR%2Fuploads%2FM1JP4WRlQRJyQUH2b9bm%2Fezgif-503224d8a2bdb1.gif?alt=media&#x26;token=1a80efbe-bb36-4946-9e69-a54912dd94a5" alt=""><figcaption></figcaption></figure>

### **Hull Projection Axis**

* **Description**: Specifies the axis along which the spline is projected to compute the 2D hull for slotting.
* **Options**:
  * **X**, **Y**, **Z**: Choose the axis orthogonal to the hull's plane. Used to flatten 3D splines into a 2D working surface.

### **Slot Mode**

* **Description**: Determines the algorithm used to generate the filled surface inside the spline’s hull. This affects how vertices are distributed across the area enclosed by the projected hull.
* **Options**:
  * **Scaled Fit**
    * Fills the convex or concave polygonal region and then *stretch* them so that points touch the boundary of the shape
    * Ideal for structured interpolation and clean, regular fills.
    * Can set the number of columns/rows directly or define a density for placement
  * **Poisson Distribution**
    * Inserts vertices using a Poisson disk sampling method.
    * Ensures randomly distributed points with a minimum distance between them, avoiding clumping while preserving uniformity.
    * Best suited for naturalistic or non-uniform point distributions (e.g., organic modeling, scattered elements).
    * Row and scanline settings are ignored in this mode.
    * Density controls how close/far points are distributed
    * Random seed can be tweaked to get slightly different distributions
  * **Bounded Grid**
    * Fills the hull area with a regular grid of points, clipped to the boundary of the projection.
    * Produces a structured mesh of evenly spaced rows and columns, spacing is identical vertically and horizontally.
    * Works well for mechanical or architectural shapes requiring evenly spaced subdivisions.
    * Density controls how close/far points are distributed
