Placing Actor based on data of csv/xls

I am searching a unreal engine plugin or tool or blueprint that will serve to place actors in the editor reading data from xls/csv. xls/csv may have Tree/Lamppost/traffic signal etc. including their location as x/y/z,size and rotation.

Could someone please give probable solution?

Thanks in advance.

Hey,

  1. Create a Structure (RightClick-Blueprints-Structure) with 2 variables, Location as Vector and Rotation as Rotator
  2. Create a DataTable using this Structure (RightClick-Miscellaneous-DataTable)
  3. Open the DataTable
  4. Click on Reimport at the top
  5. Find your CSV file and click open. The CSV file should have this format:

341817-csv.jpg

  1. Click Save in the DataTable
    To use this DataTable to set the Location and Rotation, you can create a Blueprint with all those actors like this:

Or you use the GetAllActorsOfClass in an empty Blueprint to get all actors of your level :slight_smile:
p.s.: The DataTable only updates on Reimport.

Thank you very much !! Think, it will work. I am very new in this domain. I have a question about point 6. Honestly It is still unclear how I can implement it(point 6). Also not understand the part I marked in the below image. Could you please explain more about it (point 6) for me?

Thanks again for your quick answer.

So, the first example shows a solution if you have all the meshes already in your blueprint (BP_PlaceActor). Here these are SignalC and LampA. With the ForEachLoops you compare all entries of RowNames and MeshNames to find the equal pair. If they are equal, you want to get the location and rotation from the DataTable and set it for the mesh:

In the second example you first get all the actors which are a static mesh, store it in an array an then compare the two arrays like this:

For the second method you will have to place the static mesh already in your level. For the first method you just place the blueprint actor inside your level because all the meshes are in the blueprint.

Great! It’s clear and I understand now. Thanks.

Have one confusion yet though! I have 1500 Trees, 800 Lamppost and 200 different signals lights with poles. I collected those item’s location from public source as in coordinate(x,y,z) with other info like rotation/size etc.

Seems like in solution 2, I have to place all those item’s mesh in the level first. If I am not mistaken then it is not my objects. In solution 1 also seems like I have to add all those item’s component in the BP and after that I can compare those components with the data table rows to transform.

Am I correct?
If so then it’s bit differ from my objective. I like to place al those items automatically in the editor using csv>datatable and item mesh( imported from fbx). I like to avoid manual works in any form.

Could you please correct me if I am wrong? It would be great if we continue this thread …Thanks again and have a good day.

I created an example project. Please try it:

In the Blueprints folder is a EditorWidget, rightclick and select RunEditorUtilityWidget. Then click on PlaceActorsInEditor. Good luck :smiley:

1 Like

Great ! Seems exactly what I am looking for !
Having issues ! Have a quick look please where is my mistake?

Could you try to remove those nodes and replace them? Or RightClick and RefreshNodes?

yes, tried! But no luck! :frowning:

Could you please check If you have activated EditorScriptingUtilities under your plugins? Because you need the nodes from the EditorScripting category

It works !!! (Y) (bow)

Great, have fun :smiley:

Hi there, i have an issue beyond just placing the actors from csv.

I have project in which i would like to update the position of different actor from a csv file. I am using the *“Runtime DataTable” plugin and i have managed to import my actors in the correct position.
Although, the csv have been obtained through a traffic simulation software and therefore contains a Time column in which shows the time or the frame of the simulation in which the other data in other columns (such postion x,y, speed etc) are shown.
I would like to update my actors position based on the time frame from each column but since the time intervals are not very dense either constant i would like to make some kind of interpolation between one position to other to avoid actor “jumping”. Does anyone know how to achieve this?

I attach the current blueprint image as well as a part of my csv data.


Hello. Thank you for this. It’s a good start to what i’m trying to achieve.

I still have some unsolved problems. I use this to place large amounts of trees in my Archviz scene (15k). My csv contains tree locations and heighs which I obtained from processing LiDAR data. However the processed data is not 100% clean and some trees are placed in locations where they need to be removed.

Is there a way of “baking” this blueprint as individual trees in my scene, so they can then be fine tuned manually (ie. deleting/moving only some of them)?

Hey @pbrgle1

you can

  • Either spawn placeholders, e.g. Billboards, then delete those you don’t want and then place the instances. You would use the remaining billboards positions to spawn

  • Or delete the instances you don’t want directly in the details tab of the spawned blueprint