Exporting Data from Geometry Spreadsheet

   10798   5   5
User Avatar
Member
10 posts
Joined: Jan. 2017
Offline
I want to take a particle simulation and export the particle attributes in the geometry spreadsheet as a simple file format like .csv or .txt

My current approach is from this forum post [www.sidefx.com]: a Python script that will loop through the attributes and write it out to a file, but the script always returns an error “'module' object has no attribute ‘writeFireworks’”. The forum post was from Houdini 2011, and trying to load the .hip example file results in a 404 error.

So my question is this: is the script valid, and I'm just placing the node in the incorrect place? Is the script invalid since it's from Houdini 2011 and there's a new way to access the data? Or is Python scripting the wrong approach altogether?

I'm using the Houdini Apprentice 15.5.473, and below are some screenshots of the Python shell and my node network (I just plopped down the Location Particle Emitter shelf tool)

Attachments:
python_shell.png (90.6 KB)
network01.png (37.8 KB)
network02.png (52.6 KB)
python_script.png (206.0 KB)

User Avatar
Member
1743 posts
Joined: March 2012
Offline
The link you posted is to the Houdini 11.0 docs, specifically the old POPs (not in DOPs). The new POPs (in DOPs) was added in Houdini 12.5, and the old POPs has been hidden for a while.

A Python SOP is probably a reasonable approach. There might be a simpler approach, though I'm not familiar enough with the Python interface to suggest something simpler. However, it'd be invoked by just cooking the Python SOP, (e.g. setting the display flag on it and displaying it in the viewport, or alternatively, just middle-clicking on the node), not from a Python Shell pane.

Someone might have already made an asset to export to something like CSV automatically. I know I've made one to do the opposite.
Writing code for fun and profit since... 2005? Wow, I'm getting old.
https://www.youtube.com/channel/UC_HFmdvpe9U2G3OMNViKMEQ [www.youtube.com]
User Avatar
Member
10 posts
Joined: Jan. 2017
Offline
Thanks for the speedy reply! Cooking the SOP was what did the trick! I have the final script just in case anyone is running into a similar problem. So now all I have to do is select the display flag and hit play, and a new csv file is generated per frame directly onto my Desktop (pretty messy, but manageable)

Thanks so much!
Edited by jderry2019 - June 15, 2018 14:09:50

Attachments:
new_script.png (164.6 KB)
node_network.png (119.2 KB)
output.png (410.6 KB)
ideal_digital_asset.png (31.5 KB)

User Avatar
Member
643 posts
Joined: June 2006
Offline
Thanks to your Effort! i made a simple HDA.

Maybe i should have made a ROP Output Driver would have been better.

i wanted to upload to Orbolt but it was offline.


otherwise here is the Python Code:
node = hou.pwd()
geo = node.geometry()

# CONFIG
filename = "test.csv"
separator = "," 

# Get File
f = file(filename, "w")

# Create Column
for attrib in geo.pointAttribs():
    attrib_count = attrib.size()
    if 1 != attrib_count:
        for i in range(0,attrib_count):
            if i > 2:   # if its a Multi Array
                f.write(attrib.name() + " [" + chr(94 + i) + "]" + separator) # ASCII to Char 
            else:
                f.write(attrib.name() + " [" + chr(88 + i) + "]" + separator) # ASCII to Char 
            
    else:
        f.write(attrib.name())
        f.write(separator)
f.write("\n")

# Insert Points in File
for point in geo.points():
    for attrib in geo.pointAttribs():
        attrib_count = attrib.size()
        if 1 != attrib_count:
            for i in range(0,attrib_count):
                f.write(str(point.attribValue(attrib)[i]) + separator)
        else:
            f.write(str(point.attribValue(attrib)))
            f.write(separator)
    f.write("\n")
    
# Save the CSV File    
f.close()
Edited by mandrake0 - June 17, 2018 17:40:33

Attachments:
csv_export.hda (3.8 KB)

User Avatar
Member
536 posts
Joined: July 2009
Offline
Thanks for this. Much appreciated.
User Avatar
Member
4 posts
Joined: Dec. 2015
Offline
The “Game Development Toolset” also includes a “CSV Exporter”
https://www.sidefx.com/tutorials/game-development-toolset-overview/ [www.sidefx.com]

The HDA python script itself is https://github.com/sideeffects/GameDevelopmentToolset/blob/Development/otls/rop_csv_exporter.hda/gamedev_8_8Driver_1rop__csv__exporter/PythonModule [github.com]
  • Quick Links