I have existing splines created using a blueprint and I’d like to use the spline point data in a new blueprint. Anyone have any advice?
ALT-drag?
You can also write a BP to copy the point data from the other.
This is what I’d like to know how to do.
If the original BP is ‘SplineBP’, then in a new BP, we can use a reference and copy the data out
This only does relative location, but of course you can copy the whole transform.
But why bother? ![]()
That works! Any way to store the spline points so that I can delete the originals?
Store them for how long?
What originals, the ones in the other BP?
Saving the level will store everything, of course.
Actually as long as I keep it in a function (instead of on the construction script) it retains the spline points. Thanks for the help @ClockworkOcean ! Here’s my final blueprint:
Lovely ![]()
I’ve copied your code and am running it in a Fn on the CS but I could only get the changes to save if I set ‘Override Construction Script’ = ON on the details panel for the spline component in level. If I ever uncheck this, it reverts back to default.
Hello where to put these codes? create a new BP or level blueprint?
New BP. It’s the one with the spline in ![]()
i also tried it , it is not permanent, when i edit or change something, it reverts back to original shape. is there any way to make these points identical, i mean like normal spline actor.
I know it is already solved, but in case somebody needs it I created a python script to copy the spline points. you just have to specify the names and run it inside the level
import unreal
editor_actor_subsystem = unreal.get_editor_subsystem(unreal.EditorActorSubsystem)
source_bp_actor = None
destination_bp_actor = None
all_actors = editor_actor_subsystem.get_all_level_actors()
for actor in all_actors:
if actor.get_actor_label() == "BP_Spline_Source_Name":
source_bp_actor = actor
if actor.get_actor_label() == "BP_Spline_Destination_Name":
destination_bp_actor = actor
source_spline = None
destination_spline = None
source_components = source_bp_actor.get_components_by_class(unreal.SplineComponent)
if source_components:
source_spline = source_components[0]
destination_components = destination_bp_actor.get_components_by_class(unreal.SplineComponent)
if destination_components:
destination_spline = destination_components[0]
# Clear existing points in the destination spline
destination_spline.clear_spline_points()
# Iterate over the points in the source spline and add them to the destination spline
num_points = source_spline.get_number_of_spline_points()
for i in range(num_points):
# Get the point's position, tangent, rotation, scale and type
location = source_spline.get_location_at_spline_point(i, unreal.SplineCoordinateSpace.LOCAL)
tangent = source_spline.get_arrive_tangent_at_spline_point(i, unreal.SplineCoordinateSpace.LOCAL)
rotation = source_spline.get_rotation_at_spline_point(i, unreal.SplineCoordinateSpace.LOCAL)
scale = source_spline.get_scale_at_spline_point(i)
point_type = source_spline.get_spline_point_type(i)
# Add a spline point at the location and immediately update the spline
destination_spline.add_spline_point_at_index(location, i, unreal.SplineCoordinateSpace.LOCAL, update_spline=True)
destination_spline.set_tangent_at_spline_point(i, tangent, unreal.SplineCoordinateSpace.LOCAL)
destination_spline.set_rotation_at_spline_point(i, rotation, unreal.SplineCoordinateSpace.LOCAL)
destination_spline.set_scale_at_spline_point(i, scale)
destination_spline.set_spline_point_type(i, point_type, update_spline=True)
unreal.EditorUtilityLibrary().set_actor_property(destination_bp_actor, "Modify", True)
destination_spline.update_spline()
If the points disappear when you move it just select all of them and save the level.
Hey this Python script is exactly what I’m looking for, but when I run it I get an error:
AttributeError: 'EditorUtilityLibrary' object has no attribute 'set_actor_property'
Any idea why that would be?
EDIT: Nevermind, it seems like it worked despite the error. Awesome script!
This is awesome. However it doesn’t seem to be copying the tangents. Any idea why that would be? Thanks!
I came across this last night, and it still works beautifully. I love finding other unicorns out there who have found solutions to the same conundrums that I currently have. Thank you!
I know this has been answered repeatedly, with multiple approaches… But for folk who are real lazy, I threw together an editor utility widget for copying points between splines. There was another one floating around in a different thread but it contained multiple assets & errors, so here’s one for 5.6 that worked well for me:
EDIT: Link now contains asset for versions 5.5+
Copy splines widget







