Although there are more elaborate ways to process files in TOPs by now, here is an example on how to open, scale and save a bunch of OBJ-files from a folder right in SOPs.
Create a python node inside a geometry container with three parameters: a float named scale
and two strings: dirimport
and dir_export
.
import os
geo = hou.pwd().geometry()
scale = hou.evalParm('scale')
dir_imp = hou.evalParm('dir_import')
dir_exp = hou.evalParm('dir_export')
for root, dirs, files in os.walk(dir_imp):
for file in files:
if file.endswith('.obj'):
path_import = os.path.join(root, file)
path_export = dir_exp + file
geo.loadFromFile(path_import)
for point in geo.points():
pos = point.position() * scale
point.setPosition(pos)
geo.saveToFile(path_export)
import os
loads a module to work on the underlying operating system, in our case reading from and writing to files on our hard disk.
hou.pwd().geometry()
makes the geometry of our current node accessible. hou.evalParm
evaluates the parameters values.
The nested for
loops iterate through folders and files using os.walk
on the directory its given to.if file.endswith
is a condition that filters files by their ending such as *obj.
After defining import and export paths, we read the mesh files from the import folder using geo.loadFromFile
and iterate through the points to scale our geometry.
Lastly geo.saveToFile
writes our scaled geometry back to the export path.