Hi guys! So here is the problem. I need to compute some data and store it as primitive attributes.The simplest solution would be to put digital asset in each geometry object, but i want this to be done at IFD export time. So in the end, every geometry object should have this data in IFD.
I started with writing IFDHook function ("pre_geometry"), where i get access to geometry, and compute my stuff. But after some research, i figure out, that there is no way to modify SohoGeometry, it has read only access.
SohoGeometry.save(), emits original houdini geometry into stdout stream.
Then, in IFDgeo.py in method saveRetained() there is a call to objectWragler, and there is a NOTE:
"Call the object wranglers 'retainGeometry', skip inbuilt soho code if it returns True. Note. It's the responsibility of object wrangler to emit IFD correctly."
So, i can write my wrangler, and emit data to IFD by myself, but I think it is not a very good idea to implement such a thing in python. There should be a performance hit.
Any help on this? Maybe i do something wrong, and there are more elegant solutions.... !?
Best regards.
Alex
- od|forum
- → Viewing Profile: Topics: Stalkerx777
About Me
My name is Alex, i'm from Russia, Saint-Petersburg. I'm a freelancer, 3d generalist specialized in stereoscopic production.
You can see my blog here
You can see my blog here
Community Stats
- Group Members
- Active Posts 147
- Profile Views 2,176
- Member Title Initiate
- Age 29 years old
- Birthday March 2, 1984
-
Gender
Male
-
Location
Russia, Moscow
Previous Fields
-
First Name
Alex
-
Last Name
Sadroutdinov
4
Neutral
User Tools
Friends
Stalkerx777 hasn't added any friends yet.
Topics I've Started
SOHO - modify geometry?
11 November 2012 - 12:24 PM
Store Computed GDP
09 September 2012 - 08:17 AM
Hi guys. I' looking for solution how to add some functionality similar to capture sop. There is Capture Frame parameter in this sop, which allows to compute capture weights data in specified frame, while reuse this data in other frames. I'd like to add this functionality into my sop. I think it should look something like this (in pseudo code):
So, basically i need to recompute gdp only in initFrame (frame 1 for example), store this gdp in initGDP, and reuse it in other frames. Of course there is no isValid() method in gdp. So i can't be sure is my gdp "isValid". Is this a right approach?
Any help? Thx!
class MySopClass
{
.
.
GU_Detail *initGDP;
.
.
}
cookMySop(....)
{
.
.
if(frame != initFrame && initGDP.isValid())
{
gdp->copy(*initGDP);
}
else
{
//Compute things
initGDP = gdp;
}
}
So, basically i need to recompute gdp only in initFrame (frame 1 for example), store this gdp in initGDP, and reuse it in other frames. Of course there is no isValid() method in gdp. So i can't be sure is my gdp "isValid". Is this a right approach?
Any help? Thx!
HDK - Iterating vertecies
21 August 2012 - 11:39 AM
Hi.
I have a little experiense in pre H12 geometry library, but i completely lost in new GA library. I'm trying to iterate over all vertices of each primitive.... here' is how my code looks like, it compiles fine, but crash, right on display flag set:
If i remove UT_Vector3 uv(uv_h.get(vtx_offset)), houdini doesn't crash anymore. Can you please tell me where i'm wrong. And is this a right approach for iterating over vertices? Strictly speaking, i need only one vertex from each primitive, how can i get it?
Thx!
.
.
.
GA_ROAttributeRef uv_ref = gdp->findVertexAttribute("uv");
GA_ROHandleV3 uv_h(uv_ref.getAttribute());
if (! uv_h.isInvalid())
return error();
const GA_Primitive *prim;
const GA_PrimitiveList &primList = gdp->getPrimitiveList();
GA_Range vtx_range;
for (GA_Iterator pr_it(gdp->getPrimitiveRange()); !pr_it.atEnd(); ++pr_it)
{
GA_Offset prim_offset = pr_it.getOffset();
prim = primList.get(prim_offset);
vtx_range = prim->getVertexRange();
for (GA_Iterator vtx_it(vtx_range.begin()); !vtx_it.atEnd(); ++vtx_it)
{
GA_Offset vtx_offset = vtx_it.getOffset()
UT_Vector3 uv(uv_h.get(vtx_offset));
// Do something with uv.......
}
}
.
.
.
If i remove UT_Vector3 uv(uv_h.get(vtx_offset)), houdini doesn't crash anymore. Can you please tell me where i'm wrong. And is this a right approach for iterating over vertices? Strictly speaking, i need only one vertex from each primitive, how can i get it?
Thx!
- od|forum
- → Viewing Profile: Topics: Stalkerx777



Find content