You can do destructive modeling in Houdini. Simply model as you want, add a null and set it to “locked” (red on the node). Now you can delete all previous nodes.
This is the same as “delete history” in Maya.
Found 8 posts.
Search results Show results as topic list.
Houdini Lounge » How about a MODELING module for Houdini?
- danylyon
- 8 posts
- Offline
Technical Discussion » PBR layered Material
- danylyon
- 8 posts
- Offline
Thanks for checking it out!
Be sure to read the installation instructions:
This shader uses it’s own bsdf reflectence function, that needs to be installed manually. To do so, right click on the OTL, choose “Type Properties”. Go to “Extra Files”, select “specular_eval.vex” and click on “Save as File”. Save it to:
C:\Program Files\Side Effects Software\Houdini 13.0.198.21\houdini\vex\CVex
Or for Mac:
/Library/Frameworks/Houdini.framework/Versions/13.0.198.21/Resources/houdini/vex/CVex
and the corresponding folder on Linux. Do the same for “specular_sample.vex”.
Let me know how it's working for you and if you need any improvements.
Be sure to read the installation instructions:
This shader uses it’s own bsdf reflectence function, that needs to be installed manually. To do so, right click on the OTL, choose “Type Properties”. Go to “Extra Files”, select “specular_eval.vex” and click on “Save as File”. Save it to:
C:\Program Files\Side Effects Software\Houdini 13.0.198.21\houdini\vex\CVex
Or for Mac:
/Library/Frameworks/Houdini.framework/Versions/13.0.198.21/Resources/houdini/vex/CVex
and the corresponding folder on Linux. Do the same for “specular_sample.vex”.
Let me know how it's working for you and if you need any improvements.
Technical Discussion » PBR layered Material
- danylyon
- 8 posts
- Offline
Hi
I created a shader, specifically for PBR. It's meant for complex and realistic surfaces. And is now ready for Houdini 13!
http://www.orbolt.com/asset/_danylyon::PBR_layered_material [orbolt.com]
It's written in VEX and the code is open for you to use if you buy it.
If you're interested to hear any updates subscribe to my newsletter: http://eepurl.com/G4t9r [eepurl.com]
Features:
I created a shader, specifically for PBR. It's meant for complex and realistic surfaces. And is now ready for Houdini 13!
http://www.orbolt.com/asset/_danylyon::PBR_layered_material [orbolt.com]
It's written in VEX and the code is open for you to use if you buy it.
If you're interested to hear any updates subscribe to my newsletter: http://eepurl.com/G4t9r [eepurl.com]
Features:
- up to 3 individual material layers realistically mixed
- energy conserving and view dependent
- basic SSS
- refraction with basic dispersion and absorption
- translucency
- emission
- support for different uv sets
- Mari UDIM support
- individual front and back shading
- support for Cd and Alpha attribute
- bump map (normal and vector)
- built in bump noise
- built in flakes
- anisotropy (with maps)
- specular and metal specular
- adjustable specular radius and falloff
- adjustable specular sharpness at glancing angle
- adjustable roundness of the specular peak
- tint specular
- diffuse roughness and sheen
- RGB masks for individual layers
- AOVs (reflection, refraction, diffuse, emission, sss, Z, uv, velocity, normal, position, facing)
- displacement (along normal, object space or tangent space, compatible with ZBrush)
- optimization (override shadow, alpha and turn off features in reflections)
- Point based caching (experimental)
Be sure to read the help card! Click the ?
Technical Discussion » tangent vector displacement maps from Zbrush 4 R4
- danylyon
- 8 posts
- Offline
I had some sucess doing it in VEX. (sorry no VOP)
Down the road, the main problem is, ZBrush has an akward way to generate those maps.. Mainly, in ZBrush, when you subdivde a mesh, it changes the level 0!
In Vex to calculate the tangents I used (import uvs into vector “uv”):
udir = normalize((Du(P)*Dv(uv.y)-Dv(P)*Du(uv.y)) / (Du(uv.x)*Dv(uv.y)-Dv(uv.x)*Du(uv.y)));
vdir = normalize(cross(normalize(N), udir));
The Vectors need to be in Object space:
vector Pobj = ptransform(“space:camera”, “spacebject”, P);
vector Nobj = normalize(ntransform(“space:current”, “spacebject”, normalize(N)));
vector udiro = normalize(vtransform(“space:current”, “spacebject”, udir));
vector vdiro = normalize(vtransform(“space:current”, “spacebject”, vdir));
Then you can basically add them together (vector “amount” is the zbrush map)
PobjNew = Pobj + amount.g * vdiro - amount.b * Nobj + amount.r * udiro;
Then convert Back “PobjNew” to current / camera space and recompute the normal
P = ptransform(“spacebject”,“space:camera”, PobjNew);
N = normalize(computenormal(P, normalize(N), Ng));
In ZBrush you must set Tangent FlipAndSwitch to 7
hope that helps a bit.
Down the road, the main problem is, ZBrush has an akward way to generate those maps.. Mainly, in ZBrush, when you subdivde a mesh, it changes the level 0!
In Vex to calculate the tangents I used (import uvs into vector “uv”):
udir = normalize((Du(P)*Dv(uv.y)-Dv(P)*Du(uv.y)) / (Du(uv.x)*Dv(uv.y)-Dv(uv.x)*Du(uv.y)));
vdir = normalize(cross(normalize(N), udir));
The Vectors need to be in Object space:
vector Pobj = ptransform(“space:camera”, “spacebject”, P);
vector Nobj = normalize(ntransform(“space:current”, “spacebject”, normalize(N)));
vector udiro = normalize(vtransform(“space:current”, “spacebject”, udir));
vector vdiro = normalize(vtransform(“space:current”, “spacebject”, vdir));
Then you can basically add them together (vector “amount” is the zbrush map)
PobjNew = Pobj + amount.g * vdiro - amount.b * Nobj + amount.r * udiro;
Then convert Back “PobjNew” to current / camera space and recompute the normal
P = ptransform(“spacebject”,“space:camera”, PobjNew);
N = normalize(computenormal(P, normalize(N), Ng));
In ZBrush you must set Tangent FlipAndSwitch to 7
hope that helps a bit.
Technical Discussion » Specular Shader
- danylyon
- 8 posts
- Offline
I think your vectors are a bit off. Its generally a good Idea to define them once and not change them. I normally do this at the beginning:
vector Nn = normalize(N);
vector Nf = normalize(frontface(N, I)); // normal facing to the viewer
vector Vn = normalize(-I); // points towards the viewer
your V vector is actually an inverted N vector.
Also note the difference between I and V vectors. I goes from the Eye to the surface. Most of the time you will want the inverted (the V vector)
vector Nn = normalize(N);
vector Nf = normalize(frontface(N, I)); // normal facing to the viewer
vector Vn = normalize(-I); // points towards the viewer
your V vector is actually an inverted N vector.
Also note the difference between I and V vectors. I goes from the Eye to the surface. Most of the time you will want the inverted (the V vector)
Technical Discussion » Custom Render Property for Shader
- danylyon
- 8 posts
- Offline
Ah.. found the solution.
Just adding a “user property” on the ROP and get it's value with: renderstate(“object:name”, tmp); in the shader.
Just adding a “user property” on the ROP and get it's value with: renderstate(“object:name”, tmp); in the shader.
Technical Discussion » Custom Render Property for Shader
- danylyon
- 8 posts
- Offline
Thanks for the fast answer..
I know I could do it that way. Problem, I'd need to connect all my shaders to the parameter on the ROP.
If I render with a different ROP, it wouldn't update.
I'm looking for a more general “pipeline” solution.
I guess I could to a prerender script that updates the connections.. mhm. I hoped for something more clean.
I know I could do it that way. Problem, I'd need to connect all my shaders to the parameter on the ROP.
If I render with a different ROP, it wouldn't update.
I'm looking for a more general “pipeline” solution.
I guess I could to a prerender script that updates the connections.. mhm. I hoped for something more clean.
Technical Discussion » Custom Render Property for Shader
- danylyon
- 8 posts
- Offline
Hi
I would like to add a custom property to a ROP and query that inside of a shader.
Basically just add a float, name it and get it's value inside of a shader. Some global values, I would rather not define on a per shader basis.
I'm either missing something, or it's quite involved.
I got my extra attribute into the list of rendering attributes (had to make a IFDmantra.user.ds inside of soho/parameters).
Now getting the Parameter to be written to the IFD file seems even more involved (changing SOHO).. am I on track here? Is this the correct way?
I would like to add a custom property to a ROP and query that inside of a shader.
Basically just add a float, name it and get it's value inside of a shader. Some global values, I would rather not define on a per shader basis.
I'm either missing something, or it's quite involved.
I got my extra attribute into the list of rendering attributes (had to make a IFDmantra.user.ds inside of soho/parameters).
Now getting the Parameter to be written to the IFD file seems even more involved (changing SOHO).. am I on track here? Is this the correct way?
-
- Quick Links