Found 209 posts.
Search results Show results as topic list.
Houdini Lounge » (de)activating nodes via parameter interface
- N-G
- 209 posts
- Offline
You can create a button and then create a callback script which let you write proper Python or HScript code for doing that.
Technical Discussion » Different colliders for different POP groups?
- N-G
- 209 posts
- Offline
Houdini Indie and Apprentice » VEX: Adding pts inbetween pts (and shifting point IDs)
- N-G
- 209 posts
- Offline
Greeting!
You can't do this straightly in VEX, instead you can create your point afterward use Sort SOP to resort point numbers based on an attribute.
See the following HIP file.
You can't do this straightly in VEX, instead you can create your point afterward use Sort SOP to resort point numbers based on an attribute.
See the following HIP file.
Houdini Indie and Apprentice » I can't get the smoke out.
- N-G
- 209 posts
- Offline
You should choose Initialization Static in Max Bounds tab of Gas Resize Fluid Dynamic DOP node.
Technical Discussion » Slow access to GU_Detail within custom C++ function for VEX!
- N-G
- 209 posts
- Offline
Hello everyone!
I have a quite simple C++ code:
The problem is that calling wetness from a wrangle in Houdini is really slow but if I uncheck Enable Multithreading in VOP it runs almost fine!
Can anyone help me please?
Thank you so much!
I have a quite simple C++ code:
#include <iostream> #include <VEX/VEX_VexOp.h> #include <OP/OP_Director.h> #include <SOP/SOP_Node.h> #include <GEO/GEO_Primitive.h> #include <GEO/GEO_PrimVolume.h> #include <UT/UT_Lock.h> static UT_Lock theMutex; template <VEX_Precision PREC> static void wetmap(int, void *argv[], void *) { //UT_Lock::Scope lock{theMutex}; VEXvec3<PREC> *resultCd = static_cast<VEXvec3<PREC>*>(argv[0]); const char *surfaceAddress = static_cast<const char *>(argv[1]); VEXvec3<PREC> *P = static_cast<VEXvec3<PREC>*>(argv[2]); VEXvec3<PREC> color{*P}; SOP_Node* surfaceNode = OPgetDirector()->findSOPNode(surfaceAddress); OP_Context context{CHgetEvalTime()}; GU_DetailHandle geo = surfaceNode->getCookedGeoHandle(context); // const GEO_PrimVolume* volume = static_cast<const GEO_PrimVolume *> (geo.gdp()->getGEOPrimitive(0)); // color = volume->getValue(*P, volume->getVoxelHandle()); *resultCd = color; } void newVEXOp(void *) { using UT::Literal::operator""_sh; new VEX_VexOp("wetness@&VSV"_sh, wetmap<VEX_32>, wetmap<VEX_64> ); }
Can anyone help me please?
Thank you so much!
Houdini Indie and Apprentice » Removing backfaces at render time with opengl ROP?
- N-G
- 209 posts
- Offline
Another way is to add vm_geometrygroup parameter from Edit Rendering Parameters and pass your group of primitives which you want to visible to the renderer...
Houdini Indie and Apprentice » Bypass enable solver
- N-G
- 209 posts
- Offline
When you bypass an enable solver Houdini doesn't remove it form dynamic context instead it changes its datatype from SIM_SolverEnable to SIM_SolverStatic means that if there is a static solver instead of enable solver.
As a static solver does nothing at all and it doesn't let information to pass and send to rigid body solver.
This is why you get just an animated object when bypass Enable Solver!
I don't know why SideFX chose this odd way!
It would be great if one of their developers explains the reason.
As a static solver does nothing at all and it doesn't let information to pass and send to rigid body solver.
This is why you get just an animated object when bypass Enable Solver!
I don't know why SideFX chose this odd way!
It would be great if one of their developers explains the reason.
Houdini Indie and Apprentice » Removing backfaces at render time with opengl ROP?
- N-G
- 209 posts
- Offline
I couldn't find a way for this to work either!
But you can delete faces which is away from camera by VEX or use Group SOP with writing address of your camera in Backface from parameter in Keep by Normal section thereafter you can use a Blast SOP to delete them.
Hope this helps!
But you can delete faces which is away from camera by VEX or use Group SOP with writing address of your camera in Backface from parameter in Keep by Normal section thereafter you can use a Blast SOP to delete them.
Hope this helps!
Edited by N-G - Feb. 3, 2021 05:06:45
Technical Discussion » cop relative path to sop?
- N-G
- 209 posts
- Offline
Hello!
The way which is worked for me was to first promote string file name and then write op:`opfullpath("../../UV_world_pos")` there...
The way which is worked for me was to first promote string file name and then write op:`opfullpath("../../UV_world_pos")` there...
Technical Discussion » Poor performance custom function for VEX using HDK!
- N-G
- 209 posts
- Offline
Technical Discussion » Poor performance custom function for VEX using HDK!
- N-G
- 209 posts
- Offline
Hey folks!
I got some troubles while creating a custom VEX function via HDK.
I need to access geometry data inside the function at different frame on specific node inside my custom C++ function which should be used by VEX and I used two methods for doing this:
The FPS for the first method on my machine while playing is around 3 and for the second method is around 10.
Since we can't access geometry data in VEX directly I write similar code in VEX just for a rough comparison with HDK versions.
The FPS for pure VEX version is around 20!
Here is the VEX code:
Can anyone explain why pure VEX version is really faster than two HDK methods above?
Thank you so much!
I got some troubles while creating a custom VEX function via HDK.
I need to access geometry data inside the function at different frame on specific node inside my custom C++ function which should be used by VEX and I used two methods for doing this:
- Using GU_SopQuery class to access geometry data on the given node address in for example "op:/obj/geo1/OUT_Volume" format.
Here is the sample:#include <iostream> #include <VEX/VEX_VexOp.h> #include <OP/OP_Director.h> #include <GU/GU_Detail.h> #include <SOP/SOP_Node.h> #include <GEO/GEO_VolumeSampler.h> #include <GU/GU_PrimVolume.h> #include <GU/GU_SopResolver.h> template <VEX_Precision PREC> static void wetmap(int argc, void *argv[], void *) { const char *surfaceAddress = static_cast<const char *>(argv[0]); const VEXvec3<PREC> *P = static_cast<const VEXvec3<PREC>*>(argv[1]); const VEXvec3<PREC> *Cd = static_cast<const VEXvec3<PREC>*>(argv[2]); VEXvec3<PREC> *resultCd = static_cast<VEXvec3<PREC>*>(argv[3]); *resultCd = *Cd; exint currentFrame = CHgetFrameFromTime(CHgetEvalTime()); GU_SopQuery quary; for (exint frame = currentFrame; frame > 0; --frame) { quary.setFrame(frame); GU_ConstDetailHandle handle = quary.getDetail(surfaceAddress); if (handle.isValid()) { const GU_Detail *gdp = handle.gdp(); const GEO_PrimVolume* volume = static_cast<const GEO_PrimVolume *>(gdp->getGEOPrimitive(0)); if (volume != nullptr) { GEO_VolumeSampler volumeSampler{volume}; *resultCd = volumeSampler.getValueF(*P); } } } } void newVEXOp(void *) { using UT::Literal::operator""_sh; new VEX_VexOp("wetness@SVV&V"_sh, // Signature wetmap<VEX_32>, // Evaluator 32 wetmap<VEX_64> // Evaluator 64 ); }
- Creating a OP_Context instance at specific frame and pass it to SOP_Node::getCookedGeoHandle function to access to geometry data.
Here is the sample:#include <iostream> #include <VEX/VEX_VexOp.h> #include <OP/OP_Director.h> #include <GU/GU_Detail.h> #include <SOP/SOP_Node.h> #include <GEO/GEO_VolumeSampler.h> #include <GU/GU_PrimVolume.h> #include <GU/GU_SopResolver.h> template <VEX_Precision PREC> static void wetmap(int argc, void *argv[], void *) { const char * surfaceAddress = static_cast<const char *>(argv[0]); VEXvec3<PREC> *P = static_cast<VEXvec3<PREC>*>(argv[1]); VEXvec3<PREC> *Cd = static_cast<VEXvec3<PREC>*>(argv[2]); VEXvec3<PREC> *resultCd = static_cast<VEXvec3<PREC>*>(argv[3]); *resultCd = *Cd; SOP_Node *sufaceNode = OPgetDirector()->findSOPNode(surfaceAddress); OP_Context context{OP_Context::CurrentEvalTime}; exint currentFrame = context.getFrame(); if(sufaceNode != nullptr) { GEO_VolumeSampler volume; GU_DetailHandle gd_handle = sufaceNode->getCookedGeoHandle(context); if(!gd_handle.isNull()) { const GU_Detail* gdp = gd_handle.gdp(); const GEO_PrimVolume* volume = static_cast<const GEO_PrimVolume *>(gdp->getGEOPrimitive(0)); GEO_VolumeSampler volumeSampler{volume}; if (volume != nullptr) { for (exint i = currentFrame; i > 0; --i) { fpreal sample = volumeSampler.getValueF(*P); *resultCd = sample; } } } } } void newVEXOp(void *) { using UT::Literal::operator""_sh; new VEX_VexOp("wetness@SVV&V"_sh, // Signature wetmap<VEX_32>, // Evaluator 32 wetmap<VEX_64> // Evaluator 64 ); }
The FPS for the first method on my machine while playing is around 3 and for the second method is around 10.
Since we can't access geometry data in VEX directly I write similar code in VEX just for a rough comparison with HDK versions.
The FPS for pure VEX version is around 20!
Here is the VEX code:
for (int i = int(@Frame); i > 0; --i) { v@Cd = volumesample(chs("address"), 0, v@P); }
Thank you so much!
Edited by N-G - Jan. 28, 2021 05:29:22
Technical Discussion » RBD interpenetration issue
- N-G
- 209 posts
- Offline
Hi!
Set the Collision Geometry option for plane to Implicit Plane and boxes to Implicit Box with a little bit offset to fix this.
I highly recommend to use bullet solver instead because it is so faster than RBD Solver.
Set the Collision Geometry option for plane to Implicit Plane and boxes to Implicit Box with a little bit offset to fix this.
I highly recommend to use bullet solver instead because it is so faster than RBD Solver.
Technical Discussion » Houdini Apprentice Experiencing Crash on Fluid Compress
- N-G
- 209 posts
- Offline
MereCatta
Hiya!
Recently been working on learning fluids and the tutorial I have been following requires me to connect a DOP I/O node into a fluid compress node. Once the two are connected I go to enable the fluid compress. Upon enabling, Houdini crashes. This has happened every one of the four times I have tried it so far and is always at the step of enabling the fluid compress. Still quite new to Houdini so I am unsure of what the issue could possibly be but wondering if anyone here might be able to offer a pointer or help.
Cheers!
Hey!
This happens for me too on Houdini 18.0.566.
I updated to Houdini 18.0.579 and everything works fine now!
Technical Discussion » How can I control the shape of a line using CHOP wave nodes?
- N-G
- 209 posts
- Offline
Technical Discussion » I need help how to use "prim" expression function ...
- N-G
- 209 posts
- Offline
Hey man!
If the node which you're trying to write this expression supports local variables ($PR in your case), you can use it otherwise no!
If the node which you're trying to write this expression supports local variables ($PR in your case), you can use it otherwise no!
Technical Discussion » Copy SOP without intersecting geometry
- N-G
- 209 posts
- Offline
Hi there!
Unfortunately I don't have MOPs but You can use Point Relax for this.
Take a look at the HIP file below!
Unfortunately I don't have MOPs but You can use Point Relax for this.
Take a look at the HIP file below!
Technical Discussion » Python state: onParmChangeEvent issue
- N-G
- 209 posts
- Offline
I tested the example file which you've mentioned and it worked for me!
I put a print function as you said in onParmChangeEvent and after changing settings from operation toolbar, print function called successfully!
BTW if you expect to trigger this function whenever you change a parameter via parameter editor pane, you should use callback script instead.
I put a print function as you said in onParmChangeEvent and after changing settings from operation toolbar, print function called successfully!
BTW if you expect to trigger this function whenever you change a parameter via parameter editor pane, you should use callback script instead.
Edited by N-G - July 13, 2020 07:27:13
Houdini Indie and Apprentice » "Follow Path" and RBD Objects
- N-G
- 209 posts
- Offline
Sure thing!
You can separate your object into two Geometry node in object level and then use Follow Path option separately for these two.
You can separate your object into two Geometry node in object level and then use Follow Path option separately for these two.
Technical Discussion » Is there any hotkey to switch to the camera view?
- N-G
- 209 posts
- Offline
Hey man!
You can use \ to go to previous camera view.
Furthermore you can set hotkeys for next and previous camera in order for iterating over them!
You can use \ to go to previous camera view.
Furthermore you can set hotkeys for next and previous camera in order for iterating over them!
Technical Discussion » Python state: onParmChangeEvent issue
- N-G
- 209 posts
- Offline
Documentation has an example about this.
Did you check it out?
https://www.sidefx.com/docs/houdini/hom/state_parameters.html#binding-the-parameter [www.sidefx.com]
Did you check it out?
https://www.sidefx.com/docs/houdini/hom/state_parameters.html#binding-the-parameter [www.sidefx.com]
-
- Quick Links