
Yunus Balcioglu
animatrix_
About Me
Senior FX Technical Director @ Industrial Light & Magic | Feature film credits include The Lord of the Rings: The Rings of Power, Marvel's Eternals, Star Wars: The Rise of Skywalker, X-Men: Dark Phoenix, X-Men: Apocalypse, Aquaman, Alien: Covenant, Pirates of the Caribbean, Justice League and many m... more
Senior FX Technical Director @ Industrial Light & Magic | Feature film credits include The Lord of the Rings: The Rings of Power, Marvel's Eternals, Star Wars: The Rise of Skywalker, X-Men: Dark Phoenix, X-Men: Apocalypse, Aquaman, Alien: Covenant, Pirates of the Caribbean, Justice League and many more. less
EXPERTISE
Technical Director
INDUSTRY
Film/TV
Houdini Skills
ADVANCED
Procedural Modeling | Digital Assets | Mantra | Pyro FX | Fluids | Destruction FX | VEX | Python
INTERMEDIATE
Realtime FX
Availability
Not Specified
My Gallery
My Talks
Recent Forum Posts
C++ Wrangle: The Last Frontier In Custom Tool Development From Within Houdini July 12, 2025, 12:10 p.m.
Umang_Rajanimatrix_isn't it already available with inlinecpp?Rusoloco73
Why in the name of Jesus this thing its not in Houdini by default
I have an RFE from 9 years ago at the time of the creation of this node: #36356. Please bump it up so SESI can add this to H21
Implementing this would require shipping Houdini with C++ compilers, which may be one reason it's still missing, but I think it's absolutely worth it.
You still need to install the right version of MSVC and the Windows SDK (on Windows, for example), so it's not exactly plug-and-play.
C++ Wrangle: The Last Frontier In Custom Tool Development From Within Houdini July 11, 2025, 3:03 a.m.
Rusoloco73
Why in the name of Jesus this thing its not in Houdini by default
I have an RFE from 9 years ago at the time of the creation of this node: #36356. Please bump it up so SESI can add this to H21

Implementing this would require shipping Houdini with C++ compilers, which may be one reason it's still missing, but I think it's absolutely worth it.
How to procedurally slide edges? July 10, 2025, 3:35 p.m.
Hi,
Here is one way using Python (before VEX had half edges). Just add a group (string) and amount (float ) parameters.
Here is one way using Python (before VEX had half edges). Just add a group (string) and amount (float ) parameters.
node = hou.pwd ( ) geo = node.geometry ( ) def filterEdgeGroup ( edgeGroup ): group = [] names = edgeGroup.split ( ' ' ) for name in names: try: edges = geo.globEdges ( name ) except hou.OperationFailed: edges = ( ) for edge in edges: p0 = edge.points ( ) [ 0 ] p1 = edge.points ( ) [ 1 ] try: isValidEdge = geo.findEdge ( p0, p1 ) except: isValidEdge = False if not isValidEdge: continue if len ( edge.prims ( ) ): group.append ( edge ) return group def getPolysFromEdges ( edges ): polys = [] for edge in edges: polys += edge.prims ( ) return polys def getPointsFromEdges ( edges ): points = set ( ) for edge in edges: points.add ( edge.points ( ) [ 0 ] ) points.add ( edge.points ( ) [ 1 ] ) return points def getPointsFromPolys ( polys ): points = set ( ) for poly in polys: verts = poly.vertices ( ) for vert in verts: points.add ( vert.point ( ) ) return points def isValidEdge ( point1, point2 ): try: group = geo.globEdges ( "p{0}-{1} ".format ( point1, point2 ) ) except hou.OperationFailed: return False for edge in group: p0 = edge.points ( ) [ 0 ] p1 = edge.points ( ) [ 1 ] try: return geo.findEdge ( p0, p1 ) != None except: return False def getEdgePointsOfPoint ( point ): points = hou.hscriptExpression ( "pointneighbours(\"" + node.inputs ( ) [ 0 ].path ( ) + "\", " + str ( point ) + ", 1)" ) points = points.split ( ' ' ) points = map ( int, points ) edgePoints = set ( ) for pt in points: if isValidEdge ( point, pt ): edgePoints.add ( geo.iterPoints ( ) [ pt ] ) return edgePoints group = hou.evalParm ( "group" ) amount = hou.evalParm ( "amount" ) edges = filterEdgeGroup ( group ) if not edges: raise hou.NodeWarning ( "No valid edges were found in the group." ) polys = getPolysFromEdges ( edges ) points = getPointsFromEdges ( edges ) outerPoints = getPointsFromPolys ( polys ) outerPoints -= points if not outerPoints: raise hou.NodeWarning ( "No valid edges were found in the group." ) first = outerPoints.pop ( ) source = { first } innerPoints = { first } while source: edgePoints = getEdgePointsOfPoint ( source.pop ( ).number ( ) ) shared = edgePoints.intersection ( outerPoints ) source = source.union ( shared ) innerPoints = innerPoints.union ( shared ) outerPoints = outerPoints.difference ( edgePoints ) goals = outerPoints if ( amount < 0 ): goals = innerPoints for point in points: edgePoints = getEdgePointsOfPoint ( point.number ( ) ) target = edgePoints.intersection ( goals ) if target: p0 = target.pop ( ).position ( ) p1 = point.position ( ) point.setPosition ( p1 + ( p0 - p1 ) * abs ( amount ) )