Jump to content


Popular Content

Showing most liked content since 05/26/2020 in all areas

  1. 3 points
    I have created a video tutorial to go with it:
  2. 3 points
    Wind turbulence visualized in the real world
  3. 2 points
    Ok. Thanks, guys. I will fix it in a few days
  4. 2 points
    I heard oil paintings are a thing right now. Here is a initial setup (still lacking all micro details and sweep strokes): Original procedure developed by Will Macneill: http://www.willmacneil.com/portfolio/oil-painting-the-houdini-way painting_2.hipnc
  5. 1 point
    Of course, take it, I will be glad. https://mega.nz/file/dU5RGBDL#sVxH1XBcFwdIVEH8A2mcMzHJypLqbliGxMkQZLZy3Qk Using closed meshes - is great news. It would be nice if the node "normal" was automatically connected.
  6. 1 point
    Hooray! I got it! Since the type is already hou.Polygon, I just needed to treat it as such. No casting required. I think I love Python.
  7. 1 point
    you can take a look at this video bellow. shader baking starts at ~ 17 min. you can bake multiple objects by merging them into one and baking that.
  8. 1 point
    A better question is, why are you copy stamping? Just put this attribute on your template points and have the copies inherit it. Copy stamping is a deprecated workflow and shouldn't be used anymore except for backwards compatibility.
  9. 1 point
    Another flower field while creating a custom baker for ground tiles: render_planar.hipnc
  10. 1 point
    2 ways .Hope it Helps Cracks2.hipnc
  11. 1 point
    http://www.cgchannel.com/2020/05/review-amd-ryzen-threadripper-3990x/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+cgchannel%2FnHpU+(CG+Channel+-+Entertainment+Production+Art) Houdini got mentioned about half way down
  12. 1 point
    Plugin worked only after I copied it to C:\Users\username\Documents\houdini18.0 Insert Mesh to work if click alt + 2 clicks of the left mouse button on the picture I took this free kitbash https://gumroad.com/d/82ff256324d8d4816154051c3f02ce8b And adapted for correct work in the plugin. Maybe someone will come in handy. https://mega.nz/file/dU5RGBDL#sVxH1XBcFwdIVEH8A2mcMzHJypLqbliGxMkQZLZy3Qk Sorry for english (google translate)
  13. 1 point
  14. 1 point
    Insane! Thanks! Wrote the vop sop to a wrangle: matrix xform = detail(1, "xform"); matrix rot = ident(); float z_bias = chf("z_bias"); float range = chf("range"); float angle = radians(chf("angle")); @P *= invert(xform); vector domain = set(@P.x, @P.y, @P.z * z_bias); float dangle = length(domain) / range; dangle = exp(-dangle) * angle; rotate(rot, dangle, 4); @P *= rot; @P *= xform; I'll see how to build on top of that. wavelike_deform.hiplc
  15. 1 point
    works... VellumRBDtest_works.hiplc
  16. 1 point
  17. 1 point
    use polypath instead of join
  18. 1 point
    but......it just works... vu_Weld.hiplc
  19. 1 point
  20. 1 point
    That's a lot of bottles
  21. 1 point
    I worked through Mikael Petersen's crowd based thingie setup. I'll post it here. If anyone else has setups from the hive 2020, drop them in this thread. ap_mp_blendshape_crowd_character_052120.hiplc
  22. 1 point
    Here we go, didn't get a chance to make a clay material (opaque in yellow). The amber material doesn't really work and the random values for some of the the potions liquid and the randomly coloured glass bottles (you can see the randomly coloured glass bottle in red bottom right) I might be able to fix this by multiplying them by normalizing times by 2 and clamping the vector but I also I might just ditch the coloured glass or turn the transparency down for them. The dirt and dust shading became too dominant so I limited it quite a lot and now it's barely visible so i'll have to fix that. The biggest issues are with the horizontal periodic artifacting on some of the glasses as well as some of the glass tops show some greyishness. After I've fixed all of these issues I'll finish the glass chipping and then work on the procedural labels I've started but gave up on before.
  23. 1 point
    https://forums.odforce.net/topic/41203-contract-a-rope-vellum/?tab=comments#comment-202128 https://forums.odforce.net/topic/45986-scale-vellum-struts-like-rigid-body/?tab=comments#comment-215369 https://forums.odforce.net/topic/43269-painting-restlength-on-vellum-cloth-constraint/?tab=comments#comment-205001
  24. 1 point
    That its just attribute transfer and some Play with Spiral and combining with this technique . Just having Fun.
  25. 1 point
    In the render above I manually selected points with the lasso to instance the clovers on. In this render I used a noise pattern to determine were the grass should be flatter and at the same time that's where the clovers are instanced. I also did some shader tweaking.
  26. 1 point
    Have a look in here. All I've changed is the animation along the path, the time start/end in the fetch node in the distance travelled chop and I've had to kludge the constraint on the steering object to work past frame 240 by hard setting the sample rate.... car_rig_bullet_julian_offset.hipnc
  27. 1 point
  28. 1 point
    Hey all, Thanks to @Alain2131 for the incredible exporter asset! This totally fixed my issue. I've suped it up a bit to let it also fix sub-object pivots, such that every sub object's pivot in the FBX parent is at the center of its bounding box. Here's the updated asset: FBX_export_v1_1.hda
  29. 1 point
    between lessons.
  30. 1 point
    More fun 13.lesson. projectione.h /*! \fn vector2 one_sphere(vector2 z; float r) \brief Project \f$z \in C\f$ to \f$S^1\f$. Project \f$z \in C\f$ to \f$S^1\f$ with radius \f$r\f$. \param z the direction in \f$C\f$ to project to \f$S^1\f$ \param r the radius of \f$S^1\f$ \return the point \f$z \frac{r}{\mid z \mid}\f$ */ vector2 one_sphere(vector2 z; float r) { return z / length(z) * r; } /*! \fn vector two_sphere(vector z; float r) \brief Project \f$z \in R^3\f$ to \f$S^2\f$. Project \f$z \in R^3\f$ to \f$S^2\f$ with radius \f$r\f$. \param z the direction in \f$R^3\f$ to project to \f$S^2\f$ \param r the radius of \f$S^2\f$ \return the point \f$z \frac{r}{\mid z \mid}\f$ */ vector two_sphere(vector z; float r) { return z / length(z) * r; } /*! \fn vector2 stereo2(vector c) \brief Stereographic projection from \f$S^2\f$. Stereographic projection from \f$S^2\f$ into \f$C\f$. \param c the vector in \f$S^2\f$ to project into \f$C\f$, , must not be \f$(0, 0, 1)\top\f$ \return the stereographic projection to \f$C\f$ */ vector2 stereo2(vector c) { float x = c.x; float y = c.y; float z = c.z; return set(x, y) / (1-z); } /*! \fn vector stereo3(vector4 c) \brief Stereographic projection from \f$S^3\f$. Stereographic projection from \f$S^3\f$ into \f$R^3\f$. \param c the vector in \f$S^3\f$ to project into \f$R^3\f$, must not be \f$(0, 0, 0, 1)\top\f$ \return the stereographic projection to \f$R^3\f$ */ vector stereo3(vector4 c) { float x = c.x; float y = c.y; float z = c.z; float w = c.w; return set(x, y, z) / (1-w); } /*! \fn vector4 stereo3_inv(vector c) \brief Inverse of the stereographic projection from \f$S^3\f$. Inverse from \f$R^3\f$ into \f$S^3\f$ of the stereographic projection. \param c the vector in \f$R^3\f$ to reproject into \f$S^3\f$. \return the projection into \f$S^3\f$ */ vector4 stereo3_inv(vector c) { float x = c.x; float y = c.y; float z = c.z; return set(2*x, 2*y, 2*z, length2(c)-1) / (length2(c)+1); } vector stereo3_e4(vector4 c) { return set(c.x, c.y, c.z) / (1.-c.w); } vector stereo3_e4_inv(vector c) { return set(2*c.x, 2*c.y, 2*c.z, length2(c)-1) / (length2(c)+1.); } /*! \fn vector sphere_inversion(vector z; vector center; float scale) \brief Sphere inversion Perform a Möbius tranformation to project every point inside the the unit sphere in \f$R^3\f$ to outside and vice versa. \param z the original vector in \f$R^3\f$ \param center the center of the sphere \param scale the radius of the sphere \return the inverted vector */ vector sphere_inversion(vector z; vector center; float scale) { // Compute translation, then transform in the origin and retranslate vector translation = set(center.x, center.y, center.z); vector transformed = z - translation; return transformed / length2(transformed) * pow(scale, 2) + translation; } complex.h *! \fn vector2 cmul(vector2 z; vector2 w) \brief Multiply two complex numbers Multiply two arbitrary complex numbers. \param z first factor \param w second factor \return \f$z \cdot w\f$ */ vector2 cmul(vector2 z; vector2 w) { float x = z.x; float y = z.y; float u = w.u; float v = w.v; float real = x*u - y*v; float imaginary = x*v + y*u; return set(real, imaginary); } /*! \fn vector2 cdiv(vector2 w; vector2 z) \brief Divide one complex number by another complex number Divide one arbitrary complex number by another non-zero complex number. \param w divident \param z divison \return \f$\frac{w}{z}\f$ */ vector2 cdiv(vector2 w; vector2 z) { float x = z.x; float y = z.y; float u = w.u; float v = w.v; float divisor = pow(x, 2) + pow(y, 2); float real = (u*x + v*y) / divisor; float imaginary = (v*x - u*y) / divisor; return set(real, imaginary); } /*! \fn vector2 cpow(vector2 z; int n) \brief Compute the \f$n\f$-th power of a complex number Compute the \f$n\f$-th power of a complex number, for \f$n \in N\f$. \param z the complex number \param n the exponent \return \f$z^n\f$ */ vector2 cpow(vector2 z; int n) { float x = z.x; float y = z.y; float r = length(z); float phi = atan2(y, x); return pow(r, n) * set(cos(n*phi), sin(n*phi)); } /*! \fn float real(vector2 z) \brief Give the real part of a complex number Give the real part of a complex number represented by the first component of a two element vector. \param z the complex number \return the real part \f$a\f$ of \f$z = a + ib\f$ */ float real(vector2 z) { return z.x; } /*! \fn float img(vector2 z) \brief Give the imaginary part of a complex number Give the imaginary part of a complex number represented by the second component of a two element vector. \param z the complex number \return the imaginary part \f$b\f$ of \f$z = a + ib\f$ */ float img(vector2 z) { return z.y; } /*! \fn vector2 e_to_the_is(float s) \brief Give a point on the one-sphere. Give a point on the one-sphere parameterized by \f$s\f$ in the parametric form. \param s the real parameter \return the point \f$(\cos s, \sin s) \subset C\f$ */ vector2 e_to_the_is(float s) { return set(cos(s), sin(s)); } vector4 f; p@f; float n = chi("n"); float k = chi("k"); int j = @ptnum; float cosine = cos(($PI*j) / (2.*n)); float sine = sin(($PI*j) / (2.*n)); vector2 cosine_exp = cosine * e_to_the_is($PI - $PI/(k+1)); vector2 exp_neg = e_to_the_is(- $PI/4); vector2 exp_pos = e_to_the_is($PI/4); vector2 sine_exp_neg = sine * exp_neg; vector2 sine_exp_pos = sine * exp_pos; float j_mod_4n = j % (4*n); if( j_mod_4n < n ) { f.x = cosine; f.y = 0; f.z = real(sine_exp_neg); f.w = img(sine_exp_neg); } else { if( j_mod_4n < 2 * n ) { f.x = real(cosine_exp); f.y = img(cosine_exp); f.z = real(sine_exp_neg); f.w = img(sine_exp_neg); } else { if( j_mod_4n < 3 * n ) { f.x = real(cosine_exp); f.y = img(cosine_exp); f.z = real(sine_exp_pos); f.w = img(sine_exp_pos); } else { if( j_mod_4n < 4 * n ) { f.x = real(cosine); f.y = 0; f.z = real(sine_exp_pos); f.w = img(sine_exp_pos); } else { f.x = cosine; f.y = 0; f.z = real(sine_exp_pos); f.w = img(sine_exp_pos); } } } } p@f = f;
  31. 1 point
    you can also duplicate your DOPnet and disable everything related to vel since you copy it from the loweres sim eg: forces/buoyancy/vel advection/projection then just copy "compute turb","ramp turbscale","primary noise" from the gasUpres solver and you get a sparse upres. https://vimeo.com/388758247
  32. 1 point
    OBJ Wrangle https://vimeo.com/286025778 CPP Wrangle https://vimeo.com/171189268
  33. 1 point
    I just wish we can select/edit multiple points at a time in Curve Node. It's been so many years, the Curve Tool in Houdini still sucks.
  34. 1 point
    Now I get it , just to fine adjust and I'm goona posted hipnc .
  35. 1 point
    Here is another method resulting in a more organic look: The spheres grow until they touch, using a peak node within a custom solver. organic_sphere_growth.hipnc
  36. 1 point
    import time import hou # Save a backup of the current Houdini session def saveArchive(): # Get the file path of the current Houdini session # (Equivalent to $HIP/$HIPNAME) ogFile = hou.hipFile.path() # What do we want to save the archive file as? fileStr = hou.getenv("HIP")+"/backup/BKUP_"+time.strftime("%Y%m%d%H%M%S")+"_"+hou.hipFile.basename() # Make sure this is a string (I was getting errors if I didn't do this) fileStr = str(fileStr) # Save the archive file hou.hipFile.save(file_name=fileStr, save_to_recent_files=False) # Revert the name of the Houdini session to what it was prior to executing this function hou.hipFile.setName(ogFile) # Return the path of the newly saved file return fileStr
  37. 1 point
    I had a look at your scene - lowering the cloth constraint thickness to 0.001 and raising some of the dampening settings got most of the jittering out.
  38. 1 point
    Volume SOP creates vel.x, vel.y, vel.z field which is different to what VDB from Particles would create. VDB from particles would only create one field (ex: vel). In H documentation for VOLUME SOP, there are a couple of things I can quote. You can use VDB Vector Merge to merge the .x, .y, .z fields into one single VDB field. Volume SOP (as far as I know), is an old way of creating volumes, now that OpenVDB workflow is around, it's more efficient in terms of resolution and speed. There is an in-depth explanation if you Google "Volume Houdini".
  39. 1 point
    I also moved all the tumblr example files I've been sharing onto my new website that you can find here. https://www.richlord.com/tools
  40. 1 point
    In this Houdini tutorial I'm showing how you can create strange attractors based on several equations.
  41. 1 point
    I have modified your scene to allow both uv and shop_materialpath to flow through the fluid simulation. The higher the resolution, the better the quality of the attribute transfer. I generally discard FBX materials that are generated by Houdini and use a wrangle to re-write the @shop_materialpath to point to the material context I am using. Sometimes /shop, sometimes /mat. I have added a wrangle near the end of the Genesis3_Male node inside the FBX import node. This wrangle uses a simple IF statement to detect the old material name and reassign a new one that points to /mat context. Inside the /mat context I have dropped down a Principled shader and renamed it to "Face". Go ahead an extend this code by writing the material path code for the other 16 materials on this object. Then you can populate your /mat context with shaders and plug in your maps to those materials. if(s@shop_materialpath =="/obj/gen3_fbx/materials/Face") { s@shop_materialpath = "/shop/Face"; // Or use the /mat context. s@shop_materialpath = "/mat/Face"; } ap_119_FLIP.hiplc
  42. 1 point
    Just merge it and after foreach separate by some attribute.
  43. 1 point
    Not as polished as the pros...but I share what I can...there's probably a lot that can be automated but I'm not too proficient with coding yet. https://1drv.ms/u/s!AvgNse7E8aaygmHW_PWAPrMBYqWv
  44. 1 point
    In that case, try closing the "Scene View" tab and create a new one, that usually helps if it keeps rendering objects that it should not render (because of hide settings for instance)
  45. 1 point
    just point the cam_path parameter to your object level camera and adjust your wanted scaling.
  46. 1 point
    Here's one way, there's no doubt many ways to achieve this effect. As you say, if you set @v in sops and enable 'inherit from points' in rbd, it only works on the first frame. if you enable 'overwrite attributes from sops' and specify v, then it clashes with the rbd solver which is also trying to set @v, and your pieces fly away. One way around this is to detect the first frame a piece is made active, and only add @v for that frame. Here I use a timeshift to move the geometry back by 1 frame, and I copy active from the shifted geo to the normal geo with a new attib name @active_prev. In dops, I added a wrangle that just tests if @active != @active_prev. The only time they won't be different is on the first frame the piece is made active. As such, I add @v by pulling it directly from sops. The rest of the time, rbd will set @v by itself. chkbox_fix.hipnc
  47. 1 point
    Last update for today. Overall look is quite o.k., though the surface tension still affects the frozen particles and probably causes jitter in the melted particles. Apply particle separation is enabled this time. iceCream_melting_001_a_0144.hiplc
  48. 1 point
    For best rendering efficiency (avoid using caustics for illuminating your scene) you can combine two main light types for car headlights, tail lights and whatever lights. It's a common approach btw. I'd probably save the glows for comp but you "could" put a low res volume container around each light to pick up some glow. The other light effects are lens effects (flares) and you can save these for comp. If you want to use depth of field, you can use bokeh to get that type of lens effect in the render. First light types embedded in the light fixture only used to light the fixture and the components around it. Second set of lights using ies illumination profiles for illuminating all surrounding objects and not the light fixture. The above lights come in pairs of course. If your headlight has 4 illumination sources, you'd have 4 pairs of lights for 8 in total. Embedded Lens Spherical Area Lights One light embedded in the light fixture itself. Use a spherical area light and turn on rendering of light geometry. Lens is to be modelled as a two sided surface and interior chrome parts properly modelled. A displacement shader is applied to the inside face of the lens to get a realistic look. IES Lights for illuminating surroundings Pick a decent ies profile from the thousands available on line by companies that provide these (phillips, ge, rudd, etc). I just threw any ies light profile in there that is kinda ok but not really. Go find a profile that works for you. Or just use a cone on top of the disk area light as is. simple_headlight_v004.zip
  49. 1 point
    attached is the modified file that should do what you need. depending on the number of polygons you may want to go the hdk-route. hth. petz edges1.hipnc
  50. 1 point
    have a look at the pointneighbour and primneighbour expression. maybe you could adapt the file in the link below to do what you need. the principle is quite similar. hth. petz