Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Lol, you did the hard work. Peace.
  3. Letter Rising from Sand/grains COLLISION issues

    Thank you so much for your reply! I believed that i figured out the issue! I had NO IDEA about the open CL stuff. Theres a ton to learn in this amazing program, and i look forward to creating more! Thanks again!
  4. Today
  5. Hey! Nevermind! I figured it out! Works like a charm now with an object level HDA! Thank you very much!
  6. Run script in Command Line tools with Python

    Sure, here's a hip. The code is all inside the pythonscript node. It's the following: import os.path as op import subprocess hython_path = op.join(hou.expandString("$HFS"), "bin", "hython") hrender_path = op.join(hou.expandString("$HFS"), "bin", "hrender.py") hip_path = hou.hipFile.path() subprocess.Popen([hython_path, hrender_path, "-e", "-d", "mantra1", hip_path]) As for importing hou, it's not very straight forward. Besides adding the path to the .py file to your current python path, you need to also add the $HFS/bin folder to your PATH variable in order to correctly import the custom houdini C libraries. As described here http://www.sidefx.com/docs/houdini/hom/commandline.html subprocess_hython_odf.hip
  7. Oh... or do i "copy" my level generator graph and split it up? -> Create 2 GEOs at Object level -> Copy the graph into both of them -> One creates geo, one create point cloud -> Select both GEOs (in Object level) and create a subnet/digital asset?
  8. Oh man... My Houdini knowledge obviously is pretty basic. Lemme see if i can sum that up... I use a SOP approach, yes. I made multiple SOP HDAs to create a "level generator" - split up by their purpose and from basic to advanced. My basic construction elements are pretty simple like: Floor generator Pillar generator Floorboard generator ... These are used be the 2 main geo generators: Room Generator (creates a room based on a curve) Wall Generator (creates walls that are not a closed curve - to split up the room) My final HDA is the "Level Generator". This SOP imports a CSV File that contains data how to build the room (curve points) PLUS where to spawn objects (blueprints in UE4) I attached a screenshot to show an overview of the multiple HDAs. I actually don't know how do do this in object level... Do i need to create 2 Nulls in my Level Generator - one with Geo and one with a pointcloud and "object-merge" them into object level? And create a new HDA over this? I need a couple of parameters from each HDA (like material, Cd, etc.) as well. Maybe I'm thinking in a totally wrong direction here?
  9. source flip fluid with velocity

    Atoms response is the simplest route, otherwise In your geo network run your geo into (1) a volume node and then into a volume vop to set up your vector direction and noise, then in a secondary tree run (2) your geo into a vdb from polygons with like 0.1 voxel size with a fog vdb, then scatter points in that vdb. Then drop down a attribute from volume, set it to vector and set its name to "vel" both the trees will plug into the attribute from volume, scatter goes into points to apply attribute and the volume vop into the volumes to use, then drop down a volume rasterizeattributes with attributes set to "vel" and into a Null. You can test what its doing by using the usual volume trail sop and use the same points and volume rasterize outputs to check your velocity field. Just as an NB point in your volume vop you have to bind export to "vel" with what ever noise etc your adding. in your DOP network you can either use a volume source or popadvect by volumes. Volume source: set initialize to source flip and point the sop path to the out vel null you made, also change field to match and source volume/target field names to vel. pop advect is pre set up with vel. This gives you the ability to add alot of control, and is how they went through in in the master class/ or top 10 new features for 17 if i remember correctly. Below is the same applied to a FLIP Tank and emission from a geo object as mentioned using this method.
  10. Your instance point cloud and your instanced geometry should be two separate pieces of geometry on import so that you do not have this issue. My best guess is you are using the SOP based method with copy to points node to instance? If so try the the object based method. The object based method is less prone to have these type of errors as the elements are separated into different contexts and represent what you will see in your third party DCC more logically 1 to 1. In your HDA do it at the object level with a subnet. Include a geometry node that contains your point cloud data that is non-renderable i.e. shut off the display, and object merge that into a instance object. Then use the instance attribute to point to the different geometry nodes you want to import. This is a bit more production friendly as it is easier to automate the import of these object level instances, and also set each set of attributes independently.
  11. Actually there is one problem... I have vertex-attribute normals on the generated geometry, so the shading looks the way i want. For instances, the normals need to be point-attributes. Obviously i can't have both - if i remove the vertex-attributes, the instance rotation works, if i keep both, everything twists weirdly... Is it possible to have both - vertex and point normals?
  12. Cool. Glad you solved it.
  13. Oh - seems like i found something. Had an orient attribute on some other geometry (wall) that seems to mess up everything. If i remove that I get rotation on the blueprints
  14. Hey! Thanks for the reply! Doesn't seem to work either - set up to 0/1/0 and the normal according the direction. The blueprints don't rotate...
  15. Just use up and normal. Not all program have conversions for the varied attributes.
  16. Hi everyone! I made an HDA that generates a level. Got a couple of blueprints in Unreal I need to spawn. This works fine when I use the unreal_instance as point-attribute with the spawn-points. Since I want to rotate the blueprints instances as well, i added a rot point-attribute (also tested with orient) to the points - but this doesn't seem to carry over. Works fine inside Houdini when I test it with proxy geo (e.g. boxes) Every instance of the blueprint Unreal though has the same rotation. Am I doing something wrong here? best, Ron
  17. Troubles with melting object

    Hi! The newbie is here with a silly question) I'm trying to melt this arm with "melt object" but something goes wrong. Instead of object form filled with dots I only get few in random place. I tried melting it on default pig head and cube and everything was fine. Is something wrong with this obj?
  18. Run script in Command Line tools with Python

    For the first case, I need to import hou module in standalone Python. This is not working: import sys sys.path.append('C:/Program Files/Side Effects Software/Houdini 17.0.459/houdini/python2.7libs') import hou For the second, can you, please, provide examples of arguments (path_to_hython, path_to_hrender, hrender_args)? Mine is not working... import subprocess cmdTools = '"C:/Program Files/Side Effects Software/Houdini 17.0.459/bin/hcmd.exe"' batch = 'hscript P:/RENDER/render.cmd' subprocess.call([cmdTools, batch])
  19. RECHERCHE

    *cough*English please
  20. Run script in Command Line tools with Python

    If you want to render the files sequentially, you can do the same you did in that .cmd, but in python. Something like hou.hipFile.load(file1) rop = hou.node(path_to_rop) rop.render(args) hou.hipFile.load(file2) rop = hou.node(path_to_rop) rop.render(args) ... If you want to to spawn new processes to render your files, you can call hrender using subprocess subprocess.Popen([path_to_hython, path_to_hrender, hrender_args]) And, of course, you can write a specific custom python script to suit any other needs
  21. Run script in Command Line tools with Python

    Thanks, will check them! I did not think about rendering multiple hip files from that perspective, went with first what comes to my mind.
  22. Run script in Command Line tools with Python

    Is there a reason you're not rendering using python directly? You can check inside $HFS/bin/hrender.py or render.py for some examples. If your usage is simple, those scripts would be enough for you to use directly
  23. I have a render.cmd file with a list of hip files to render: mread P:/PROJECTS/NSI/PROD/3D/scenes/RENDER/000/SHOT_010/RND_E000_S010_001.hiplc render -f 1 2 -V /out/RENDER mread P:/PROJECTS/NSI/PROD/3D/scenes/RENDER/000/SHOT_020/RND_E000_S020_001.hiplc render -f 1 2 -V /out/RENDER If I open hcmd.exe and run: hscript render.cmd I get all my shots rendered. The issue is that I can't get it working with Python, currently able only run Command Line Tools import subprocess cmdTools = '"C:/Program Files/Side Effects Software/Houdini 17.0.459/bin/hcmd.exe"' subprocess.call(cmdTools) but have no idea how to execute <hscript render.cmd> later...
  24. I totally understand your feelings of being confused at first, albeit I recommend reading documentation which holds most answers for your questions. For example: /// This method is created so that it can be called by handles. It only /// cooks the input group of this SOP. The geometry in this group is /// the only geometry manipulated by this SOP. virtual OP_ERROR cookInputGroups(OP_Context &context, int alone = 0); Right in the header of the example you're referring to is the explanation. More over, if you look inside its definition (*.C file),you will notice that all it does is calling: // implementation for just handling a point selection. 105 return cookInputPointGroups(...) so you click doxygen link again and see...: its declaration comment: so you scroll or search down to find cookInputPrimitiveGroup and... you have the explanation. It's vague, true, because the subject is complicated, but gathering all comments to this point you at least have a picture of what is going on here. Afaik you shouldn't worry about it at this point, just implement your cookInputGroup along this example. fpreal is Houdini's alias for floating point numbers (floats or doubles). By aliasing them (giving them custom name), SESI can control implementation and platform specific details. For example switch size of fpreal from 8byts to 4 bytes on some platform. They are the type of the value returned by the parameter. The way it is implemented in examples are just convention used by Houdini. You can use evalFloat() inside cookMySop() method too. Important consideration is multi-threading and locking of the node. Sorry, I don't understand that question. It means that cookInputGroups(context) can return one of error signals - most probably because node before your plugin returned error itself. Those errors signals are sorted in such a way, that those which are critical or invalidate further execution have greater values then those not so important. So in that case if error value is equal or greater than UT_ERROR_ABORT you know you should not go any further and return immediately. Again, just click doxygen link and see other options. gdp collects information about geometry. Most of this is contained in multiply attributes objects (which are vector-like underneath). "our own data" refers to those objects, because they are owned by gdp. Attributes have IDs modified every time attribute's data is modified. This way Houdini can track changes in geometry (this technique is similar to generating hashes from values, but cheaper). bumpDataId() informs Houdini, that attribute (P in that case) was modified by the user. This information is available for other nodes and viewport, and triggers recooking of their output. A commend above the code just clarifies that we have an option to not to worry about updating ID by ourself. Houdini can do this automatically. From the constructor of this class: // This indicates that this SOP manually manages its data IDs, 86 // so that Houdini can identify what attributes may have changed, 87 // e.g. to reduce work for the viewport, or other SOPs that 88 // check whether data IDs have changed. 89 // By default, (i.e. if this line weren't here), all data IDs 90 // would be bumped after the SOP cook, to indicate that 91 // everything might have changed. 92 // If some data IDs don't get bumped properly, the viewport 93 // may not update, or SOPs that check data IDs 94 // may not cook correctly, so be *very* careful! 95 mySopFlags.setManagesDataIDs(true); so above comment simply states that we will inform Houdini about changes in geometry attributes by ourself (using bunbDataId())
  25. Wires are keep falling off from glued objects

    I was already using that method. Anyway, your advice was helpful because I was not sure of the role of "point deform" node. However, I solved the issue, by making more specific groups. Before, I made one group of points for two separated points. After I make more specific groups, it's not happening again. Anyway, thank you very much.
  26. Learning DOPS, motors, constraints etc

    This serie is brillant ! The music video is a really nice application of it for production, love it. And it's an invaluable learning ressource to be able to dive in all these hip files, thanks a lot for sharing. Looking forward to see more explorations !
  27. Add smaller fracture shards to an Fracture object

    Try clicking the Debris button. ap_fracture_with_debris_042219.hiplc
  1. Load more activity
×