Found 75 posts.
Search results Show results as topic list.
Houdini Lounge » SIGGRAPH videos
-
- Faitel
- 75 posts
- Offline
They've updated siggraph 2022 [www.sidefx.com] page, scroll down to Presentation section.
Houdini Lounge » 19.5 Daily Builds?
-
- Faitel
- 75 posts
- Offline
I guess SideFX will start to publish daily builds on Monday, as it was with h19 [www.sidefx.com]
Houdini Lounge » will houdini consider adopting the new C4D/blender like UI?
-
- Faitel
- 75 posts
- Offline
hMonkeywanglifu
Despite UX,UI really needs more love.
All you need is AXSC Dark Theme from Alex, optionally raise UI gamma to your liking.
You can grab it here: https://axelschoterman.com/resources [axelschoterman.com]
Or perhaps I'll actually finish mine and post that, which is quite similar![]()
Also, there is a flat theme shipped with Qlib [qlab.github.io]
Houdini Lounge » Any houdini 19.5 rumors?
-
- Faitel
- 75 posts
- Offline
DigipictionhabernirAlso, when will it be available as a video?
anyone can say some words on how was the presentation?
Houdini 19.5 Launch and Games Workshop: [www.sidefx.com]
The event is being recorded and will be available online on Wednesday July 20
Edited by Faitel - July 19, 2022 03:58:35
Houdini Lounge » Any houdini 19.5 rumors?
-
- Faitel
- 75 posts
- Offline
DigipictionhabernirWould this also mean support for nodes that aren't Material X? That would be awesome!polasti believe karma XPU will go beta with principled shader support. i will be surprised if they don't because everyone expecting this.
I have enough of render plugins ! please give us the best xpu render ever!
I don't think it would because of the quote from Materialx documentation [www.sidefx.com]:
MaterialX shading networks are designed to be portable between applications and renderers.
Because Karma XPU will never support the traditional VEX-based shaders used by Mantra and Karma CPU, MaterialX is probably the future of writing shaders for the Karma renderer.
Edited by Faitel - July 12, 2022 11:02:48
Houdini Lounge » Any houdini 19.5 rumors?
-
- Faitel
- 75 posts
- Offline
I bet for Houdini users sneak peek with an awesome soundtrack means as much as launch event

