The only value(*) in having a Python front end is just quick prototyping and exploring ideas in a Jupyter notebook or similar before committing to C/C++. If you just need Python and Houdini, as you said, use the Hython/hou module. Nice and easy.
* - I say this having done a thin wrapper myself. https://github.com/shadeops/pyHAPI [github.com]
Found 1242 posts.
Search results Show results as topic list.
Houdini Engine API » Official python bindings?
- wolfwood
- 4271 posts
- Offline
Solaris and Karma » Moana Island into USD with Solaris
- wolfwood
- 4271 posts
- Offline
Very cool indeed. I'm especially interested in the memory requirements so far, really promising! When attempting this in Mantra I ended up having to use a Google Cloud instance that had +130GB of RAM to be renderable all at once. (This was using a heavily nested packed primitive workflow.)
Technical Discussion » Move points at render time?
- wolfwood
- 4271 posts
- Offline
Definitely RFE worthy. I would love a more formal CVEX Geometry Shader that would allow manipulation of geometry objects. Internally we did exactly this and the lighters use it to do last minute tweaks to geometry they get from the FX dept. Saves from having to destroy the filers from another intermediate cache.
So ya, RFE away!
So ya, RFE away!
Edited by wolfwood - 2017年5月14日 17:07:24
Technical Discussion » Move points at render time?
- wolfwood
- 4271 posts
- Offline
If your geometry is just points or curves you can use either the Point or Curve Engine Procedural to do this without eating up a license, basically allowing you to run a SOP network on geometry.
Houdini's Fur system uses this approach actually if you want a robust example.
A simple example is attached. Just render a few different frames to see the geo move.
Houdini's Fur system uses this approach actually if you want a robust example.
A simple example is attached. Just render a few different frames to see the geo move.
Work in Progress » Equation Solver - a scandalously VEXy asset
- wolfwood
- 4271 posts
- Offline
Houdini Lounge » Rigid Transform from Deformed Geometry
- wolfwood
- 4271 posts
- Offline
I've used this for prototyping a tool that would search published geo datasets where the artists “forgot” to leverage instancing.
http://elonen.iki.fi/code/misc-notes/affine-fit/ [elonen.iki.fi]
Comes in handy when a 1,000,000 poly object is actually composed of a much smaller instancible subset of geo that was copy, pasted, and combined in Maya.
http://elonen.iki.fi/code/misc-notes/affine-fit/ [elonen.iki.fi]
Comes in handy when a 1,000,000 poly object is actually composed of a much smaller instancible subset of geo that was copy, pasted, and combined in Maya.
Technical Discussion » VEX operator type vs Point Wrangle performance
- wolfwood
- 4271 posts
- Offline
Nope, it more or less compiles down into the same thing.
If you go inside the point wrangler and into vop sop, you can right click and select “View Code”. More or less the same thing as you would type yourself.
If you go inside the point wrangler and into vop sop, you can right click and select “View Code”. More or less the same thing as you would type yourself.
Technical Discussion » [SOLVED] cvex_bsdf doesn't work for me
- wolfwood
- 4271 posts
- Offline
If you want to do custom component labels you'll need to do the following-
cvex ggx_eval (
// required
vector u = 0;
vector v = 0;
int bounces = 0;
export vector eval = 0;
export vector refl = 0.5;
export float pdf = 0;
// args
int bouncemasklabels = 0;
vector ng = 0;
float alpha = 0.1;
) {
if (bounces & bouncemasklabels) {
….
}
}
surface blah(…, string label = “reflect”) {
f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, label,
“bouncemasklabels”, bouncemask(label),
“ng”, tnN,
“alpha”, alpha);
That way if you need to have extra component labels in addition to coat, diffuse, reflect etc your cvex shader will support it.
cvex ggx_eval (
// required
vector u = 0;
vector v = 0;
int bounces = 0;
export vector eval = 0;
export vector refl = 0.5;
export float pdf = 0;
// args
int bouncemasklabels = 0;
vector ng = 0;
float alpha = 0.1;
) {
if (bounces & bouncemasklabels) {
….
}
}
surface blah(…, string label = “reflect”) {
f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, label,
“bouncemasklabels”, bouncemask(label),
“ng”, tnN,
“alpha”, alpha);
That way if you need to have extra component labels in addition to coat, diffuse, reflect etc your cvex shader will support it.
Technical Discussion » [SOLVED] cvex_bsdf doesn't work for me
- wolfwood
- 4271 posts
- Offline
You need to provide a label, it can't be blank otherwise it won't run.
$f = cvex_bsdf(“henyeygreenstein_eval”, “henyeygreenstein_sample”,
“label”, “volume”, “phase”, 0.5);
For example here is one of the ones we use in production-
$f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, “reflect”,
“ng”, $tnN,
“alpha”, $alpha);
There is a builtin heneygreenstein which is why the second example you provided works.
$f = cvex_bsdf(“henyeygreenstein_eval”, “henyeygreenstein_sample”,
“label”, “volume”, “phase”, 0.5);
For example here is one of the ones we use in production-
$f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, “reflect”,
“ng”, $tnN,
“alpha”, $alpha);
There is a builtin heneygreenstein which is why the second example you provided works.
Technical Discussion » alembicGetArchiveMaxCacheSize()
- wolfwood
- 4271 posts
- Offline
olliRJL
Thanks - yeah I got that it's the number of handles to alembic archives but what does for example the GL implementation of abc primitives actually do if I have say 100 unique (static) abc archives referenced and the cache size is the default… will it start juggling the data in'n'out or is it only a concern when accessing animated archives?
…and I guess there's no way to set the cache size through the environment?
You can set it in 456.py and be done with it. Although before jumping through hoops it might be best to profile it and see if it actually has an impact on performance.
Technical Discussion » alembicGetArchiveMaxCacheSize()
- wolfwood
- 4271 posts
- Offline
I believe its a cache of IArchive references, handles to the various Alembic files themselves. When you are using more than 50 alembic archives the archive reference that was used longest ago is released and a new handle created. Whenever one of our tools assembles a scene it sets the cache size to be 1024, but that's mainly cause we typically use 1000+ archives for a bigger shots.
Versions of Houdini before 12.5.487 you *had* to set your cache size to always be more than the number of alembic files you'd be using otherwise caches might ensue. This bug has since long been fixed.
Versions of Houdini before 12.5.487 you *had* to set your cache size to always be more than the number of alembic files you'd be using otherwise caches might ensue. This bug has since long been fixed.
Technical Discussion » IOR > surface model VOP > metals
- wolfwood
- 4271 posts
- Offline
Houdini Indie and Apprentice » How to reference Intrinsic attribute?
- wolfwood
- 4271 posts
- Offline
http://www.sidefx.com/docs/houdini13.0/vex/functions/primintrinsic [sidefx.com]
There is also a detailintrinsic() too that doesn't show up in the help. Same function prototypes but without the prim num.
There is also a detailintrinsic() too that doesn't show up in the help. Same function prototypes but without the prim num.
SI Users » Batch render licensing - potential dealbreaker?
- wolfwood
- 4271 posts
- Offline
With 3rd party renderers you would still use HBatch lics to generate .ass files in the case of Arnold.
While that may seem expensive, given H13's packed prims and alembic, its really easy to setup delayed load setups for rendering these days. You still have to generate .ifd/.ass files, but they ideally should be very very small and quick to generate.
Granted, that won't always be the case, but that's when you do the cost analysis of whether you need to buy more batch licenses or invest in time in optimizing your setup/approach.
While that may seem expensive, given H13's packed prims and alembic, its really easy to setup delayed load setups for rendering these days. You still have to generate .ifd/.ass files, but they ideally should be very very small and quick to generate.
Granted, that won't always be the case, but that's when you do the cost analysis of whether you need to buy more batch licenses or invest in time in optimizing your setup/approach.
Houdini Indie and Apprentice » flip fluids ram usage
- wolfwood
- 4271 posts
- Offline
Houdini Lounge » New Maya bringing new rental price. Are Houdini?
- wolfwood
- 4271 posts
- Offline
stu
Where do you get the $2195 per month number?
Local Access License (floating), Houdini FX, Monthly.
http://www.sidefx.com/index.php?option=com_content&task=view&id=385&Itemid=190 [sidefx.com]
Houdini's monthly rental prices kinda encourage you to just buy it.
Technical Discussion » The New "import" keyword in H13
- wolfwood
- 4271 posts
- Offline
abvariant
Thanks, I'll try a more recent version and see where that gets me.
Just to verify, did this actually work for you or not?
Taking you scene, once I fixed the importTest VOP, so that it had a hidden Of parameter defaulted to 1, like the directlighting VOP, it then worked. No compiler errors and rendered a white sphere.
Technical Discussion » The New "import" keyword in H13
- wolfwood
- 4271 posts
- Offline
I'd also grab a newer build of Houdini if possible. It appears you are using 13.0.224, which is kinda old.
Technical Discussion » The New "import" keyword in H13
- wolfwood
- 4271 posts
- Offline
Well well.
The code generated by the built-in VOP results in-
// Code produced by: directlighting1
directlighting(
“inF”, f,
“inOf”, { 1, 1, 1 },
“inP”, vector(),
“inI”, vector(),
vs the same asset that has been copied to a different type name.
// Code produced by: importTest1
directlighting(
“inF”, f,
“inOf”, vector(),
“inP”, vector(),
“inI”, vector(),
Notice the inOf.
What I don't get is if the asset was copied directly why it would behave differently.
The code generated by the built-in VOP results in-
// Code produced by: directlighting1
directlighting(
“inF”, f,
“inOf”, { 1, 1, 1 },
“inP”, vector(),
“inI”, vector(),
vs the same asset that has been copied to a different type name.
// Code produced by: importTest1
directlighting(
“inF”, f,
“inOf”, vector(),
“inP”, vector(),
“inI”, vector(),
Notice the inOf.
What I don't get is if the asset was copied directly why it would behave differently.
Houdini Indie and Apprentice » Alembic export: UV problem
- wolfwood
- 4271 posts
- Offline
Sergey Chesnokov
Thanks!
It works, but I triangulated mesh instead using Clean SOP node.
Could you tell me how did you find out it? Is it your practice or there is an any tool for checking a mesh for artefacts?
Practice. Usually I'll append a Clean SOP and see if the point/prim counts match before and after the Clean. If different, there is some potentially bad geo. You can also use the PolyDoctor SOP with the various options set to Mark to help track down problems.
-
- Quick Links