Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by anim

  1. Switches and loops

    if you want to process them separately and save as different files anyway, you can just use Wedge SOP and control switch value with $WEDGENUM variable, then have any sops after switch to process your geo and ROP Geometry Output (referenced in wedge driver) that will save your geo with path varying using $WEDGE variable https://www.sidefx.com/docs/houdini/nodes/out/wedge.html
  2. Vellum Cloth and String weld

    you need to have single Vellum object, but they don't have to be merged in sops, you can use Vellum Source to source your cloth and string separately cloth_and_string_01_fix.hipnc
  3. Vellum Weld Break

    it's because when you weld, there is no stretch constraint created, just optional bend constraint and because Vellum Constraint Property acts on constraint primitives contained in Constraint Geometry data, since welds are not constraints, there are no weld constraint primitives to set breakthreshold to your wrangle acts on Geometry and therefore cloth points directly, which is exactly the place where weld attributes like breakthreshold, weld and breaktype live
  4. GuidedWrinkling example and Vellum

    Yes, you'll additionaly need Cloth constraints for surface polygons and keep distance and tet volume constraints acting only on tets
  5. How to Calculate @w to Aim RBD Object

    packed rbds indeed work with v@torque, try upping the Torque Scale multiplier if you are not seeing any results also make sure sleeping is off if this is the only force acting on them
  6. How to Calculate @w to Aim RBD Object

    not sure if you are taking this as a VEX exercise, but if not, you can use POP Look At to easily do this
  7. Vellum Inflate From Flattened State?

    what MAX seems to be doing (along with others, Maya, Marvelous) is simple old school force along N you can easily implement it in Houdini, and while it's not a true pressure it creates an impression of inflating and even air leaking not specific to Vellum, you can use this with FEM too and while a tiny wrangle is needed I wouldn't call it jumping through hoops here is an example similar to boxes above ts_N_pressure_force.hip
  8. correct, that LPE is for true, pathtraced caustics if you are talking about biased pointcloud caustic light, then I'd assume it would be accessible as direct lighting pass from specifically labeled caustic lights like adding LPE Tag to your caustic light and name it somehow, like: 'caustics' and then something like lpe:CD+<L.'caustics'> but it doesn't seem to work, neither does more broad lpe Beauty (lpe:C.*) that should capture everything, so I'd assume it's not straightforward to isolate those using LPE currently
  9. something like this lpe:C<RD>G+L
  10. try this for all but coat lpe:C<...[^'coat']>.* or all glossy reflections but coat lpe:C<RG.[^'coat']>.*
  11. Vellum's 'cloth target strength' equivalent ?

    can you post the scene?
  12. Vellum's 'cloth target strength' equivalent ?

    it's for blending rest attributes of the constraint geometry using the geometry of the third input (or provided SOP if using DOP version) literally serves the same purpose as FEM's or Wire's Rest Geometry so to morph pighead to squab it would require both to have the same topology and you 'd need to have some constraints (like cloth) on the pighead already, then plug first 2 outputs of the vellum constraint to vellum rest blend and squab to the third, then you can tweak how much the constraint rest attributes will try to match the squab shape (again, has to have the same topology) to blend over time you may want to use DOP version sorry, cant post file, don't have access to H17 at the moment
  13. Vellum's 'cloth target strength' equivalent ?

    if you set Pin to Target constraint to Soft, then you can control the strength by Stretch Stiffness (for soft position type) and Bend Stiffness (for soft orientation type) it's also present within cloth/hair constraints where it's called Pin To Animation if you however want just shape changes and not necessarily constraint your geo to a specific locations you should use Vellum Rest Blend SOP or DOP which allows you to update rest state of the constraints and therefore force your vellum object to try to assume that shape
  14. fit UV into 0-1

    you can also just use UV Transform SOP: Transform Order: Trans Scale Rot Translate X: 0.5-$CEX Translate Y: 0.5-$CEY Scale X: 1/$SIZEX Scale Y: 1/$SIZEY Pivot XY: 0.5
  15. you can use preprocessor macros for that https://www.sidefx.com/docs/houdini/vex/vcc.html#pre-processor for an example you can look at houdini/vex/include/subdcurve.h file
  16. Current Position to Shader Position ?

    from what I see you are adding 2 after you multiply with the color and 2 is way over one and since one is white x + 2 is most likely white if x was somewhere around -1..1 so I wouldn't be surprised if you are seeing white also rest can have any values so it's also possible to have way negative values, that after multiplying with positive color is still negative and +2 can still be <0 and you may be seeing black so there is no telling from the screenshot if the values are expected or not, just fit to the whole range in MPlay or RenderView to see if you are getting any values or not, and it's better to preview just output of certain nodes to directly inspect their values
  17. Plus button for dynamically adding parameters

    you can do it comfortably in vex since you can get parameter values using ch*("path/to/parm") however COP VEX context is older and I don't see a way to define Evaluation node path like in Attrib VOP so you'll probably have to use absolute paths and for that you can use opfullpath('.') the code will look something like this (careful, I added print just to test, don't use print on large images): string op = opfullpath("."); int lights = chi(op + "/lights"); for(int i=0; i<lights; i++){ string si = itoa(i); vector spot_pos = chv(op + "/spot_pos" + si); float spot_size = chf(op + "/spot_size" + si); float spot_int = chf(op + "/spot_int" + si); vector spot_color = chv(op + "/spot_color" + si); printf("\nLight%d: pos: %g | size: %f | int: %f | color: %g ", i, spot_pos, spot_size, spot_int, spot_color); } ts_multiparm_cop_vex.hip
  18. Current Position to Shader Position ?

    which patterns are you trying to create? rest or P or uv can act as coordinate input for the pattern, whether you take the coordinate value as it is or transform to different space depends on what you need rest is usually static position value in local object space, it will prevent swimming as long as the values don't change during the animation, transforming it to different space however may itself introduce swimming if that space is changing in relation to space you are transforming from, so I wouldn't recommend combining rest with transform, just use rest, or for already static geo just transform P to object space to actually get your pattern to show plug your coordinate (P, rest, uv) to some pattern generator like noise or other and then multiply with color and connect to diffuse
  19. Volume trails in VEX

    - rather than doing it in detail wrangle use point wrangle as you want trail per point - also you can create prims directly in wrangle too so no need for id - addpoint() can take reference ptnum which it will clone with all the attribs so no need to import the attribs manually - and to your question, no, it's not possible to access attributes from new points as the creation will happen at the end as a separate single threaded process, all you are doing with geometry creation functions addpoint() setpointattrib(), ... is queuing those for later here is a simple pointwrangle volume trail code: float step = chf("step"); int niter = chi("niter"); if (niter <= 0) return; int prim = addprim(0, "polyline"); vector P = @P; vector v = 0; for (int i=0; i<=niter; i++){ int pt = i == 0 ? @ptnum : addpoint(0, @ptnum); addvertex(0, prim, pt); P += normalize(v)*step; v = volumesamplev(1, "vel", P); setpointattrib(0, "P", pt, P); setpointattrib(0, "v", pt, v); } volume_trails_VEX_fix.hip
  20. - if you can make HDA from your whole setup, with control parameters promoted, you can create multiple instances with different animation easily - or if you don't want to create HDA then just create multiple copies of your control node and use CHOPs to fetch all parms from each control node, switch among them and export to main control node. Number of parameters doesn't matter as Fetch CHOP allow you to fetch them using patterns
  21. pop netork inside solver

    - use sop solver inside of popnet instead - or alternatively use VDB Advect Points inside of your sop solver to do the advection instead of popnet
  22. DOP in for-each loop

    You can't use dops inside of the for loops For what you are doing you may want to use wedging
  23. Grouping points from array

    be careful when looping over all intersected points per primitive especially with idtoprim() type of functions which have to iterate internally a bit too, it will get painfully slow with higher res geo and more intersections just look up existing ids within hits instead, example raycollisionTest_ts.hip
  24. to add new or copy existing heightfield volume (layer) you can use HeightField Copy Layer SOP and then if you need to modify it further in a way you described you can use Heightfield Wrangle or Volume Wrangle
  25. Custom struct as attribute

    it is not possible to create an attribute of a custom type defined by struct