Thanks, I sent many RFEs regarding COPs also. Things like multi-threaded COPs cooking, multi-threaded thumbnail generation like Nuke, GPU cooking support (the default GPU option is not working, bugs submitted), ability to write pixel shader filters and more. As always SESI knows best
If you want to RFE OpenCL COP, the ID you can reference is 83299.
Found 1559 posts.
Search results Show results as topic list.
Work in Progress » OpenCL Wrangle COP: Image Manipulation on the GPU using OpenCL
- animatrix_
- 4528 posts
- Offline
Work in Progress » OpenCL Wrangle COP: Image Manipulation on the GPU using OpenCL
- animatrix_
- 4528 posts
- Offline
This operator allows you to run an OpenCL kernel as part of your COP network. Depending on the GPU, some operators can be orders of magnitude faster than even VEX.
In this case OpenCL is 192 times faster than VEX on GTX 970. Please note that the actual cooking time for the VEX node is much longer (~77s for 100 iterations vs 40s for 10000 iterations) than what the status bar is showing. The cooking timer is shown long after I set iterations to 100 as can be seen in the video.
In this case OpenCL is 192 times faster than VEX on GTX 970. Please note that the actual cooking time for the VEX node is much longer (~77s for 100 iterations vs 40s for 10000 iterations) than what the status bar is showing. The cooking timer is shown long after I set iterations to 100 as can be seen in the video.
Edited by animatrix_ - 2017年6月28日 02:44:58
Work in Progress » C++ Wrangle: The Last Frontier In Custom Tool Development From Within Houdini
- animatrix_
- 4528 posts
- Offline
Houdini Learning Materials » Group Edges by object.
- animatrix_
- 4528 posts
- Offline
Houdini Indie and Apprentice » Select two points from group for "find shortest path"
- animatrix_
- 4528 posts
- Offline
I wrote this in VEX that does what you are asking:
http://orbolt.com/asset/animatrix::selectRandom::1.00
Then you can use the resulting group in your Group field parameter.
http://orbolt.com/asset/animatrix::selectRandom::1.00
Then you can use the resulting group in your Group field parameter.
Houdini Indie and Apprentice » Select two points from group for "find shortest path"
- animatrix_
- 4528 posts
- Offline
If you have the group, you can refer to a specific element inside the Group fields or use VEX to filer this group and save the start and end point as a detail attribute and read this directly.
Houdini Learning Materials » Adding area attributes for each piece primitive to new attirbute
- animatrix_
- 4528 posts
- Offline
I made an HDA for this that deletes prims by area individually, by connectivity or keeping the largest N pieces, with the ability to invert, keep points, etc:
Houdini Lounge » Quadrangulate the model
Technical Discussion » select the largest in each group
- animatrix_
- 4528 posts
- Offline
To check all point groups for point attribute “attrib”, you can write something like this inside AttribWrangle SOP in Detail Mode to gather them in a point group called “maxvals”:
string groups [ ] = detailintrinsic ( 0, "pointgroups" ); float maxvals [ ]; int pts [ ]; resize ( maxvals, len ( groups ) ); resize ( pts, len ( groups ) ); foreach ( int index; string g; groups ) { maxvals [ index ] = -1e10; int elements [ ] = expandpointgroup ( 0, g ); foreach ( int elem; elements ) { float val = point ( 0, "attrib", elem ); if ( val > maxvals [ index ] ) { maxvals [ index ] = val; pts [ index ] = elem; } } } foreach ( int pt; pts ) setpointgroup ( 0, "maxvals" , pt, 1 );
Houdini Lounge » iMacPro, Metal2 and beyond --> -->
- animatrix_
- 4528 posts
- Offline
Technical Discussion » Matrix orientation using wrangles / vops
- animatrix_
- 4528 posts
- Offline
There are many ways to do this but if you don't wanna write code you can use Extract Transform Object.
Technical Discussion » Viewport Screenshot
- animatrix_
- 4528 posts
- Offline
Thanks Mark that's what I wanted to do. I was told before it couldn't be done.
ID #72062
I thought once I launch flipbook, I can't control mplay anymore. Any idea how would this look like in pseudo code?
ID #72062
I thought once I launch flipbook, I can't control mplay anymore. Any idea how would this look like in pseudo code?
Technical Discussion » Viewport Screenshot
- animatrix_
- 4528 posts
- Offline
Can we now both launch the flipbook window and also save the result on disk in H16? Before it wasn't possible. For example auto save flipbook on disk while also showing it interactively flipbooking using mplay?
Houdini Lounge » Is coding required for quality vfx in Houdini?
- animatrix_
- 4528 posts
- Offline
tricecold
IMHO Yes.I don`t have one shot where I have not written at least a single line of vex. I am not a mathematician either.
+1000
Technical Discussion » chops wrangle - access min/max value of a channel?
- animatrix_
- 4528 posts
- Offline
tamte
as a side question, while talking about Channel VOP/Wrangle CHOP, this seems to be based on the old vopchop, is there a plan to make a CVEX version?
Or even something more customized that'd allow for binding(in/out) channels or channel groups by name/pattern? Like Volume VOP allows for volumes, that would be invaluable
+1
Houdini Lounge » Houdini in comparision to 3ds Max?
- animatrix_
- 4528 posts
- Offline
tricecold
Usually I end up saying, use whatever software you are comfortable with to deliver the shot, but I honestly think, apart from animation (because I have no Houdini animation experience) , there really isnt a reason to use any other software then Houdini imho.(convert from maya since 2010)
+1000
Houdini Lounge » Naiad theme for H16 (Circular nodes - one shape to rule them all)
- animatrix_
- 4528 posts
- Offline
jason_iversen
This appeared elsewhere - I cannot take credit for it, except for lifting it shamelessly without the author's permission.import json def drawOutline( outline, vex_func_name ): vexcode = "void {}() {}\n".format(vex_func_name,'{') vexcode += ' int pr,pt;\n' vexcode += ' pr = addprim(0,"poly");\n' for p in outline: vt = " set( {}, {}, 0 )".format(*p) vexcode += " pt = addpoint(0,{});\n".format(vt) vexcode += " addvertex(0,pr,pt);\n" vexcode += "}\n" vexcode += "{}();\n\n".format(vex_func_name) return vexcode import math def drawLine( line, vex_func_name ): vexcode = "addattrib(0,\"point\",\"tangent\",{0,0,0});\n" vexcode += "void {}() {}\n".format(vex_func_name,'{') vexcode += ' int pr,pt;\n' vexcode += ' pr = addprim(0,"polyline");\n' for p in line: x,y,theta = p theta = hou.hmath.degToRad(theta) vt = " set( {}, {}, 0 )".format(x,y) vexcode += " pt = addpoint(0,{});\n".format(vt) vexcode += " setattrib(0,\"point\",\"tangent\",pt,-1, set( {},{},0 ) );\n".format(math.cos(theta),math.sin(theta)) vexcode += " addvertex(0,pr,pt);\n" vexcode += "}\n" vexcode += "{}();\n\n".format(vex_func_name) return vexcode shapecode = hou.pwd().inputs()[0].parm('shape_json').eval() shape = json.loads( shapecode ) outline = shape['outline'] code = drawOutline( outline, "outline" ) flags = shape['flags'] flagcode = '' for flag in flags.keys(): flagoutline = flags[flag]['outline'] funcname = 'flag_{}'.format(flag) flagcode += drawOutline( flagoutline, funcname ) code += flagcode code += drawLine(shape['inputs'],'inputs') code += drawLine(shape['outputs'],'outputs') return code
Amazing code man, thx
Houdini Lounge » Naiad theme for H16 (Circular nodes - one shape to rule them all)
- animatrix_
- 4528 posts
- Offline
mtucker
We decided not to spend the time making a user friendly toolset for creating custom node shapes with H16. We knew there would be a lot of excitement about doing this, but for a variety of reasons we are not claiming to “officially” support custom node shapes (in other words if you read the rest of this thread, try it, and have trouble, don't contact support… it will have to be a “community effort” on this forum). So with those caveats, here's a description of the node shape file format I posted to the Houdini 16 alpha forum…
I'm sure you'll all figure it out eventually anyway, so I might as well save you some time. Here is the unofficial annotated guide to the Houdini node shape file format. The contents are the “squared.json” file from $HFS/houdini/config/NodeShapes. Any .json file you put in config/NodeShapes in your HOUDINI_PATH will be loaded as a shape. You may want to keep the “center” of your shape around (0.5, 0.15). It might be okay if you don't, but no promises. Similarly, you're on your own if you make really big or really small shapes.{ # The "name" is the value that you must set in the "NodeShape" user data # on a node to make it use this shape. Generally we match this "name" to # the JSON file name, but this is not required. If a duplicate name is found, # the one found last in the HOUDINI_PATH will "win". "name": "squared", # The outline of the actual node body. # Note that there is nothing that requires the flags to line up in any # way with the node body. # Anywhere you see "outline", there should be an array of two-value # arrays representing point positions. "outline": [ [ 0, 0.3 ], [ 1, 0.3 ], [ 1, 0 ], [ 0, 0 ] ], # Simply polygon definitions for the flag indicators. The assignment of # specific flags (display, render, etc) to the generic "0", "1", "2" flag # slots is done by the files in $HH/config/NodeShapeFlags. This separation # allows the same node shape to be used in any node context. "flags": { "0": { # Note that there is nothing requiring these flag outlines to line up # with the node body outline (though in our default set of shapes we # have chosen to make them line up). "outline": [ [ 0.1108, 0 ], [ 0, 0 ], [ 0, 0.3 ], [ 0.1492, 0.3 ] ] }, "1": { "outline": [ [ 0.2519, 0 ], [ 0.1108, 0 ], [ 0.1492, 0.3 ], [ 0.2894, 0.3 ] ] }, "2": { "outline": [ [ 0.8508, 0 ], [ 0.7108, 0 ], [ 0.7492, 0.3 ], [ 0.8892, 0.3 ] ] }, "3": { "outline": [ [ 1, 0 ], [ 0.8508, 0 ], [ 0.8892, 0.3 ], [ 1, 0.3 ] ] } }, # The "inputs" and "outputs" arrays define paths. The connectors in and # out of the node are spaced even along this path (or the path itself is # drawn in the case of nodes like Merge). # Each entry in the path has three values. The first two values are the # position, the third value indicates the tangent direction for wires # (expressed as degrees counter-clockwise from 3 o'clock). # Points on this path shouldn't be placed too close together. There is # code to guard against this when loading the shape, but our default # shapes are all "well behaved" in this regard so the code to guard # against tightly packed points may not work perfectly. YMMV. "inputs": [ [ 0.095, 0.385, 90 ], [ 0.365, 0.385, 90 ], [ 0.635, 0.385, 90 ], [ 0.9051, 0.385, 90 ] ], "outputs": [ [ 0.095, -0.085, 270 ], [ 0.365, -0.085, 270 ], [ 0.635, -0.085, 270 ], [ 0.9051, -0.085, 270 ] ], # Two points for the lower left and upper right corners of where the node # icon should appear. "icon": [ [ 0.38, 0.03 ], [ 0.62, 0.27 ] ] }
Would be nice to have a Python tool to automate this perhaps using a series of polylines in the viewport with specific names
Houdini Lounge » Naiad theme for H16 (Circular nodes - one shape to rule them all)
- animatrix_
- 4528 posts
- Offline
Yes this style is not for everyone. If people prefer the default shapes more power to them.
Houdini Lounge » Naiad theme for H16 (Circular nodes - one shape to rule them all)
- animatrix_
- 4528 posts
- Offline
Daryl Dunlap
I dont get it…
You trade visual indicator of node purpose for a 30-40 character text string?
That's a strange comparison. Having a different shape for certain nodes doesn't help any more than the default node type name which i always keep as part of the node name.
I use long node names for HDAs, to be more descriptive. So not sure how the default node shapes will alleviate this.
-
- Quick Links