Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by MrScienceOfficer

  1. A bit late, but there's a few choices for custom handles, though I'm not sure how to create custom manipulators that would work the same as the built in ones (meaning they would show up in the handles section for the HDAs). The MSS_CustomBrushState sample shows how to create a paint node. The ways Houdini implements handles, is with 'states'(BM/BM_State is a good place to look to learn a bit more). States are event handlers, tied to specific nodes, all nodes have them but most only have a generic implementation. If you register a state(MSS_SingleOpState is the best choice for a SOP, though BM_SingleOpState will work for OBJs and SOPs but is a bit more effort to work with) , and specify the name of the node, the state automatically associates with it (just select the node and hit enter in the viewport), you can create states for custom HDA's and even override states for built in nodes. States can also handle rendering, so by creating a state, rendering a custom handle and defining the interactions and plugging the resulting values into parms you can create a completely customized handle for any type of node. This is basically how Houdini handles are implemented but I think there are a few missing pieces preventing the creation of a proper handle though. You could also create a DM_MouseHook and DM_SceneHook to create and render anything you wanted without it being tied to any particular node type.
  2. knitting

    Adding a PolyFill before the second input geometry on the TopoBuild, so you have something to draw on, makes for a fantastic quick fix topology tool.
  3. FEM muscle external geo, Physical simulation

    I didn't get the ceatevarmap warning when I opened the file. Adding bones slows the simulation down substantially for a few reasons. One is that the static solver is now being used and there is one more then object in the simulation so collision detection is happening. Two is that the bones are using a deforming geometry being recreated for each substep(worst case scenario) for collision detection, if you go to tissue_solver/dopnet1/BONES and uncheck "Use Deforming Geometry" things speed up a bit, and if you change "Collision Detection" to Use Surface Collisions it really speeds up, however if you were using a full skeleton and muscle system this would likely be much slower to solve.
  4. Hide/unhide node guides in the viewport

    import toolutils scene_viewer = toolutils.sceneViewer() viewport_settings = scene_viewer.curViewport().settings() toggle = not viewport_settings.guideEnabled( hou.viewportGuide.NodeGuides ) viewport_settings.enableGuide( hou.viewportGuide.NodeGuides, toggle ) This should work.
  5. Maths Book for Houdini

    I would recommend "Game Engine Architecture" by Jason Gregory isbn: 978-1466560017 There's only a like a single chapter directly related to math, but it goes over every major concept, vectors, quaternions, matrices. It's very well done, and it's not focused on proofs like most math books ( like we weren't going to believe them ). It's by far the best book I've read for learning how to work with 3D graphics applications, it goes over all the underlying concepts of computer graphics which is extremely useful for understanding and working with Houdini.
  6. Has anyone manged to get H16 to compile through the MSVC IDE. I can get it to compile using the sdl- flag(disabling security development life cycle something like that), but Houdini wont load the plug in. It throws the "UT_DSOVersion missing" error on startup. I'm just compiling the star sop sample, which does compile with hcustom. There must be some default flag MSVC sets the project by default that Houdini doesn't like, but I can't figure it out. Thanks
  7. Compiling H16 through Visual Studio IDE

    -DMAKING_DSO isn't written out when you call "hcustom --clflags". The plugin won't load without that defined.
  8. VEX function: uvunwrap // Accessing position and normals based on UV

    Send SESI that file, if you haven't already. That's really messed up.
  9. VEX function: uvunwrap // Accessing position and normals based on UV

    uvunwrap(@OpInput1,u, v, time, pos, nml) That should solve it, you should file a bug report for that. I'm pretty using @OpInput1 has been depreciated.
  10. Caskal Learning Thread

    Inspired work, well executed. Very cool.
  11. Funny, I was thinking much the same thing. I really want some nicely printed books of the documentation, one for the high level stuff and a reference books for all the nodes, VEX etc.. I would pay good money for that. There's so much information in the docs and it's simple impossible to read through it all when it's a tree of links, we really need it linearized, with pretty color pictures and a hard cover Though I would bet there's s some program out there that could convert the local documentation folders to a PDF... Apparently Adobe Acrobat can convert HTML to PDF.
  12. FrameChange EventCallback using HDK

    The sample for python wrappers is in the HOM folder. ../toolkit/samples/HOM/ObjNode_setSelectable.C It's very well commented and should walk you through the process. Any type prefixed with "PY_Py" is (in most cases) a wrapper to the CPython API. So if you need to look up documentation you need to remove the "PY_" and look up the type here https://docs.python.org/2/c-api/
  13. FrameChange EventCallback using HDK

    I've never seen anything. If you need to call into C++ on time change events outside of a node, it's probably best to just create a python wrapper into your plug in.
  14. python simple question

    # Get the selected nodes in a list nodes = hou.selectedNodes() # Loop over the selected nodes list for node in nodes : node.parm("px").setExpression("$CEX") node.parm("py").setExpression("$CEY") node.parm("pz").setExpression("$CEZ") In the second sample you were trying to index ( i[0] ) a node. Whereas, in the first code example, you were indexing the node list ( sel[0] ). A good way to learn python is printing things out for example, print type(i) would have told you that 'i' was an ObjNode and not a Parm like in the first example.
  15. wrapping geo like Wrap3

    That's beyond cool... Thank you so much for sharing, petz.
  16. Multithreading in Houdini

    That's a chapter from the book https://www.amazon.com/Multithreading-Visual-Effects-Martin-Watt/dp/1482243563 It's written Jeff Lait the Senior Mathematician at SESI. It's a good book, it's definitely worth reading... and it is definitely still relevant, a lot of it is the theory behind how Houdini works and how multi threading works in Houdini and the challenges thereof. However will it really help you with VEX? Probably not.
  17. Isolate just a point from point rings

    So you need to remove all the points from the point group except for one? I can't run Houdini on my laptop but I would say off hand the easiest way to do that would be something like this in a point wrangle if (@ptnum % NumberOfPointsOnARing > 0) i@group_topedges = 0; That should isolate the first point on the ring. Basically this uses the modulo operator to find the point number that divides without a remainder into the number of points in the ring. Under most circumstances it should work, however a sort sop for example would break it.
  18. Houdini 17 Wishlist

    Drag and Drop nodes onto shelf tools, to call the tool with that node in the kwargs dict.
  19. Can't get HDK to compile

    You need to use 2015. Definitely use the latest production build, if possible. Try that combination and see if it helps.
  20. Houdini 17 Wishlist

    Callbacks. Callbacks. No Polling for changes. Callbacks. I don't want to so much as breath without Houdini notifying me about it, in advance. Default State setting for HDAs to work for all states and dynamically generated radial menu for HDAs with multiple states. Event handling for customizable HDA states with override-able methods through the hdaModule(). Make Autodesk even more distraught over the complete annihilation of their "industry leading" rigging and animation tools!
  21. Houdini 16 Wishlist

    The visualers for attributes. Making those readable at any resolution can be tough. More visualers would be awesome. Custom selection visualers, like say you have a copy sop set as the guide geometry for an hda and the user can select points, this way you can show the user the end result of the selection instead of just the points. Or maybe just a call back for selections, since selecting doesn't cook the network. And callbacks for parameter changes caused by handles would be incredibly useful too.
  22. Mixed Mode Debugging

    Has anyone tried getting Mixed Mode debugging with Python Tools for Visual Studios to work? Houdini ships with 2.7.5 but it's compiled with msvc 14, which I must assume means SideFX compiles the binaries with likely significant source modifications. It seems like the only way Mixed Mode debugging between Python and C++ can work is if Houdini ships with the python symbols? Or am, as per usual, wrong?
  23. About VEX_example.C -> Make build-in VEX function?

    That should work.... Are you by chance trying to use a relative path to the dso? I did that, and it doesn't work, I don't think it's actually called from there, though I could be full of shit . The only other thing I can think of is that you didn't change the include guard and it's being ignored? I don't think anything needs to be added to HOUDINI_PATH for it to be found.
  24. VEX - converting ints and floats to strings

    I may be misunderstanding you, but I think what your looking for is floor(). https://www.sidefx.com/docs/houdini15.5/vex/functions/floor
  25. InlineCPP

    import inlinecpp inlinecpp.extendClass(hou.Geometry, "geo_merge_HOM_ext", "", [""" void mergePrimGroup(GU_Detail* gdp, const GU_Detail* src, const char* prim_grp) { gdp->merge(*src, src->findPrimitiveGroup(prim_grp)); } """]) "AttributeError: function ?mergePrimGroupy...yadadada not found" This error only occurs when "src" is const, or gdp isn't const. Basically if the const-ness of the GU_Detail args are mismatched the function "can't be found". Does anyone know anything about this? Thanks