Edited by Faitel - July 9, 2022 04:42:54
Houdini Lounge » Could someone please explain this code to me?
-
- Faitel
- 75 posts
- Offline
gimletful
Hello, i am newbie to Houdini, i am watching the applied Houdini tutorial particle 3 as well, and i encountered this code. but i cannot get my head around.
@N = point (1, "P", @ptnum)- @P;
what does this code even mean.
i simply don't understand what is point (1, "P", @ptnum), it doesn't make sense. point is definitely not @P, it looks like a local variable, and what is the stuff in the bracket.
usually P would get followed by (x, y, z) but here 1 is not value 1 but the input.
can somebody point me to the right direction please.
Letters predefined by @ are attributes, you can find their values in Geometry Spreadsheet tab. In some cases, you may want to read attributes from another geometry, like here, from geometry connected to second input of attribute wrangle (All inputs have numbers starting from 0). @ can't read attributes from inputs other than 0, so you need special VEX function to read the attribute. You want to read Position attribute of current point from second input, so you need:
Point function, (there are also vertex(), prim(), detail() for attributes stored on vertices, primitives, details geometry components)
(
1, - input number (to read attribute from second input of attribute wrangle node)
"P", - attribute's name you want to read (N(normals),P(positon),"v"(velocity),"Cd"(color) etc.)
@ptnum - special type of attributes, contains number of current point(there are also @primnum(current primitive), @vtxnum( cur.vertex)
)
Attribute wrangle will pass over every point and calculate the code
@N = point (1, "P", @ptnum)- @P;Mathematically the code means:
Attribute wrangle(repeat calculations for every point from first(0) input):
Normal vector (x,y,z) = Second geometry's point position vector (x,y,z) - First geometry's point position vector (x,y,z)
PS:
Theoretically you can replace it with:
vector Normal = point(1, "P", @ptnum) - point(0, "P", @ptnum); //Vector variable Normal equal to vector position of point from first input minus vector position of point from second input)But there is no need to make it so complicated, @ allows you read and write attributes freely but only for components from first(0) input.
setpointattrib(0, "N", @ptnum, N); //replace normal attribute with Normal variable.
Simple tutorials about geometry components and math operations in 3d space [www.sidefx.com]
More advanced video tutorials about VEX programming and 3d math [www.sidefx.com]
Geometry attributes documentation [www.sidefx.com]
VEX functions reference list [www.sidefx.com]
Edited by Faitel - June 16, 2022 12:05:27
3rd Party » VirtuCamera plugin: Virtual camera for Houdini (Py3) and iOS
-
- Faitel
- 75 posts
- Offline
fabriciochamon
This is super cool , great job! thanks for sharing.
does it stream translation as well, like getting xforms from some AR type of camera ?
btw, regarding your question (1), use parm.setKeyframes() instead, and pass in a Keyframe() array, you'll get faster times than adding keyframes at every loop iteration, according to the docs. (see screenshot attached)
So maybe you could find a way to store all transforms during stream and set keyframes at a later stage ? (you'l need to have a frame range defined of course, as to know when its time to gather xforms and bake)
Thank you for the tip, Fabricio! I'll test it. I'm also thinking of shifting from recording in device to recording in chops as alternative mode because I see that there are a lot of other ways to utilize device xforms and maybe it isn't smart to lock everything just on python and camera. So, I am actively discovering CHOPs at the moment.
PS: Thanks for your videos

Houdini Indie and Apprentice » Vellum balloon - bouncing
-
- Faitel
- 75 posts
- Offline
I suggest turning off Friction with external collision objects (Vellum Solver DOP - Friction - External Enable) and disabling wind behavior for popaxis force (popaxisforce DOP - Behavior - Treat as Wind). They slow down objects by friction and wind resistance accordingly. Also, you can increase bend stiffness and decrease stretch stiffness to make your objects bouncier (ball like) but don't forget to increase the number of substeps in vellum solver to calculate the constraints properly. Another thing you can try to do is to tweak pop axis force to disable itself when an object is inside or outside a region (close to walls for example) or maybe to tie it with velocity somehow.
Houdini Indie and Apprentice » Better ways to smooth an object selectively?
-
- Faitel
- 75 posts
- Offline
In general I've used your method for side line extraction and smoothing (except vdbsmooth), plus some Sidefx labs tools like <Labs Edge Groups to Curve> to convert side line to curve and <Exoside Quadremesher>(Paid license) to get clean retopology.
Houdini Indie and Apprentice » Can you simulate pool / snooker in Houdini ?
-
- Faitel
- 75 posts
- Offline
Use RBD solver instead Bullet to get maximum precision. It is slower but more accurate.
Houdini Indie and Apprentice » Pattern generators for shader building.
-
- Faitel
- 75 posts
- Offline
Pattern generation is manipulation over pixels, so you need a pixel grid (Color node with resolution 512x512px for example) and node for image processing of the pixels (vopcop2filter for existing image planes or vopcop2generator which can generate image plane by itself). Inside VOP node you have power of all shading nodes, that means you can use patterns and noises, shading math etc. In global parameters you will see X, Y inputs, they are your U, V coordinates. If you feel uncomfortable with shading, I'd recommend Ben Cloward's [www.youtube.com] shading tutorials, the stuff he's teaching is software agnostic.
Edited by Faitel - May 31, 2022 15:53:17
3rd Party » VirtuCamera plugin: Virtual camera for Houdini (Py3) and iOS
-
- Faitel
- 75 posts
- Offline
aew928I've added audio playback support. That's not a perfect solution because of VirtuCamera's manual frame by frame playback mechanic, but better than nothing.
This is incredible! Working great for me so far. Just curious if there's a way to hear audio playback on the timeline while recording. Audio works during regular playback but not during recording initiated from the app. Thanks so much for your effort on this!
VirtuCamera plugin: Virtual camera for Houdini - Update 2.1.2
- PyVirtuCamera Library is updated to version 2.1.2 [GitHub [github.com]]
- Added support for scrubbing and playback audio files
Don't forget to remove VirtuCamera folder and otls/virtucamera-2.1.1.hda file from previous version and replace with new ones.
I'll upload demo video as soon as possible.
Tested on Windows 10, Houdini 19.0.622, iPhone 11.
Edited by Faitel - May 18, 2022 20:57:51
Houdini Lounge » will houdini consider adopting the new C4D/blender like UI?
-
- Faitel
- 75 posts
- Offline
3rd Party » VirtuCamera plugin: Virtual camera for Houdini (Py3) and iOS
-
- Faitel
- 75 posts
- Offline
I don't have access to Houdini FX version, but it still works with Houdini 19.0.589 Py3 Indie.
Houdini Learning Materials » KineFX tutorial/example request: Bouncing ball rig
-
- Faitel
- 75 posts
- Offline
I can't figure out a workflow (constraints relationships) for rigging basic bouncing ball with rotation, squash and stretch controls using KineFX.
I found those maya and blender tutorials, but I'm don't know how to replicate them or maybe I shouldn't and there is another Houdini specific solution. Please share your thoughts
Maya tutorial: https://www.youtube.com/watch?v=bNVANe192D8 [www.youtube.com]
Blender tutorial: https://www.youtube.com/watch?v=u38o_dOzd0w [www.youtube.com]
I found those maya and blender tutorials, but I'm don't know how to replicate them or maybe I shouldn't and there is another Houdini specific solution. Please share your thoughts

Maya tutorial: https://www.youtube.com/watch?v=bNVANe192D8 [www.youtube.com]
Blender tutorial: https://www.youtube.com/watch?v=u38o_dOzd0w [www.youtube.com]
Houdini Learning Materials » Rebuild of Entagma's Thinfilm Shader for using with 3Delight
-
- Faitel
- 75 posts
- Offline
OSL shader code for reference
//Thinfilm shader cobbled together from: //https://docs.chaosgroup.com/display/OSLShaders/Thin+Film+Shader //and: //https://www.shadertoy.com/view/ls2Bz1 //copied together by your's truly, Entagma - Dec. 2020 //https://entagma.com/holiday-giveaway-mantra-thinfilm-shader/ //sequentially copied and modified to use with 3delight by Faitel - Dec. 2022 #include "stdosl.h" surface thinfilm ( color col = color(0) [[ string help = "Constant color", string label = "Color", string widget = "number"]], float fintensity = 0 [[ string help = "Fresnel reduction multiplier", string label = "Intensity", string page = "Fresnel reduction", string widget = "number", float min = 0 ]], float fior = 1.4 [[ string help = "Index of reflection for fresnel reduction", string label = "Ior", string page = "Fresnel reduction", string widget = "number", float min = 0 ]], int sbiter = 8 [[ string help = "Number of spectral bands. 8 seems fine, 32 is excessive.", string label = "Iterations", string page = "Spectral Bands", string widget = "number", ]], int spfunc = 0 [[ string label = "Function", string page = "Spectral Bands", string widget = "mapper", string options = "Gems:0|" "Zucconi:1|" "Bruton:2|" ]], float thickness = 1 [[ string help = "Thin Film Thickness", string label = "Thickness", string page = "Thin Film", string widget = "number", float min = 0, float max = 1 ]], float thicknessMin = 100 [[ string help = "Minimal Thin Film Thickness", string label = "Thickness Min", string page = "Thin Film", string widget = "number", float min = 0, float max = 1000 ]], float thicknessMax = 900 [[ string help = "Maximal Thin Film Thickness", string label = "Thickness Max", string page = "Thin Film", string widget = "number", float min = 0, float max = 1000 ]], float nmedium = 1 [[ string help = "approximate refractive index of air", string label = "nmedium", string page = "Thin Film", string widget = "number", float min = 0, float max = 10 ]], float nfilm = 1.4 [[ string help = "approximate refractive index of water", string label = "nfilm", string page = "Thin Film", string widget = "number", float min = 0, float max = 10 ]], float ninternal = 1 [[ string help = "approximate refractive index of the lower material", string label = "ninternal", string page = "Thin Film", string widget = "number", float min = 0, float max = 10 ]], output color outColor = 0 ) { float saturate(float x) { return min(1.0, max(0.0,x)); } vector saturate (vector x) { return min(color(1.0,1.0,1.0), max(color(0.0,0.0,0.0),x)); } // --- Spectral Zucconi -------------------------------------------- // By Alan Zucconi // Based on GPU Gems: https://developer.nvidia.com/sites/all/modules/custom/gpugems/books/GPUGems/gpugems_ch08.html // But with values optimised to match as close as possible the visible spectrum // Fits this: https://commons.wikimedia.org/wiki/File:Linear_visible_spectrum.svg // With weighter MSE (RGB weights: 0.3, 0.59, 0.11) vector bump3y(vector x, vector yoffset) { vector y = color(1.0,1.0,1.0) - x * x; y = saturate(y-yoffset); return y; } vector spectral_zucconi(float w) { // w: [400, 700] // x: [0, 1] float x = saturate((w - 400.0)/ 300.0); vector cs = color(3.54541723, 2.86670055, 2.29421995); vector xs = color(0.69548916, 0.49416934, 0.28269708); vector ys = color(0.02320775, 0.15936245, 0.53520021); return bump3y ( cs * (x - xs), ys); } // --- GPU Gems ------------------------------------------------------- // https://developer.nvidia.com/sites/all/modules/custom/gpugems/books/GPUGems/gpugems_ch08.html vector bump3(vector x) { vector y = color(1.0,1.0,1.0) - x * x; y = max(y, {0.,0.,0.}); return y; } vector spectral_gems (float w) { // w: [400, 700] // x: [0, 1] float x = clamp((w - 400.0)/ 300.0, 0., 1.); float r = 4. * (x - 0.75); float g = 4. * (x - 0.5); float b = 4. * (x - 0.25); vector rgb = {r,g,b}; return bump3(rgb); } // --- Approximate RGB values for Visible Wavelengths ------------------ // by Dan Bruton // http://www.physics.sfasu.edu/astro/color/spectra.html // https://stackoverflow.com/questions/3407942/rgb-values-of-visible-spectrum vector spectral_bruton(float w) { vector c; if (w >= 380. && w < 440.) c = color ( -(w - 440.) / (440. - 380.), 0.0, 1.0 ); else if (w >= 440. && w < 490.) c = color ( 0.0, (w - 440.) / (490. - 440.), 1.0 ); else if (w >= 490. && w < 510.) c = color ( 0.0, 1.0, -(w - 510.) / (510. - 490.) ); else if (w >= 510. && w < 580.) c = color ( (w - 510.) / (580. - 510.), 1.0, 0.0 ); else if (w >= 580. && w < 645.) c = color ( 1.0, -(w - 645.) / (645. - 580.), 0.0 ); else if (w >= 645. && w <= 780.) c = color ( 1.0, 0.0, 0.0 ); else c = color ( 0.0, 0.0, 0.0 ); return saturate(c); } //--- OSL Thinfilm Shader --- /* Amplitude reflection coefficient (s-polarized) */ float rs(float n1, float n2, float cosI, float cosT) { return (n1 * cosI - n2 * cosT) / (n1 * cosI + n2 * cosT); } /* Amplitude reflection coefficient (p-polarized) */ float rp(float n1, float n2, float cosI, float cosT) { return (n2 * cosI - n1 * cosT) / (n1 * cosT + n2 * cosI); } /* Amplitude transmission coefficient (s-polarized) */ float ts(float n1, float n2, float cosI, float cosT) { return 2 * n1 * cosI / (n1 * cosI + n2 * cosT); } /* Amplitude transmission coefficient (p-polarized) */ float tp(float n1, float n2, float cosI, float cosT) { return 2 * n1 * cosI / (n1 * cosT + n2 * cosI); } // cosI is the cosine of the incident angle, that is, cos0 = dot(view angle, normal) // lambda is the wavelength of the incident light (e.g. lambda = 510 for green) // From http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/thin-film-interference-for-computer-graphics-r2962 float thinFilmReflectance(float cos0, float lambda, float thickness, float n0, float n1, float n2) { float PI=M_PI; //Pi osl constant // compute the phase change term (constant) float d10 = (n1 > n0) ? 0 : PI; float d12 = (n1 > n2) ? 0 : PI; float delta = d10 + d12; // now, compute cos1, the cosine of the reflected angle float sin1 = pow(n0 / n1, 2) * (1 - pow(cos0, 2)); if (sin1 > 1) return 1.0; // total internal reflection float cos1 = sqrt(1 - sin1); // compute cos2, the cosine of the final transmitted angle, i.e. cos(theta_2) // we need this angle for the Fresnel terms at the bottom interface float sin2 = pow(n0 / n2, 2) * (1 - pow(cos0, 2)); if (sin2 > 1) return 1.0; // total internal reflection float cos2 = sqrt(1 - sin2); // get the reflection transmission amplitude Fresnel coefficients float alpha_s = rs(n1, n0, cos1, cos0) * rs(n1, n2, cos1, cos2); // rho_10 * rho_12 (s-polarized) float alpha_p = rp(n1, n0, cos1, cos0) * rp(n1, n2, cos1, cos2); // rho_10 * rho_12 (p-polarized) float beta_s = ts(n0, n1, cos0, cos1) * ts(n1, n2, cos1, cos2); // tau_01 * tau_12 (s-polarized) float beta_p = tp(n0, n1, cos0, cos1) * tp(n1, n2, cos1, cos2); // tau_01 * tau_12 (p-polarized) // compute the phase term (phi) float phi = (2 * PI / lambda) * (2 * n1 * thickness * cos1) + delta; // finally, evaluate the transmitted intensity for the two possible polarizations float ts = pow(beta_s, 2) / (pow(alpha_s, 2) - 2 * alpha_s * cos(phi) + 1); float tp = pow(beta_p, 2) / (pow(alpha_p, 2) - 2 * alpha_p * cos(phi) + 1); // we need to take into account conservation of energy for transmission float beamRatio = (n2 * cos2) / (n0 * cos0); // calculate the average transmitted intensity (if you know the polarization distribution of your // light source, you should specify it here. if you don't, a 50%/50% average is generally used) float myt = beamRatio * (ts + tp) / 2; // and finally, derive the reflected intensity return 1 - myt; } float cos0 = abs(dot(I , N)); float myt = clamp(thickness, 0., 1.); float thick=thicknessMin*(1.0-myt)+thicknessMax*myt; color outcol = col; //get color; float fint = fintensity; //get fresnel multiplier float fnfilm = fior; //get fresnel ior int maxiter = sbiter; //number of spectral bands. 8 seems fine, 32 is excessive. for(int i = 0; i < maxiter; i++) { float lambda = 400. + (300. * (float(i)/float(maxiter))); //Spectral bands ranging from 400nm to 700nm float ref = thinFilmReflectance(cos0, lambda, thick, nmedium, nfilm, ninternal); //we don't need no fresnel, so we need to divide it out again //I know - being cheap, but atm just not in the mood for algebra float kr, kt; fresnel(-I, N, fnfilm, kr, kt); kr = kr; if (fint == 0 ) ref = ref; if (fint > 0 ) ref = ref / (kr * fint); vector rgb; if (spfunc == 0) rgb = spectral_gems(lambda); if (spfunc == 1) rgb = spectral_zucconi(lambda); if (spfunc == 2) rgb = spectral_bruton(lambda); rgb = rgb * ref; outcol = outcol + rgb; } outColor = outcol / float(maxiter); }
Edited by Faitel - Dec. 24, 2021 15:35:59
Houdini Learning Materials » Rebuild of Entagma's Thinfilm Shader for using with 3Delight
-
- Faitel
- 75 posts
- Offline
I've rebuilt mantra shader from Entagma Mantra Thin Film Shader [entagma.com] tutorial to use it with 3Delight [www.3delight.com] render engine.
Attached archive contains Thinfilm custom osl utility node (thinfilm.oso) and hip file from Entagma with additional shader.
How to use:
1. Download and extract files from the archive (Thinfilm_Shader_3Delight.zip)
2. Copy compiled shader file - thinfilm.oso to your _3DELIGHT_USER_OSO_PATH system variable folder. See the video [vimeo.com] to learn how to setup the system environment variable if don't have one.
3. Open Houdini to check that custom node is added to mat context - tab - 3Delight - Addons - Thinfilm
4. Open Soapfilm_bubble_FLIP_Render_3delight example file
5. Complete instructions at the file.
Render time comparison:
Mantra: 1 hour 17 min.
3Delight: 1 min 29 sec.
Additional links:
3Delight's osl support [documentation.3delightcloud.com]
3Delight's osl metadata [documentation.3delightcloud.com]
3Delight's standalone tools [documentation.3delightcloud.com]
OSL Specification [github.com]
Edited by Faitel - Dec. 24, 2021 15:52:15
Work in Progress » KineFX and Crowds: Robot Project
-
- Faitel
- 75 posts
- Offline
Look cool, Daryl. Could you explain the setup or point to discussion where you learned about it, please?
Houdini Lounge » how to extract materials in solaris from scene_import_all node ?
-
- Faitel
- 75 posts
- Offline
Yes, it's possible. You need to place Edit material(network) LOP, select material in parameter and press load.
Edited by Faitel - Nov. 9, 2021 08:27:40
-
- Quick Links