USplineMeshComponent Incorrect World Location and Mesh Distortion

Changed the SplineMeshUpdate function to instead track some USplineComponents which are properly tracking the sphere collision components. Printing the location of each spline and corresponding spline mesh show that they are the same, however clearly that is not true for the picture below:


They are nowhere close to eachother and one spline mesh is going in a completely different direction.

Here are my spline and spline mesh update functions:

void AQVessel::UpdateBodySegments()
{
	for (const QBodySegment Segment : BodySegments)
	{
		USplineComponent* Spline = SplineComponents[Segment.SplineIndex];
		UPrimitiveComponent* Joint1 = ColliderComponents[Segment.Joint1Index];
		Spline->SetLocationAtSplinePoint(0, Joint1->GetComponentLocation() + Joint1->GetComponentRotation().RotateVector(Segment.LocalOffset), ESplineCoordinateSpace::World);
		Spline->SetLocationAtSplinePoint(1, ColliderComponents[Segment.Joint2Index]->GetComponentLocation(), ESplineCoordinateSpace::World);
		Spline->SetLocationAtSplinePoint(2, ColliderComponents[Segment.Joint3Index]->GetComponentLocation(), ESplineCoordinateSpace::World);

		FVector Location = Spline->GetLocationAtSplinePoint(0, ESplineCoordinateSpace::World);
		GEngine->AddOnScreenDebugMessage(-1, GetWorld()->DeltaTimeSeconds, FColor::Cyan,
			FString::Printf(TEXT("Spline: X=%.2f Y=%.2f Z=%.2f"),
				Location.X, Location.Y, Location.Z));
	}
}

void AQVessel::UpdateSplineMeshes()
{
	for (const QBodySegment Segment : BodySegments)
	{
		USplineMeshComponent* SplineMesh = SplineMeshComponents[Segment.SplineMeshIndex];
		USplineComponent* Spline = SplineComponents[Segment.SplineIndex];
		UPrimitiveComponent* Joint1 = ColliderComponents[Segment.Joint1Index];
		UPrimitiveComponent* Joint2 = ColliderComponents[Segment.Joint2Index];

		SplineMesh->SetStartAndEnd(
			Spline->GetLocationAtSplinePoint(0, ESplineCoordinateSpace::World)/*Joint1->GetComponentLocation() + Joint1->GetComponentRotation().RotateVector(Segment.LocalOffset)*/,
			Spline->GetTangentAtSplinePoint(0, ESplineCoordinateSpace::World) /*Joint1->GetComponentRotation().Vector()*/,
			Spline->GetLocationAtSplinePoint(1, ESplineCoordinateSpace::World)/*Joint2->GetComponentLocation()*/,
			Spline->GetTangentAtSplinePoint(1, ESplineCoordinateSpace::World) /*Joint2->GetComponentRotation().Vector()*/
		);

		FVector Location = SplineMesh->GetStartPosition();
		GEngine->AddOnScreenDebugMessage(-1, GetWorld()->DeltaTimeSeconds, FColor::Cyan,
			FString::Printf(TEXT("SplineMesh: X=%.2f Y=%.2f Z=%.2f"),
			Location.X, Location.Y, Location.Z));
	}
}