Welcome to od|forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


  • Content count

  • Joined

  • Last visited

  • Days Won


Community Reputation

311 Excellent

About f1480187

  • Rank

Personal Information

  • Name F1

Recent Profile Visitors

1,699 profile views
  1. Use Performance Monitor for proper testing. It's a great profiling tool. Press "Record", make something to cook, then stop recording and inspect what was going there. It's very artist-friendly, you can learn it in five minutes. For quick looks, press MMB on any node and see Last Cook timer. For simple comparisons, I usually Merge nodes and make a non-critical change in common upstream node, like, rename it. So, all Merge's inputs will cook in same time and with similar conditions. For some reason, Houdini shows node' own cook times, which usually a fraction of milliseconds for non-atomic subnets and assets. You need to dive inside. For example, to see actual cook time of Wrangle, dive inside it and MMB on it's Attribute VOP node. Always make computationally heavy tests. Seconds or even minutes. Comparing milliseconds is prone to temporary anomalies and caching stuff. Also, it's good practice to do several tests with different conditions. Changing load in linear way can affect cook times in non-linear manner. By the way, sometimes drawing heavy geometry in viewport takes more time than actual cook. Performance Monitor shows viewport statistics too.
  2. The slick snippet copies primitives N times working in Primitive mode. This is faster than copying connected geometry when operating on Detail level: 3.5 vs 4.5 seconds for 500 Pigheads. But if you use Fuse after that, you will wait another 13 seconds. Not a big deal, but you can fuse something that shouldn't be fused, like, neighboring bricks ideally aligned with each other, or disconnected points which wasn't fused intentionally. And Copy and Transform node did whole stuff for 0.5s, 7 to 9 times faster than VEX! On real task, you may want to copy some attributes on the copies. You will have to keep track of entity numbers, manipulating arrays of integers and managing counter variables. It can be painful and hard to debug. Computing copy transformations will grow quickly too. If you don't generate something (see a good example of such generator asset), I see no reason to duplicate geometry with VEX, it's slower, more difficult, and more limited than using Copy when possible.
  3. Here is another two million: https://grabcad.com/library
  4. You need to recreate everything from scratch by looping over geometry entities. // Detail wrangle. // Compute new position based on copy number and translate parameter. vector copypos(vector pos; int copynum; vector copyt) { return pos + copyt * copynum; } for (int copynum = 1; copynum < 5; copynum++) { // Copy point cloud from input. for (int i = 0; i < @numpt; i++) { addpoint(0, copypos(point(0, "P", i), copynum, {2, 0, 0})); } // Copy primitives to new points. for (int i = 0; i < @numprim; i++) { int new_prim = addprim(0, "poly"); foreach (int pt; primpoints(0, i)) { int new_pt = pt + @numpt * copynum; addvertex(0, new_prim, new_pt); } } } It's a waste of time, if you have no good reason to do such thing. Computing transform attributes on copy points with VEX and then copying input geo with Copy node is a more straightforward way. vex_duplicate.hipnc
  5. Easy with Convert Line node. Every edge then will have unique primitive, grouping is trivial. After that, copy edge group to original geometry. random_edges.hipnc
  6. Create proxy grid, Ray it onto surface, Point Deform final geo with the grid used as lattice. conform_sim.hipnc
  7. I used https://www.draw.io/ couple of times. Does it work on mobiles well, in mobile browsers? It was the first search result which work for me, so I don't know if there is better alternatives. I found it quite easy to use and result was plausible enough to be used in web-demo purposes.
  8. In Houdini 16 set material flag on the Occlusion node placed inside /mat context and use it as the material. To make the same in SHOPs, drop Material Shader Builder and connect Occlusion to Cf. occlusion.hipnc
  9. Turn off backfaces when model: D > Optimization > Culling > Remove Backfaces. If it is an orientation issue (tube is reversed, probably), use Reverse node.
  10. Depends on what you meant by that. From the information provided, you probably don't need two-sided shader (1, 2) but assign material to different sides of box. If you add another set of material nodes and set their Group to another primitive number, it should work for you.
  11. Here is @eetu's render-time booleans. Didn't try it myself yet. If you have proper watertight solid in STEP, you may try to export it as FBX from Rhino (and if it is Solidworks model, it can be exported to STEP from there). It should output good geometry with no holes, it also can be divided at export time, like with Bricker in Divide SOP, but with perfect normals computed from NURBS surface. In that case you won't get any long and narrow polygons which shade badly in Mantra. Good geometry can be clipped and poly-capped quite well, even H15.5's Cookie may work.
  12. This setup seems a bit old and too complex. It may be easier to go with a simpler version, here is example: dominoes.hipnc If you have a bunch of textures, you may use single shader instead of many, and use override on Material nodes. It will not be visible in viewport, though.
  13. @reelinspirations, I didn't get the part about object based nodes, but try to use Switch SOP with Null as another input and set keyframe on Input.
  14. Try getbbox function. // Point wrangle. vector min, max; getbbox(0, min, max); To visualize: addpoint(0, min); addpoint(0, max);
  15. Here is one way: axial_extrude.hipnc There is no N stored on your geometry, so, nothing to fix. You may compute it from scratch with Normal node.