Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


jamesr last won the day on November 8 2020

jamesr had the most liked content!

Personal Information

  • Name
  • Location
    Los Angeles

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

jamesr's Achievements


Newbie (1/14)

  • Week One Done
  • One Month Later
  • One Year In Rare

Recent Badges



  1. nice looks like you've got it. here's another solution using just the one wrangle like you tried originally: (Run Over: Primitives) int pts[] = primpoints(0, i@primnum); // List of points on the current prim int numpt = len(pts); for (int i = 0; i < numpt; ++i) { float grad = float(i) / (numpt-1); float ramp = chramp("ramp", grad); float pscale = fit01(ramp, chf("pscale_min"), chf("pscale_max")); setpointattrib(0, "pscale", pts[i], pscale); } primpoints.hiplc
  2. Sometimes it can help to turn off the "Detriangulate" option. Otherwise, check your input mesh, change the seed value of the fracture points until it stops breaking (not ideal, i know!)
  3. jamesr

    MPlay Batch

    Hey everyone, if you're using MPlay to view and write out multiple flipbooked image sequences, you should check out MPlay Batch. It's a package that adds on an extra menu to MPlay that has options for quickly writing all the in-memory sequences to disk either as an image sequence, a video, or both! If you wind up giving it a try (or have any questions) please let me know what you think. Thanks!
  4. In case anyone else runs across this in the future, you need to escape the $F like so: imgsave -a "/tmp/test/test1.\$F.jpg" And if running from Python hou.hscript("imgsave -a "/tmp/test/test1.\$\F.jpg")
  5. Not sure what you mean by attribute weirdness, but if you're finding that sometimes the python nodes aren't cooking how you want, try setting their evaluation to "generate" and see if it works better. This works fine if your graph doesn't need to be dynamic. Also, double check your attribute names. You're calling it "strAttrib" in the python script top, and "strAttr" in the attribute create. (Not sure if this is on purpose)
  6. I've been playing with PDG for a little bit, and am by no means a wizard, but if you want to remove work items, you can try using the "Filter By Expression" TOP. Set the operation to "Remove Work Item". Not sure what exactly the filter node does behind the scenes, but it might actually be similar. In a Python Script TOP, you can use the handy shorthand syntax `@myattribute` or for strings "`@mystringattribute`" There is an equivalent in python expressions, but it's not as elegant (I could be missing something similar, but this has been working for me). It's basically just the long way you'd typically use in a Python Script TOP: pdg.workItem().stringAttribValue("myattribute") In the netbox I'm just faking the result of a file pattern top. I have 2 generic generators making work items that get assigned a file name. The left branch makes "file#.txt" and the right "file#_proxy.txt". They get merged together to emulate something like the result of a file pattern. The Filter by Expression top has the following for its Filter Expression: "proxy" in pdg.workItem().stringAttribValue("myfile") filter_by_expression.hip
  7. If I am understanding your question correctly, you just need to use 2 different Primitive Groups.
  8. Hi link, please see the attached hip file. Hope it helps! Let me know if anything is unclear. speed_calc_jamesr.hipnc
  9. Using instances() with hou.nodeType() to grab node instances is really nice. Does anyone know a way to grab all the instances for an operator type with a version string in the operator type name? ie. jamesr::myasset::2.00 Since the version is in the type name itself, it seems like you have to specify the version as well in order for it to work, ie hou.nodeType("jamesr::Object/myasset::2.00") instead of just hou.nodeType("jamesr::Object/myasset") I was hoping there must be, since you can create nodes without specifying the version like hou.node("/obj").createNode("jamesr::myasset") I've tried using hou.preferredNodeType(), but it still seems to required the version string as well. When testing it on a builtin node who has multiple definitions including a version string like "rainbow" with hou.preferredNodeType("Vop/rainbow") it works fine. I could always use a [x for x in hou.node("/obj").children() if "jamesr::myasset" in x.type().name()] type of thing, or get the node type from an existing node, but I was just wondering if it is possible this way. If anyone has any relevant posts I might have missed that I could check out, that would be great too. Thanks!
  10. Here's an example to go along, if it helps. prim_l_x_w.hip
  11. Does anyone know of a hotkey/option to mirror a component selection on a symmetrical mesh? I've found myself selecting stuff in the viewport quite a bit the last few days, but can't seem to find anything. Edit: I had forgotten about Attribute Mirror SOP, which is pretty useful for what I'm after, however if someone knows an answer to the above question that'd be cool too.
  12. Because vellum configure grains hda does not create constraints between particles
  13. There's a few ways to do this. Here is a simple one using a SOP Solver in the AutoDopNetwork. This way allows a nice fade in/out over time by accumulating a value into an attribute called "illume". The disadvantage of doing the fading like this in a SOP solver is that you need to sim each time you want to adjust the fading. Alternatively, you could also store the frame where the sphere first contacts or has enough influence on a particle, and then post-sim use that to control fading on/off. Changed/added nodes in gold. ParticlesTest_v032_jamesr1.hip ParticlesTest_v032_jamesr2.hip
  14. Sure. In your note you say "by bouncing from the surface" you mean act like a normal collider, just inside right? Like have the particles bounce around the inside? That's how I read it. Added/changed nodes are in gold. pop_inside_issue_jamesr.hip
  • Create New...