Mirosław Piekutowski
POLPPMnietek
About Me
EXPERTISE
Freelancer
INDUSTRY
Advertising / Motion Graphics
Connect
LOCATION
Warsaw,
Poland
WEBSITE
Houdini Skills
Availability
Not Specified
Recent Forum Posts
any way to export points to .prt file Jan. 23, 2023, 9:14 p.m.
I found this python code:
https://forums.thinkboxsoftware.com/t/houdini-exporter/12527/8 [forums.thinkboxsoftware.com]
after some changes i get rid of errors and script produce some files.
This is a code:
I can read this .prt files in max but data is incomplete. KrakatoaPRTLoader gives error "zlib_reader::read() Unexpected EOF"...
Any thoughts?
https://forums.thinkboxsoftware.com/t/houdini-exporter/12527/8 [forums.thinkboxsoftware.com]
after some changes i get rid of errors and script produce some files.
This is a code:
import sys, struct, zlib node = hou.pwd() geo = node.geometry() frameNum = str(hou.intFrame()).zfill(4) OutFilename = 'H:/Particles_%s.prt' %frameNum particleCount = len(geo.points()) out = open(OutFilename, 'wb') out.write(struct.pack("B", 0xc0)) # Magic numbers out.write(struct.pack("B", 0x50)) out.write(struct.pack("B", 0x52)) out.write(struct.pack("B", 0x54)) out.write(struct.pack("B", 0x0d)) out.write(struct.pack("B", 0x0a)) out.write(struct.pack("B", 0x1a)) out.write(struct.pack("B", 0x0a)) out.write(struct.pack("<I", 56)) # Header Length out.write(struct.pack("@32s", b"Extensible Particle Format" )) #Format Name out.write(struct.pack("<I", 1)) # Version Number out.write(struct.pack("<Q", particleCount)) # Particle Count out.write(struct.pack("<I", 4)) # Reserved 4 bytes out.write(struct.pack("<I", 6)) # Number of Channels out.write(struct.pack("<I", 44)) # Channel definition entry length # Write Channel Definitions out.write(struct.pack("@32s", b"Position" )) #Name of Channel out.write(struct.pack("<I", 4)) # Data type out.write(struct.pack("<I", 3)) # number of values per particle for this channel out.write(struct.pack("<I", 0)) # Data offset of this channel out.write(struct.pack("@32s", b"Orientation" )) #Name of Channel out.write(struct.pack("<I", 4)) # Data type out.write(struct.pack("<I", 4)) # number of values per particle for this channel out.write(struct.pack("<I", 12)) # Data offset of this channel out.write(struct.pack("@32s", b"Scale" )) #Name of Channel out.write(struct.pack("<I", 4)) # Data type out.write(struct.pack("<I", 3)) # number of values per particle for this channel out.write(struct.pack("<I", 28)) # Data offset of this channel out.write(struct.pack("@32s", b"ShapeIndex" )) #Name of Channel out.write(struct.pack("<I", 1)) # Data type out.write(struct.pack("<I", 1)) # number of values per particle for this channel out.write(struct.pack("<I", 40)) # Data offset of this channel out.write(struct.pack("@32s", b"MtlIndex" )) #Name of Channel out.write(struct.pack("<I", 1)) # Data type out.write(struct.pack("<I", 1)) # number of values per particle for this channel out.write(struct.pack("<I", 44)) # Data offset of this channel out.write(struct.pack("@32s", b"Color" )) #Name of Channel out.write(struct.pack("<I", 4)) # Data type out.write(struct.pack("<I", 3)) # number of values per particle for this channel out.write(struct.pack("<I", 48)) # Data offset of this channel data = [] m = hou.Matrix4(( 1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1 )) # Transform matrix to transform into 3DSMax space for point in geo.points(): #Transform Position pos = point.position() pos = pos*m data.append(pos) #Transform Orientation ov = point.attribValue('orient') x = ov[0] y = ov[1] z = ov[2] w = ov[3] orient = hou.Quaternion(x, y, z, w) orientM = hou.Matrix4(orient.extractRotationMatrix3()) newMatrix = orientM*m orient = hou.Quaternion(newMatrix) data.append(orient) data.append(point.attribValue('pscale')) data.append(point.attribValue('meshID')) data.append(point.attribValue('MtlIndex')) z = zlib.compressobj() for p in data: if type(p) is int: x = (struct.pack("<i", p)) compressedData = z.compress(x) out.write(compressedData) else: for v in p: x = (struct.pack("<f", v)) compressedData = z.compress(x) out.write(compressedData) compressedData = z.flush() out.write(compressedData) out.close()
I can read this .prt files in max but data is incomplete. KrakatoaPRTLoader gives error "zlib_reader::read() Unexpected EOF"...
Any thoughts?
any way to export points to .prt file Jan. 23, 2023, 6:08 p.m.
I need a way to get particles from Houdini to pFlow in 3ds Max.
And found that tyFlow can read .prt files. So I need to get out .prt from Houdini.
I searched the whole internet and only found this old repo:
https://github.com/flipswitchingmonkey/houdini_PRTROP [github.com]
I even tried to build this for Houdini 19 but no luck...
Any other way?
And found that tyFlow can read .prt files. So I need to get out .prt from Houdini.
I searched the whole internet and only found this old repo:
https://github.com/flipswitchingmonkey/houdini_PRTROP [github.com]
I even tried to build this for Houdini 19 but no luck...
Any other way?
How to limit Geomtry Wrangle in DOP to specific object Jan. 23, 2023, 6 p.m.
Thank you, sir