Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Atom last won the day on December 28 2019

Atom had the most liked content!

Community Reputation

1,033 Excellent

About Atom

  • Rank
    Grand Master

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location
    Columbus, Ohio

Recent Profile Visitors

11,171 profile views
  1. POP to SMOKE Question

    Here is my rebuild of your popnet to generate smoke. The upward movement of the smoke is controlled by the buoyancy on the popsolver. When you are rasterizing a particle into a volume, the f@pscale attribute plays a role. If the particle is too small, it may not generate any density. You can link density generation to particle age so it starts off less dense and grows more dense as it ages. ap_particles_trail_2_v03.hiplc
  2. That is normal, if you deform or change the surface you are scattering the points onto, it's similar to changing the seed on the scatter. You will get a different result every time the surface changes. Read the help card on the PointDeform node to lock down the point set before you CopyToPoints. There are a lot of example on this forum, try the search bar.
  3. Moana Water Separation Scene

    An ocean with a bend and a mirror gets you close. You might even be able to mask the white water where the bend occurs.
  4. Importing attributes with Opinput

    That looks like an assignment, not a fetch. I'm not sure if you can issue assignment via @opinput. (wouldn't that be @opoutput, which doesn't exist?) Try... vector my_v = @opinput1_v; float my_v_z = my_v.z;
  5. I am using Houdini on Ubuntu, and quite frankly, I don't experience any "noticible" difference in using Linux over Windows. If anything, you loose options with Linux, because some software tools that you might want to use with Houdini run may only on Windows or Mac. There is also the added frustration of dealing with Linux based installers that require knowledge of command codes that you may have to look up on the internet. You could easily waste a day or two, trying to get something to work when on Windows, you simply run an installer.
  6. AI Volume Effect

    I just pulled down qLib, from GitHub, to try this out and I am still getting a bad HDA reference. Do you happen to know how to solve this?
  7. I am still on 18.04, but I don't have those clipboard issues. Maybe there is something in the 19.10 packages causing this glitch?
  8. Interaction between Crowd and FLIP Solvers

    It does seem like the pop solution is causing the bad deformations. I disabled the pop section. I sorted the agents along the Z-axis. You may be able to automate triggering if they are in a linear order. Instead I took the hard coded approach which offers art direction. Place the Crowd Trigger node into Custom VEXpression mode. Use if statements to turn on the trigger, based upon individual point #s. // setting i@trigger to 1 will enable // setting i@trigger to 0 will disable int result = 0; // Stagger transition to ragdoll. if((@Frame == 13) && (@ptnum==0)){result=1;} if((@Frame == 15) && (@ptnum==1)){result=1;} if((@Frame == 17) && (@ptnum==2)){result=1;} if((@Frame == 28) && (@ptnum==3)){result=1;} if((@Frame == 29) && (@ptnum==4)){result=1;} if((@Frame == 31) && (@ptnum==5)){result=1;} if((@Frame == 37) && (@ptnum==6)){result=1;} if((@Frame == 39) && (@ptnum==7)){result=1;} if((@Frame == 42) && (@ptnum==8)){result=1;} if((@Frame == 46) && (@ptnum==9)){result=1;} i@trigger = result; For the ragdoll state, I dropped down a PopSteerSeek to make the agents move in the down stream direction. You can adjust the force on this node to match the agent speed to the fluid motion. ap_crowdFLIPtest_v1.hiplc
  9. Blender is attribute challenged, that's for sure. I can't get attributes to transfer, except @Cd for vertex color (which Blender still doesn't use - it just shows up under the mesh data context). What few attributes that Blender can recognize are "hard coded". I don't foresee any change in this workflow, unless you alter the Blender code, itself.
  10. Pipe/duct generator

    I think most people just run through the tutorial and make their own HDA. https://www.sidefx.com/tutorials/procedural-generated-pipes-part-4/
  11. What if, instead of creating an AddSop, you create a Python SOP and install the above code? The code can read from your file and create the point and attribute at the same time. def code (): """ import os,re,random node = hou.pwd() geo = node.geometry() attrib_orient = geo.addAttrib(hou.attribType.Point, "orient", {0,0,0,0}) # Create the point pt0 = geo.createPoint() # INSERT CODE TO READ XYZ and python_orient from file. pt0.setPosition(hou.Vector3(X,Y,Z)) # Store data_height, now_lat and now long with this point. pt0.setAttribValue(attrib_orient, python_orient) """ # Create python sop and populater code box with code from the def, up above. node_python = node_geo.createNode("python") if node_python != None: # Install code that will detect and create materials from shop_materialpath. node_python.parm("python").set(code.__doc__)
  12. I think it is possible in pure python. If I remember right, you have to create the attribute on the geometry first. Once the .geo() knows about the existence of the attributes you can set values on the points. attrib_Cd = geo.addAttrib(hou.attribType.Point, "Cd", (1.0,1.0,1.0)) height_attrib = geo.addAttrib(hou.attribType.Point, "dem_height", 0.0) now_lat_attrib = geo.addAttrib(hou.attribType.Point, "now_latitude", 0.0) now_long_attrib = geo.addAttrib(hou.attribType.Point, "now_longitude", 0.0) # Create the point pt0 = geo.createPoint() pt0.setPosition(hou.Vector3(X,Y,Z)) if color_min: pt0.setAttribValue(attrib_Cd, (0.0,0.0,0.5)) if color_max: pt0.setAttribValue(attrib_Cd, (0.5,0.0,0.0)) # Store data_height, now_lat and now long with this point. pt0.setAttribValue(height_attrib, data_height) pt0.setAttribValue(now_lat_attrib, float(now_lat)) pt0.setAttribValue(now_long_attrib, float(now_long))
  13. You could create a VEX node after the Add sop and wire it in. Then you can assign the @orient attribute inside the code block (snippet) of the newly created VEX node. wrangle_node = hou.node("/obj/%s/%s/%s" % (node.parent().parent(), node.parent(),"attribwrangle1")) if wrangle_node == None: # Create a wrangle to define our orient. wrangle_node = node.parent().createNode("attribwrangle","attribwrangle1") wrangle_node.parm('snippet').set('@orient = {0,0,0,0};') wrangle_node.parm('class').set(1) wrangle_node.setInput(0,addsop_node) wrangle_node.moveToGoodPosition()
  14. This came up a while back on the forum. Feel free to take a look at this older file to review the concept. ap_flip_fluid_unfolding_collision.hipnc
  15. I went through this, trying to melt an iPhone model. Basically you promote all attributes to point, then after the simulation, you promote the attributes back to their appropriate context (i.e. UVs->Points->Vertex). Make sure you adjust the attribute forwarding fields on the compress node, as well as the surfacing node.