Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

7 Neutral

About jimeng20

  • Rank

Contact Methods

  • Website URL

Personal Information

  • Name
    Jie Meng Snek
  • Location
    Los Angeles

Recent Profile Visitors

528 profile views
  1. invert matrix VOP with more than 2 packed object

    Hi there, First, instead of doing a parameter for prim_number, connect the global primnum into both primitive_intrinsic vop "prim" parameter. Because you want to grab the individual primitive number for both packed geo at the same time. Second, in you setattrib, you need to connect the global primnum into i1, again, you need to define which primitive number to set the intrinsic, so it knows to set intrinsic to the corespondent packed geo. I tested and also added another packed geo and it should work, but unfortunately I can't upload the file since my work place doesn't allow to. Hope this will help.
  2. Hi there, I would use the intersect vex function, so create a wrangle and wire the tube in second input, and you can write something like: vector pos; vector uvw; int prim = intersect(1, @P, @N, pos, uvw); f@length = distance(@P, pos); @P = lerp(pos, @P, chf("mix")); So the original position is first input, and intersect vex function will take that position and emit ray to your target tube, and of cause the ray direction is the normal, and it will create the hit position and hit uv. So the hit position, which is "pos" in the code is the target intersected P that based on your normal direction. So compute the distance of @P and pos is the length you want. Also you can mix the original P and intersect P to see the blending movement. Hope this would help.
  3. Particles Density based on Volume

    Hi there, First you don't need to connect the primnum to your volumegradientfile vop, that is for which primitive volume you wanna sample, let's say you have two volumes named density and heat, 0 will be density and 1 will be the heat. Second, you should connect your volume to your second input, cause you want to sample the gradient from the volume right? You can't sample the gradient from the points. Third, you can't just bind in the density in a point/prim/vertex/detail vop, you need to do that in a volumevop or you can sample the density from the second input volume using volumesample vop. Volume doesn't work like points and primitive, we can't directly grab the density/gradient/surface or any other fields we created in volume and assume it's gonna work, so we need to use the volumesample to sample the density, surface etc and use volumegradient to sample the gradient from a volume. I know it's a bit hard to understand so I found more information here: Also cgwiki has a great topic for understanding volumes, how to modify and sample, how to create field etc. http://www.tokeru.com/cgwiki/index.php?title=HoudiniVolumes Hope this would help.
  4. Particles Density based on Volume

    Hi there, I don't think you can directly bind out or create an attribute from a volumeVop, and the attribute you created in this way won't show in the spreadsheet as a "volume attributes". I would suggest do a volume gradient sample with scattered points in a point wrangle or vop. Something like: v@grad = volumegradient(1,"density",@P); Hope this would help.
  5. scatter on thin geometry

    Hi there, Correct me if I'm wrong but I don't think scatter will have ability to check the point normal direction if it's pointing toward the inside of your geometry. But you can isolate the faces that the normal direction is pointing outward then scatter points only on those faces. One way I would do is convert your geometry to sdf and to check if the surface normal direction aligns to the negated volume gradient by using dot product, if it doesn't align, delete those faces. Also I would just isolate the part that have problem I.e. isolate the fins and solve the normal issue and scatter points based on what I mentioned then merge back with the rest. Unfortunately I can't make example file now since I'm at work, but I hope this will help.
  6. I don't know what do you mean "transfer the animation", do you want to transfer over the velocity from the point has same name/id attribute and advect the point position by the velocity? If so, you can try something like int pt = findattribval(1, "point", "id", @id); vector vel = point(1, "v", pt); @P += vel * @TimeInc ; So this will grab the velocity attribute from the animated points with the same id attribute. But make sure the four points you want to transfer the velocity. If you want to grab the nearest point's velocity and advect the point position, you can try something like int pt = nearpoint(1,@P); vector vel = point(1,"v",pt); @P += vel * @TimeInc ; Or you want to constrain your static point to your animated point, that's a slightly complicated case. Hope this will help.
  7. having trouble 'Volume collision with static object'

    Instead of using shelf tool, you can try using boolean sop to create the spherical shell, then convert it to sdf. And you can use it as a proxy volume in static object, or just use it as a collision field. Also it's hard to judge without seeing your hip file, can you upload it?
  8. PointRenderShader

    Interesting topic, thanks for sharing!
  9. And also you could kill all the particles inside of the ocean sdf. If you use a geowrangle and first input is self, second input is the sdf, you can do something like: float sdf = volumesample(1,"surface",@P); if(sdf < 0){ removepoint(0,@ptnum) } But this is a hard condition that kill all the particles inside the sdf in the sim, you could also fit the sdf value into a pscale after the whitewater sim. Something like: float sdf = volumesample(1,"surface",@P); float mult = fit(sdf,-0.1, 0, 0, 1); f@pscale *= mult; Hope this could help.
  10. https://www.sidefx.com/forum/topic/49785/?page=1#post-253127 Also I found some topics and hope can help you.
  11. Well, I don't know have you ever used loops in vex or not. The loops in vops is the same with the vex. There is not much specifically which one is better for what kind of condition, but normally foreach loops will need to plug in an array to loop over each array element. And do_while, foreach_until and for_until will loop have the condition for stopping the loop. And while loop will have condition to start the loop. Same as vex. So for example if you wanna use point cloud with for loop, better use pcopen and length_in(how many iterations) should be the pcnumfind. And if you wanna use point cloud with foreach loop, better use pcfind or pcfind_radius, cuz the result is an array. If you wanna use while loops, better use pcopen and the condition_in should be pciterate. In for loop, the for_begin length_in is how many total iterations you want it to loop over, and the index_out is the current iteration inside of the loop. So think about in vex, you have something like for(int i = 0; i < 50; i ++), and in vops, length_in is 50, and i is the current index_out, which is the iterator. For example if you plug a contant 0 into the next_in, and call it something like "val", and inside the loop you just addconstant 1, and connect to end_for next_in and named it same as "val", the loop will start, you can see a purple line connect from right to left. It equals like: int val = 0; for(int i = 0; i < 50; i++){ val += 1; } And in foreach loop is very similar, it needs a array to loop over each array elements, the element_out is the current iteration of the array element and index_out is the current iteration. I know loops in vop can be a little bit of confusing, but I hope this can help you for a better understanding.
  12. Also there are some information from CGwiki. http://www.tokeru.com/cgwiki/index.php?title=ForLoops#Loop_with_timeshift Hope it will help.
  13. SOP-Level Particle with VEX and VOP ONLY

    Cool stuff, I sometimes customize a particle simulation inside of a sopsolver, as a practice of vex + solver works. Like creating Id attributes, advecting point position by velocity, customized age and life attributes etc, it's fun!!
  14. Import attribute VOP is not there in houdini 17

    If it's a point attribute, you can use getattrib, this can import any type of attributes into your vop. There is a attribute class parameter you can change to import point/prim/vertex/detail attribs and even groups. Or there is another couple node can import individual attribute class, for example import_point_attribute, import_primtive_attribute, import_detal_attribute, import_detal_attribute, all lives in the TAB menu under Geometry.
  15. fracture and simulate dynamic objects

    It's a pretty solid way to do the RBD from the animated character. I don't know why you ask this question, is there any point you didn't get from the tutorial?