Uh, Sorry.
op`opfullpath(“../SOP”)` did the trick.
Found 23 posts.
Search results Show results as topic list.
Technical Discussion » intersectVOP question
- jackeroe
- 23 posts
- Offline
Technical Discussion » intersectVOP question
- jackeroe
- 23 posts
- Offline
Thanks WolfWood,
Is there anyway to make that path more general?
like the “../SOP” notation ?
Is there anyway to make that path more general?
like the “../SOP” notation ?
Technical Discussion » intersectVOP question
- jackeroe
- 23 posts
- Offline
Yes Thanks,
I got it working. Is it possible to refer directly to a SOP or does it only work with geometry written to disk?
I got it working. Is it possible to refer directly to a SOP or does it only work with geometry written to disk?
Technical Discussion » intersectVOP question
- jackeroe
- 23 posts
- Offline
Is it possible to use intersectVOP in a VEX for usage on geometry level?
Or is the intersectVOP something that can only be used with pops? The Help-file isn't to clear about this.
I want it to use it to find inner walls in “architectonic building” geometry. the building in its simplest from is a merge from two boxes, one scaled smaller in the other, the inner of them reversed. But also for more complex forms.
The total “building geometry” is in 1 object, the detecting vex bit in a subnet in that object. I want to find the thickness of “walls” in procedural way and also the primitive that that wall part exists of.
The location etc. of the inner primitives are considered to be unknown.
Example of its usage; selecting a number of primitive's through expressions on the outerwall of the building and cutting windows in wall parts with a difference in thickness.
Or is the intersectVOP something that can only be used with pops? The Help-file isn't to clear about this.
I want it to use it to find inner walls in “architectonic building” geometry. the building in its simplest from is a merge from two boxes, one scaled smaller in the other, the inner of them reversed. But also for more complex forms.
The total “building geometry” is in 1 object, the detecting vex bit in a subnet in that object. I want to find the thickness of “walls” in procedural way and also the primitive that that wall part exists of.
The location etc. of the inner primitives are considered to be unknown.
Example of its usage; selecting a number of primitive's through expressions on the outerwall of the building and cutting windows in wall parts with a difference in thickness.
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Hi, Simon. just thinking alloud.
It was not a request to start re-wiring your OTL, i think i should really start to get into that matrix VEX myself and your otl is a good place to start.
I thought i anwsered mine initial question about a manner to get a up-vector that lies in the plane of the primitive, makes an angle of 90 degrees with the normal (Parallel with the y-axis~ that could be used as a “local” axis system thingy) i'm not good at explaining
The idea is that, on SOP level, the position of geometry before you it align to the primitive of another piece geometry , can though of to be as “up” in regard to the y-axis, so that after alignment no manual adjust ment is necessary to retain the “up” orientation of the geometry.
for example the procedual placements of a large number of ornaments on the exterieur or interieur a building (even with slanting walls).
I noticed that the translate was not connected. You called the OTL Orient so maybe you could leave translation up to the user( and use the translate part for an offset translation)
It was not a request to start re-wiring your OTL, i think i should really start to get into that matrix VEX myself and your otl is a good place to start.
I thought i anwsered mine initial question about a manner to get a up-vector that lies in the plane of the primitive, makes an angle of 90 degrees with the normal (Parallel with the y-axis~ that could be used as a “local” axis system thingy) i'm not good at explaining
The idea is that, on SOP level, the position of geometry before you it align to the primitive of another piece geometry , can though of to be as “up” in regard to the y-axis, so that after alignment no manual adjust ment is necessary to retain the “up” orientation of the geometry.
for example the procedual placements of a large number of ornaments on the exterieur or interieur a building (even with slanting walls).
I noticed that the translate was not connected. You called the OTL Orient so maybe you could leave translation up to the user( and use the translate part for an offset translation)
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Some final thoughts about the Up-vector of a primitive.
After searching this forum, odforce and reading Simons awnsers it finally dawned on me that it is a “point of perspective” question. “Up” in regard to Worldspace or the observer(camera).
So in both cases the Y-axis, If you want to know if a piece of geometry is ‘'up“ you compare it to the Y-axis (or in real life your sense of equibrilium).
On http//www.netcomuk.co.uk/~jenolive/vect18d.html there is a item about ”Finding the line where two planes meet“.
”If two planes are not parallel they intersect and have a line of intersection.
The cross product of the two normal vectors of these planes gives a vector which is perpendicular to both of them and which is therefore parallel to the line of intersection of the two planes.“
The primitive is the first plane. If we construct a second plane parallel to the y-axis and make sure the center of the first plane lies on this second plane then we can calculate a directional vector that is ’'up'' compared to the y-axis and lies on the primitive;the up-vector, except for those 2 instances that the cross product is -1 or 1and the primitive is perpendicular to the y-axis aka lying down and not up.
With a curveSOP we can construct a closed curve or plane that goes through the origin followed by the centerpoint translated a distanche along the y-axis (point 1 in a default LineSOP (0,1,0) with origin P) and the original centre of the primitive P. (or the crossproduct of the positional vector of the centerpoint and the translated center point gives us a ”normal“?)
From that plane we can get the normal with a Prim() expression and ”cross product" it with the the primitive's normal. the direction of the intersection line. we know that point P also lies on that line. So we got our normal and Upvector.
I have to test it yet, so fingers crossed. wink
After searching this forum, odforce and reading Simons awnsers it finally dawned on me that it is a “point of perspective” question. “Up” in regard to Worldspace or the observer(camera).
So in both cases the Y-axis, If you want to know if a piece of geometry is ‘'up“ you compare it to the Y-axis (or in real life your sense of equibrilium).
On http//www.netcomuk.co.uk/~jenolive/vect18d.html there is a item about ”Finding the line where two planes meet“.
”If two planes are not parallel they intersect and have a line of intersection.
The cross product of the two normal vectors of these planes gives a vector which is perpendicular to both of them and which is therefore parallel to the line of intersection of the two planes.“
The primitive is the first plane. If we construct a second plane parallel to the y-axis and make sure the center of the first plane lies on this second plane then we can calculate a directional vector that is ’'up'' compared to the y-axis and lies on the primitive;the up-vector, except for those 2 instances that the cross product is -1 or 1and the primitive is perpendicular to the y-axis aka lying down and not up.
With a curveSOP we can construct a closed curve or plane that goes through the origin followed by the centerpoint translated a distanche along the y-axis (point 1 in a default LineSOP (0,1,0) with origin P) and the original centre of the primitive P. (or the crossproduct of the positional vector of the centerpoint and the translated center point gives us a ”normal“?)
From that plane we can get the normal with a Prim() expression and ”cross product" it with the the primitive's normal. the direction of the intersection line. we know that point P also lies on that line. So we got our normal and Upvector.
I have to test it yet, so fingers crossed. wink
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Letting the user do some preparation stuff before alignment could be an option.
for example;
Input 1 would be the geometry that is going to be aligned/transformed.
Input 2 would be a reference primitive on the geometry isolated by a deleteSOP.
And Input 3 a isolated primitive also with a deleteSOP on the geometry to be aligned to.
And maybe for the CIU hide everything exept the spinner control,flip and offset/translation.
for example;
Input 1 would be the geometry that is going to be aligned/transformed.
Input 2 would be a reference primitive on the geometry isolated by a deleteSOP.
And Input 3 a isolated primitive also with a deleteSOP on the geometry to be aligned to.
And maybe for the CIU hide everything exept the spinner control,flip and offset/translation.
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
There is some scaling effect of the geometry if you use the parameter slider Prim a or Prim B to change the alignment primitives.
They are not connected in the VEX with other subnet operaters.
Are they like local variables?
They are not connected in the VEX with other subnet operaters.
Are they like local variables?
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
shock That last file should be called Superglue instead of Orient.
It opens a door to a lot of posibilities for “hinge” like constructions.
Thanks again. As i said before the inside will a good example too on how to use matrixes in VEX.
It opens a door to a lot of posibilities for “hinge” like constructions.
Thanks again. As i said before the inside will a good example too on how to use matrixes in VEX.
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Thanks Simon, That explains a lot.
I'm used to 3dsmax, zo i never had the need before to open the curtain and find the actual Wizard of Oz; the real inner workings of 3d space.
I appricate the update very much. (Still would like a peek into the Vex if that's ok with you. How those matrixes are build. i tried my hand on a spot of normalmap rendering but got a bit atangled in Vex).
Sometimes the help files of Houdini are a bit sketchy when you really have to start typing those expressions or stringing up those operators.
( largly through my unfamiliarity with what is possible with vectors & matrix )
I'm used to 3dsmax, zo i never had the need before to open the curtain and find the actual Wizard of Oz; the real inner workings of 3d space.
I appricate the update very much. (Still would like a peek into the Vex if that's ok with you. How those matrixes are build. i tried my hand on a spot of normalmap rendering but got a bit atangled in Vex).
Sometimes the help files of Houdini are a bit sketchy when you really have to start typing those expressions or stringing up those operators.
( largly through my unfamiliarity with what is possible with vectors & matrix )
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
eh,Something else i forgot to ask, something that i stumbled apon with custom OTL's.
How do you get something like a value “total number of primitives” for a subnet SOP into the OTL parameters to use as a range max in a primitve selection slider parameter?
How do you get something like a value “total number of primitives” for a subnet SOP into the OTL parameters to use as a range max in a primitve selection slider parameter?
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Thanx, Simon, If you still can find it, i would really appreciate that to see the inner workings of that VEX.
Also thanks for the info on getting more than one point data stream into a vex. I did wonder how to use the global variables for more than one data stream.
for now i want to try to get it working on sop level. (My matrix and vector knowledge isn't that good yet).
to eleborate;
To test modeling circumstances i put a transformSOP between both the alignment source, the alignment target geometry and the Vex “orient”.
If you change the initial orientation of the box or the sphere with the transformSOP before they get plugged into the Vex, the box start to “spin” on the primitive surface if you vary the rotation of the target or source geometry along one of the axis.
I like to be able to assign an up( or down) to a piece of geometry that i'm going to allign, so that when it gets aligned to the source geometry it will keep its “upright” position.( The candle stick holders on the piano metafor or the up and down in level-geometry)
So after the translation and rotation to align a piece of geometry on a primitive surface i wanted to apply a transformAxisSOP with the Normal of the primitive as rotation axis so i could compensate for the spin.
For that i wanted to calculate the angle between the up-vectors of the primitives of the source and target that are used for the initial alignment
The user participation in this all is to be able to assign wat up or down is for the geometry that gets aligned.
I yet have come up with a solution how to get or assign those up-vectors for those two planes.
Also thanks for the info on getting more than one point data stream into a vex. I did wonder how to use the global variables for more than one data stream.
for now i want to try to get it working on sop level. (My matrix and vector knowledge isn't that good yet).
to eleborate;
To test modeling circumstances i put a transformSOP between both the alignment source, the alignment target geometry and the Vex “orient”.
If you change the initial orientation of the box or the sphere with the transformSOP before they get plugged into the Vex, the box start to “spin” on the primitive surface if you vary the rotation of the target or source geometry along one of the axis.
I like to be able to assign an up( or down) to a piece of geometry that i'm going to allign, so that when it gets aligned to the source geometry it will keep its “upright” position.( The candle stick holders on the piano metafor or the up and down in level-geometry)
So after the translation and rotation to align a piece of geometry on a primitive surface i wanted to apply a transformAxisSOP with the Normal of the primitive as rotation axis so i could compensate for the spin.
For that i wanted to calculate the angle between the up-vectors of the primitives of the source and target that are used for the initial alignment
The user participation in this all is to be able to assign wat up or down is for the geometry that gets aligned.
I yet have come up with a solution how to get or assign those up-vectors for those two planes.
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Thanx. I tried that one but i cant get into the vex to see how it was done…
and if you vary the rotation of the SOP geo pieces before inputting them into the vex then the orientation of the qube in regard of the world axis doesn't stay the same.
(On the other hand it is a good example how to get 2 data streams into 1 vex. that is something else i have'nt succeded in yet).
and if you vary the rotation of the SOP geo pieces before inputting them into the vex then the orientation of the qube in regard of the world axis doesn't stay the same.
(On the other hand it is a good example how to get 2 data streams into 1 vex. that is something else i have'nt succeded in yet).
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
I'm asking that question because im trying to “glue” or align a piece geometry on another piece of geometry at SOP level using the normals of a pair of expression selected primitives on both pieces (1 each) as reference for orientation.
Think of it as procedural glueing candle stick holders on to a piano front or side.
(i tried alignSOP but it was a bit over my head).
I succeeded in getting the primitives in the same plane but they still need to a rotation in the plane itself to adjust its position when i change the primitive selection.
As a prototype i use two different sphere's rotated and translated to mimic a modeling position. I choose a primitive on both and use expressions to translate and rotate, to position the primitives on top of each other. if i vary the selection of the primitives. the aligned primitive keeps rotating around the surface normal.
This is only the expression i used in the rotate around the X-axis of a transformSOP.
if(dot(normalize(vector3(prim(“../TransA”,ch(“../PrimA/pattern”),“N”,0),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,1),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,2))),normalize(vector3(prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,0),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,1),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,2)))) != ( -1),explodematrix(dihedral(normalize(vector3(prim(“../TransA”,ch(“../PrimA/pattern”),“N”,0),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,1),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,2))),normalize(vector3(prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,0),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,1),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,2)))), “SRT”, “XYZ”, “RX”),180)
Think of it as procedural glueing candle stick holders on to a piano front or side.
(i tried alignSOP but it was a bit over my head).
I succeeded in getting the primitives in the same plane but they still need to a rotation in the plane itself to adjust its position when i change the primitive selection.
As a prototype i use two different sphere's rotated and translated to mimic a modeling position. I choose a primitive on both and use expressions to translate and rotate, to position the primitives on top of each other. if i vary the selection of the primitives. the aligned primitive keeps rotating around the surface normal.
This is only the expression i used in the rotate around the X-axis of a transformSOP.
if(dot(normalize(vector3(prim(“../TransA”,ch(“../PrimA/pattern”),“N”,0),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,1),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,2))),normalize(vector3(prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,0),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,1),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,2)))) != ( -1),explodematrix(dihedral(normalize(vector3(prim(“../TransA”,ch(“../PrimA/pattern”),“N”,0),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,1),prim(“../TransA”,ch(“../PrimA/pattern”),“N”,2))),normalize(vector3(prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,0),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,1),prim(“../PrimB”,ch(“../PrimB/pattern”),“N”,2)))), “SRT”, “XYZ”, “RX”),180)
Houdini Lounge » How to get The up-vector of a primitive?
- jackeroe
- 23 posts
- Offline
Is it possible to get the Up-vector of a primitive with the “prim” expression function in SOP. for example;
prim(“../PrimA”,ch(“../GeoA/pattern”),“N”,0) gives me the x value of the normal of a (~selected) primitive.
What is the expressions to use to get the up-vector values.
(does a primitive has a up-vector by default just like a normal? or do you have to assign one first?)
prim(“../PrimA”,ch(“../GeoA/pattern”),“N”,0) gives me the x value of the normal of a (~selected) primitive.
What is the expressions to use to get the up-vector values.
(does a primitive has a up-vector by default just like a normal? or do you have to assign one first?)
Houdini Lounge » Group-masking in BlendshapesSOP. How does it work?
- jackeroe
- 23 posts
- Offline
Thanks, Edward.
I'm gonna do that.
The last part of my post was about something i also wanted to use the group “masking” for in blendshapesSOP.
Objects that have parts with morphed geometry that overlap, the points on the edge of overlapping areas get a translation from both “active blendshapes”. They stick out, peak.
you could probably use painted weightmaps to counteract that but i'm not looking into that yet.
You get the same in lightwave with (unmasked) copy and pasting of morphmaps.
I'm gonna do that.
The last part of my post was about something i also wanted to use the group “masking” for in blendshapesSOP.
Objects that have parts with morphed geometry that overlap, the points on the edge of overlapping areas get a translation from both “active blendshapes”. They stick out, peak.
you could probably use painted weightmaps to counteract that but i'm not looking into that yet.
You get the same in lightwave with (unmasked) copy and pasting of morphmaps.
Houdini Lounge » Group-masking in BlendshapesSOP. How does it work?
- jackeroe
- 23 posts
- Offline
This question i have asked before in the forum. But maybe this time i succeed in communicating more clearly what i mean with it and want to know.
I want to use groupselection for masking in blendshapesSOP for asymmetric facial (left and right) features in a random character generation. (Without altering the geometry by splitting in half and fusing back together). Masking the left part and right part of the geometry and blending those back together so the blending can be slightly suppressed.
I also want to be able to clean up the blending if there are points that have in more than one shape extreme positions and suppress additive effects with group masking.
I want to use groupselection for masking in blendshapesSOP for asymmetric facial (left and right) features in a random character generation. (Without altering the geometry by splitting in half and fusing back together). Masking the left part and right part of the geometry and blending those back together so the blending can be slightly suppressed.
I also want to be able to clean up the blending if there are points that have in more than one shape extreme positions and suppress additive effects with group masking.
-
- Quick Links