Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Freeze Flip Sim

    animatde timescale on the dop or post-sim retime sop should do the trick
  3. Freeze Flip Sim

    Hey Guys, Imagine an object which fills with liquid over time. When the object is full of liquid i want the motion of the Flip Fluid stop oder decrease over time. For example: - Object fills with Flip Fluid from Frame 1 to Frame 96. - Liquid and all motion of it slows down from Frame 96 to Frame 144, at Frame 144 everything is not moving anymore. I tried some pop wrangle inside my DOP but i cant get this working. Any suggestions? Should i do this after the DOP in SOP Level in a Vop/Wrangle or could I achive this inside my DOP? And How? Thanks and Greets, me
  4. Hey, haha thats funny. It's actually from my former TD in the project. So yeah I know it (-; 
 Well it does help a little bit, but still its just grabbing the render view, so you always have to render and than can get a feeling for the scene in VR. What I was actually hoping for is really a viewport connection. But that would have been quite a thing to implement. It exists for Maya already though. But nothing for Houdini /-:
  5. Today
  6. Shade volume attribute based on Volume Size

    It doesn't create the attribute by default, but what stops you from doing it yourself? Also you might leverage the intrinsic attributes measuredvolume and measuredarea
  7. For-each odd number

    no i don't think so but you can use this bbox("../foreach_begin1/", D_ZSIZE)*detail("../foreach_count1/","iteration",0) to get rid of the hard coded value and stay fully procedural
  8. For-each odd number

    Thanks, another question here, in my offset ty, is it possible to use the bounding box YMAX of the previous iteration, rather than multiplying it with a 0.52 value?
  9. Indeed that is kinda the behavior that you need to follow in order to create tab folders or radio buttons. I have been trying to figure out how to put folder group with parameters and sub-folders into an already existing folder. Have you done anything like that? It looks like, you can't just stack `parm_template_group.appendToFolder(target_folder, source_folder)` one after another if I want to include two folder in an existing one. I guess I need to have a parmTemplateGroup() for each folder.
  10. Yes, I happen to separate the actions as well. It does seem like Side Effects tag this behavior to a illegal operation. This env variable will stop the error from popping up but I dont think it is recommended: HOUDINI_ERROR_ON_ILLEGAL_NODE_EDITS := 1
  11. Yesterday
  12. vellum dynamic constraints

    I have basic tentacle-type setup, that's what I'm going for anyway... I'm creating dynamic constraints from a cluster of vellum points that are pinned to some SOP animation, and attaching to some vellum softbodies with no pinned animation. Done using the 'attach to geo' option on the vellum constraint DOP. The constraint creation is working, but I want the soft bodies to get pulled into the points that are creating the dynamic constraints (like tentacles pulling something in). I've tried by manipulating the rest length, but that doesn't seem to have any effect. Anyone know how to get this to work? Thanks! vellum01.hip
  13. Control Grains with POP ?

    How do you control vellum grains with POP, whereas you have a POP simulation and that drives the POP grains ?
  14. Houdini 18 Wishlist

    This is a script coded by a friend : https://berniebernie.fr/wiki/Houdini_Python I think it would be great to have something like this by default on Houdini, in order to get a previz image of a certain part of the node graph. It could be very useful when sharing setup between people for complex FX / Rigs / Lighting setup.
  15. Enforce Prototypes @ptnum

    Hello, So doing some clean up on my vex code in a wrangle and I turned on Enforce Prototypes to remove a bunch of the hacks to get the code setup. The one thing I can not find out a cleanup for is to replace @ptnum with a non @ function. Is the only way to declare it prior to the wrangle as another attribute? That just seems messy. Even declaring before hands means you need @ptnum to source that attribute. Thanks, -Ben
  16. Shade volume attribute based on Volume Size

    @Andrea Sbabo What do you mean it doesn't make much sense ? The volume bounds is what I'm after, but it doesn't create an attribute which I can use in materials. I need to iterate over only volumes clusters which are within a specific size, and get only the perimeters or size of those volumes; that is what I'm not sure how ? If some volume pieces are small, I want to ignore those, if the volume size is large; those are of which I want the size.
  17. PBD attribute equivalent to pin to animation

    Create pintoanimation attribute before dop and make it 1.
  18. Making a switch?

    Hi @alxmont It really depends on what you want to do. You talk about Archviz, and frankly I don't see the benefit of switching to houdini. Don't get me wrong, I've been in a "semi-switch" from C4D for two years and I love houdini. But each software has these cons and pros and the big strength of houdini is FX. Honestly for the archiz I don't really see the point. Arch modelling made according to plans, is part of direct modelling. And with all due respect, Houdini is not the best on this point. If you use a lot of purchased libraries, imports is not really comfortable. But as ikoon say Maybe "Solaris" could be of great interest. SideFX all time do a hard work and Houdini really improves with each version. Now there is learning (free) or indie (really affordable) editions. Take your time to try it, and look what benefit you can get from it.
  19. Vellum Aerodynamic Lift

    Check out the cloth+pyro.hipnc, at this link. It demonstrates how to achieve lift in cloth (not vellum) by making it responsive to the temperature field of a pyro simulation.
  20. Advanced Bubbles - Flat Intersection

    you could use this technique. If you want you can also use a clip at the intersections
  21. Is it possible to simulate aerodynamic lift generated by vellum patches moving in “air”? In C4D there is a little option under soft body dynamics that emulates the effect of lift but I'm not sure how to do that with Vellum in Houdini.
  22. Shade volume attribute based on Volume Size

    It doesn't have polygons so no, you can't calculate the perimeter of a volume. You can store the perimeter of the volume bounds, but it doesn't make much sense.
  23. Pop forces falloff options

    Thanks guys!
  24. For-each odd number

    have this expression on your first keyframe: bezier()*if(detail("../foreach_count1/","iteration",0)%2==0,1,-1) (just add the bold part)
  25. NetworkImage

    I don't know if it is of any use but here is a linux version... DISCLAIMER, I have ignored accounting for the outputConnections() as I don't really understand the purpose... also I have commented a bit further and expand strings to support variables vs absolute paths discrepancies... should work ok. import hou import os import subprocess import nodegraphutils as utils from time import gmtime, strftime widthRatio = 4 # change to make screenshot bigger or smaller, this is ~x4 node width # -------------------------------------------------------------------------------------------- # FUNCTIONS # -------------------------------------------------------------------------------------------- def createScreenshotFolder(saveFolder): '''create screenshot folder under $HIP folder ''' # System call to create the necessary folder subprocess.check_call([r"mkdir", r"-p", saveFolder]) def takeScreenShot(savePath): '''change to your preferred capture app /!\ no error checking for now ''' # System call using ImageMagik import command that requests an interactive region to operate subprocess.check_call([r"import", savePath]) def removeBackgroundImage(**kwargs): ''' erases bg image from tuples of backgroundImages() if it can find it, updates bg ''' # find the node that is meant to be deleted deletingNode = [x[1] for x in kwargs.items()][0] # find the image in the spare tab image = deletingNode.parm('houdinipath').eval() # find the network editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) # collect the images stored in it backgroundImagesDic = editor.backgroundImages() # find the one image to be deleted backgroundImagesDic = tuple(x for x in backgroundImagesDic if hou.expandString(x.path()) != hou.expandString(image)) # update the images editor.setBackgroundImages(backgroundImagesDic) utils.saveBackgroundImages(editor.pwd(), backgroundImagesDic) def changeBackgroundImageBrightness(event_type,**kwargs): ''' changes brightness/visibility if template or bypass flags are checked -- its poorly written/thought but i was tired''' # find the null holding the image nullNode = [x[1] for x in kwargs.items()][0] # find the image in the spare tab image = nullNode.parm('houdinipath').eval() # define color based on flags if nullNode.isBypassed(): brightness = 0.0 elif nullNode.isTemplateFlagSet(): brightness = 0.5 else: brightness = 1.0 # find the network editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) # collect the images stored in it backgroundImagesDic = editor.backgroundImages() # traverse all images, find the one we have actioned and set the brightness i = 0 for item in backgroundImagesDic: if hou.expandString(item.path()) == hou.expandString(image): backgroundImagesDic.setBrightness(brightness) break i = i + 1 # update the visibility values editor.setBackgroundImages(backgroundImagesDic) utils.saveBackgroundImages(editor.pwd(), backgroundImagesDic) # -------------------------------------------------------------------------------------------- # MAIN # -------------------------------------------------------------------------------------------- # generate unique(ish) path for screenshot timestamp = strftime('%Y%m%d_%H%M%S', gmtime()) hipname = str(hou.getenv('HIPNAME')) hippath = str(hou.getenv('HIP')) + '/screenshots' screenshotName = hipname + '.' + timestamp + '.png' systempath = hippath + '/' + screenshotName houdinipath = '$HIP/screenshots/' + screenshotName # take screenshot with capture region createScreenshotFolder(hippath) takeScreenShot(systempath) # set up background image plane editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) image = hou.NetworkImage() image.setPath(houdinipath) sel = hou.selectedNodes() nullNode = '' if sel: lastSel = sel[-1] nullNode = lastSel.parent().createNode('null','screenshot') nullNode.setInput(0,lastSel) #if lastSel.outputConnections(): # nullNode.setInput(0,lastSel) else: nullNode = editor.pwd().createNode('null','screenshot') nullNode.moveToGoodPosition() lastSel = nullNode # configure image plane placement nullNode.setUserData('nodeshape','task') nullNode.setPosition(lastSel.position()) nullNode.setColor(hou.Color(.3,.3,.3)) nullNode.move([lastSel.size()[0]*2,-lastSel.size()[1]*2]) rez = hou.imageResolution(systempath) ratio = 1.0*rez[1]/rez[0] rect = hou.BoundingRect(0,-lastSel.size()[1]*1.1,widthRatio,-widthRatio*ratio-lastSel.size()[1]*1.1) image.setRelativeToPath(nullNode.path()) image.setRect(rect) # following is adding a spare parm with image path to be able to know which node corresponds to which background image # could have used a user attribute or relativeToPath() and smarter logic but it works and it helps visualize filepath hou_parm_template_group = hou.ParmTemplateGroup() hou_parm_template = hou.LabelParmTemplate("houdinipath", "Label", column_labels=([houdinipath])) hou_parm_template.hideLabel(True) hou_parm_template_group.append(hou_parm_template) nullNode.setParmTemplateGroup(hou_parm_template_group) # attach a function that deletes the background image plane if the corresponding node is deleted (faster than doing it by hand) nullNode.addEventCallback((hou.nodeEventType.BeingDeleted,), removeBackgroundImage) # attach a function to change visibility or opacity if corresponding node flags are changed nullNode.addEventCallback((hou.nodeEventType.FlagChanged,), changeBackgroundImageBrightness) # add image to network background backgroundImagesDic = editor.backgroundImages() backgroundImagesDic = backgroundImagesDic + (image,) editor.setBackgroundImages(backgroundImagesDic) utils.saveBackgroundImages(editor.pwd(), backgroundImagesDic)
  26. Hi @ameyer, does this help? Cheers ...
  27. Replace mPlay ?

    Is it possible to replace mPlay with another player, rather then mPlay loading by default, another player of ones choosing is loaded ?
  28. Hi @Masoud, just detach the POP Solver from the Multi Solver within the DOP Network to make it work. Also I'd suggest using a Rigid Body Solver:
  1. Load more activity
×