Perhaps I should have rephrased what I said to emphasize what I was thinking in the context of this thread….
“…That aside, IF I HAD TO MAKE A CHOICE,….”
Found 2040 posts.
Search results Show results as topic list.
Houdini Lounge » The baffling attitude of some Houdini users toward MOPs and other 3rd party tools.
- BabaJ
- 2042 posts
- Offline
Houdini Lounge » The baffling attitude of some Houdini users toward MOPs and other 3rd party tools.
- BabaJ
- 2042 posts
- Offline
Well put Geotzinger…that's why I chime in on threads like this; even though my voice/influence is only a drop in the bucket.
When I started into the field of generalist animation/FX two years ago.
After looking at Maya and others…then because it was free…a few days later after using Apprentice, I realized the big potential and capability that one could make a wide range of their own tools.
I was hooked.
The only regret is I wish I discovered Houdini many years before.
If Houdini was a more of a closed box type of software like Maya, I doubt I would have pursued using Houdini much.
I probably would have gone back to Blender, at which point was using to create 3D stills as an extension from my photoshop use.
I know as a whole the SideFX team to be commercialy viable and to continue to exist has to make careful decisions in what direction they put their development resources.
That aside, personally I would like to see less development on ready made tools and more on development that assists and improves the capacity for the tool making process itself.
When I started into the field of generalist animation/FX two years ago.
After looking at Maya and others…then because it was free…a few days later after using Apprentice, I realized the big potential and capability that one could make a wide range of their own tools.
I was hooked.
The only regret is I wish I discovered Houdini many years before.
If Houdini was a more of a closed box type of software like Maya, I doubt I would have pursued using Houdini much.
I probably would have gone back to Blender, at which point was using to create 3D stills as an extension from my photoshop use.
I know as a whole the SideFX team to be commercialy viable and to continue to exist has to make careful decisions in what direction they put their development resources.
That aside, personally I would like to see less development on ready made tools and more on development that assists and improves the capacity for the tool making process itself.
Houdini Indie and Apprentice » problem with copying over points
- BabaJ
- 2042 posts
- Offline
Since the same image results can be accomplished in different ways, desired or undesired;
It's better to post your .hip file to increase your chance of getting a helpful response.
It's better to post your .hip file to increase your chance of getting a helpful response.
Houdini Indie and Apprentice » Convert a string array into an integer array
- BabaJ
- 2042 posts
- Offline
I noticed your printf line.
Is that where your having issues?
Your running over primitives yet only creating an array of two ints for only when @balcon == 1.
But your still running over all the prims with the printf command, so when it tries to print for the prims with @balcon == 0,
it doesn't see an array, because you didn't create one for those prims.
If your ‘numbers’ array variable was an attribute, then a numbers attribute array would have been created for all prims, but since you still will only have values for that array on prims that are @balcon == 1, the other prims with that array would be empty and you still would get an error with your print command as is.
Have to remember that when ‘running over’ with wrangles it's multi-threading, so sometimes you need to do a second wrangle that follows if what your trying to accomplish can't be done in the one wrangle - or as a last option, run in detail mode.
I've changed your wrangle node and made the numbers variable into an attribute, so you can see that the values indeed get stored. And another wrangle that follows with the print command, just as another way so you can see.
Is that where your having issues?
Your running over primitives yet only creating an array of two ints for only when @balcon == 1.
But your still running over all the prims with the printf command, so when it tries to print for the prims with @balcon == 0,
it doesn't see an array, because you didn't create one for those prims.
If your ‘numbers’ array variable was an attribute, then a numbers attribute array would have been created for all prims, but since you still will only have values for that array on prims that are @balcon == 1, the other prims with that array would be empty and you still would get an error with your print command as is.
Have to remember that when ‘running over’ with wrangles it's multi-threading, so sometimes you need to do a second wrangle that follows if what your trying to accomplish can't be done in the one wrangle - or as a last option, run in detail mode.
I've changed your wrangle node and made the numbers variable into an attribute, so you can see that the values indeed get stored. And another wrangle that follows with the print command, just as another way so you can see.
Houdini Indie and Apprentice » Convert a string array into an integer array
- BabaJ
- 2042 posts
- Offline
After your code line with the split function put this:
int a_rray[], Count;
for(Count = 0; Count < len(letras); Count++)
{
push(a_rray, atoi(letras[Count]));
}
Edited by BabaJ - June 29, 2018 21:18:54
Houdini Lounge » Paper Town Unfolding
- BabaJ
- 2042 posts
- Offline
how would I adapt the poly bending technique described at tokeru to bend a curve?
My suggestion for that was from one small section of your reference video where I saw the sidewalk unfolding,
which I thought might be a good candidate for using that technique, and possibley other areas.
But like I said there's so much different things going on in that video, many different approaches would be the key.
You've just mentioned about bending a curve.
So perhaps the best thing to do is focus in on one part of that video that you would like to bend a curve for and either post a hip with your attempt to do the same;
Or, if you don't even know how to get started on that part, make a clip of that section of the video describing what part you want to do.
Then maybe you might get some suggestions and pick an approach that suits you.
Edited by BabaJ - June 28, 2018 11:16:30
Houdini Indie and Apprentice » Normalized Time
- BabaJ
- 2042 posts
- Offline
I don't think Vex has direct access to the Frame Range values.
The only way I can think of is to create a parameter and use Python to ‘grab’ your current hip files Frame Range to put it there:
playbackRange returns two values, first for the beginning frame range and the second the end, hence the one in square brackets.
Then in vex you could use a channel reference to get that parameter.
Now your saying your building a ‘snippet’ so I assume your inside a vop node, so I don't know if this will work there but it will for a wrangle node at the sop level.
You could use an Hscript reference with backticks.
Edit: on an unrelated sidenote. I was just trying to figure out how to parse the lines of code in a wrangle with python. Looked at the parameter that holds the text, and it too is referred as a snippet.
The only way I can think of is to create a parameter and use Python to ‘grab’ your current hip files Frame Range to put it there:
hou.playbar.playbackRange()[1]
playbackRange returns two values, first for the beginning frame range and the second the end, hence the one in square brackets.
Then in vex you could use a channel reference to get that parameter.
Now your saying your building a ‘snippet’ so I assume your inside a vop node, so I don't know if this will work there but it will for a wrangle node at the sop level.
You could use an Hscript reference with backticks.
float End_Frame = `$FEND`;
Edit: on an unrelated sidenote. I was just trying to figure out how to parse the lines of code in a wrangle with python. Looked at the parameter that holds the text, and it too is referred as a snippet.
Edited by BabaJ - June 28, 2018 11:38:20
Technical Discussion » Fit behaviour in volume wrangle not as expected
- BabaJ
- 2042 posts
- Offline
And this is why I misunderstood it from the beginning.
Thinking the scatter node will behave the same in two different contexts.
If one uses a scatter node after a polysphere, it will scatter on the surface; which is essentially 0 spatially;
So I wrongly assumed that the voxels created in the volume that ‘correspond’ to the source geometry boundary would also be given the equivalent 0 density value and treated the same as such.
Thinking the scatter node will behave the same in two different contexts.
If one uses a scatter node after a polysphere, it will scatter on the surface; which is essentially 0 spatially;
So I wrongly assumed that the voxels created in the volume that ‘correspond’ to the source geometry boundary would also be given the equivalent 0 density value and treated the same as such.
Technical Discussion » Fit behaviour in volume wrangle not as expected
- BabaJ
- 2042 posts
- Offline
You just posted this as I was posting my last response.
So Scatter doesn't ‘scatter’ with 0 values; just values greater than 0?
So Scatter doesn't ‘scatter’ with 0 values; just values greater than 0?
Technical Discussion » Fit behaviour in volume wrangle not as expected
- BabaJ
- 2042 posts
- Offline
Ok, got word back from support.
It is because of my lack of understanding of what a scatter node uses to addpoints that created the apparent discrepency.
I was assuming points would be created with 0 values and greater, but they don't - only values that are greater than 0.
Lots of you guys probably already knew that, and I think support was going gentle on me with their response
It is because of my lack of understanding of what a scatter node uses to addpoints that created the apparent discrepency.
I was assuming points would be created with 0 values and greater, but they don't - only values that are greater than 0.
Lots of you guys probably already knew that, and I think support was going gentle on me with their response
Side Effects Support Ticket: #63092
Hi BabaJ,
From our devs:
“In such a case, only the areas within the geometry area get scattered points. What this says is that the scatter node is still seeing the negative values that lie external to the geometry;
That or the fit node is ignoring the negative values and does not do a fit to the new range - contrary to what documentation says of guaranteeing all values being clamped so that they end up in the new range. ”
There is a third possibility. The scatter node is seeing zero values. The scatter node doesn't scatter on zero values, so no points are created there.
You can see the actual volume values by using a Volume Slice afterwards. This shows density properly zero outside the curve as fit implies.
Cheers,
Edited by BabaJ - June 27, 2018 18:22:05
Technical Discussion » Fit behaviour in volume wrangle not as expected
- BabaJ
- 2042 posts
- Offline
Thanks Tomas.
Yeah, I did a poor job in explaining and agree with what you are saying.
But to me there is still a discrepency, and in my attempt to explain what it is I am seeing am going to be a bit verbose and say things I am certain yourself and others already know (maybe it will illistrate my misconception). So to begin again:
The iso-offset node is set to invert - So that voxels that lie within the geometry have values that are postive; those external to the geometry surface are negative.
If the volume has a range of values( in the case of this hip ) from -21.633 to 0.91 and I use those values for omin and omax as in the following:
Then yes as what I think your trying to tell me is that I will get points scattered throughout the entire bounding box of the volume that includes areas within the geometry and outside the geometry.
…because all voxels now have 0(at surface) or a postive value (the nmin, nmax being 0 and 1 respectively and the scatter node sees it as such.
If however, I set the omin value differently as in the following:
Then points only get scattered within the interior of the geometry - not outside like before ( with omin set to - 21.633 ).
With the exception of how this compares to fit with geometry points, I would say okay -
Fine, because I've set my omin to 0, the fit node must be ignoring all values ( a type of clamping ) that are less than 0.
And, because of that, all voxels external to the geometry remain negative and the scatter node sees that and does not scatter in that region.
BUT…this is different that what would happen with geometry points - purely in terms of point values.
If I have a point with it's x value set to -21.633 and do like with the volume with:
Then as with the volume, it too gets put into the new range and the point gets set to 0. ( as expected ).
Also, if I change it too:
Again the @P.x gets shifted to the new range, in this case, put at zero.
If the fit in this last case behaved like the volumes conterpart that also has omin set to 0 then the @P.x would not have gotten set the the new range and put at 0 - it would have retained it's negative value, just like what the volume seems to be doing.
Yeah, I did a poor job in explaining and agree with what you are saying.
But to me there is still a discrepency, and in my attempt to explain what it is I am seeing am going to be a bit verbose and say things I am certain yourself and others already know (maybe it will illistrate my misconception). So to begin again:
The iso-offset node is set to invert - So that voxels that lie within the geometry have values that are postive; those external to the geometry surface are negative.
If the volume has a range of values( in the case of this hip ) from -21.633 to 0.91 and I use those values for omin and omax as in the following:
@surface = fit(@surface, -21.633, 0.91, 0, 1);
Then yes as what I think your trying to tell me is that I will get points scattered throughout the entire bounding box of the volume that includes areas within the geometry and outside the geometry.
…because all voxels now have 0(at surface) or a postive value (the nmin, nmax being 0 and 1 respectively and the scatter node sees it as such.
If however, I set the omin value differently as in the following:
@surface = fit(@surface, 0, 0.91, 0, 1);
Then points only get scattered within the interior of the geometry - not outside like before ( with omin set to - 21.633 ).
With the exception of how this compares to fit with geometry points, I would say okay -
Fine, because I've set my omin to 0, the fit node must be ignoring all values ( a type of clamping ) that are less than 0.
And, because of that, all voxels external to the geometry remain negative and the scatter node sees that and does not scatter in that region.
BUT…this is different that what would happen with geometry points - purely in terms of point values.
If I have a point with it's x value set to -21.633 and do like with the volume with:
@P.x = fit(@P.x, -21.633, 0.91, 0, 1);
Then as with the volume, it too gets put into the new range and the point gets set to 0. ( as expected ).
Also, if I change it too:
@P.x = fit(@P.x, 0, 0.91, 0, 1);
Again the @P.x gets shifted to the new range, in this case, put at zero.
If the fit in this last case behaved like the volumes conterpart that also has omin set to 0 then the @P.x would not have gotten set the the new range and put at 0 - it would have retained it's negative value, just like what the volume seems to be doing.
Edited by BabaJ - June 27, 2018 16:35:36
Houdini Indie and Apprentice » Online Training options
- BabaJ
- 2042 posts
- Offline
This one is an online video…but it says you can have instructor interaction.
https://thevfxschool.com/faq/ [thevfxschool.com]
https://thevfxschool.com/faq/ [thevfxschool.com]
Technical Discussion » "disable when" conditionals =~
- BabaJ
- 2042 posts
- Offline
Houdini Lounge » The baffling attitude of some Houdini users toward MOPs and other 3rd party tools.
- BabaJ
- 2042 posts
- Offline
I think you're reading too much into it. My post is merely in an attempt to try to understand a type of attitude that I find only too common among seasoned Houdini users (as opposed to for instance the C4D community which seems to have quite the opposite type of reaction).
And I don't know what you mean about my ‘reading’ into what you said - I asked questions about what you said - I didn't make statements other than you can do what you want.
You offered an opinion about what you see - but what I see is a generalization; hence the questions.
I am a hobbyist and not on a deadline but my take is why spend 30 minutes to an hour tweaking and checking without using a plugin in order to stay “pure” when I can get same thing done in less than 10 minutes with plugin?
Which is why no one is stopping you, and I myself think nothing wrong with what you are doing…but for myself it is a mix of both.
I will and do use tools that are “pre-made” by someone else. But I also like to make my own tools - and as you say “spend 30 mintues to an hour”…but in my case, sometimes… even days.
But I benefit from that in many ways:
1) I become better at making my own tools.
2) I learn much more in the process that in turn I can apply to other areas( other tools that are not available ).
3) After making the tools…and because I made them, and understand how they are made..can make alterations quickly to adapt to different situations.
4) Many times in my attempt even to ‘re-invent the wheel’, it helps me understand existing tools I didn't make and am better able to make use of them and rectify issues that may crop up in certain situations too.
4) I have more tools! both pre-made and my own.
but please understand that as Houdini attracts new users like myself, we are also going to want for SESI to listen to and ideally address our concern and needs as well.
Thank you for making my point Fuos, but most importantly, who are you that you speak for all of Houdini users?
And who are you to speak for all new users?
'So please' understand that not all new users have the same expectations and/or views that you do.
Edited by BabaJ - June 26, 2018 21:26:42
Houdini Lounge » The baffling attitude of some Houdini users toward MOPs and other 3rd party tools.
- BabaJ
- 2042 posts
- Offline
But for the rest of us, Houdini is just a tool within a much larger ecosystem. We have tight deadlines, and a number of non-Houdini-related tasks that need to be accomplished as quickly and efficiently as possible. If someone has already figured out a shortcut that fits my specific needs, and made it available — why should I be made to feel guilty for using it?
Which is why I don't understand your post…no one is stopping you.
Or is it you feel there are not enough of what you call ‘MOPs’ readily available in Houdini?
Do feel too many people have the attitude you describe that it is influencing what gets developed by the SideFX developers?
Houdini Lounge » Paper Town Unfolding
- BabaJ
- 2042 posts
- Offline
There's alot going on in that video.
But say you have a grid ( like a sheet of paper or an unfolding sidewalk of squares ).
Each edge can be treated as an axis for rotating from.
This section would be a good study for you, from which you can expand upon and use elsewhere as well;
http://www.tokeru.com/cgwiki/index.php?title=HoudiniVex#Rotate_prims_around_an_edge [www.tokeru.com]
But say you have a grid ( like a sheet of paper or an unfolding sidewalk of squares ).
Each edge can be treated as an axis for rotating from.
This section would be a good study for you, from which you can expand upon and use elsewhere as well;
http://www.tokeru.com/cgwiki/index.php?title=HoudiniVex#Rotate_prims_around_an_edge [www.tokeru.com]
Edited by BabaJ - June 26, 2018 11:33:33
Houdini Indie and Apprentice » Normalized Time
- BabaJ
- 2042 posts
- Offline
float Frame_Range, New_Value;
Frame_Range = 240;
New_Value = fit(@frame, 0, Frame_Range, 0, 1);
Edited by BabaJ - June 25, 2018 15:24:31
Technical Discussion » Fit behaviour in volume wrangle not as expected
- BabaJ
- 2042 posts
- Offline
Before I submit a bug I was hoping someone might look at this file first; Maybe I am misunderstanding something.
I have an sdf volume with sign inverted.
In a volume wrangle I have a fit applied to @surface.
If I use the primintrinsic “volumeminvalue” as the omin value and nmin value set to zero,
it doesn't seem to clamp before putting in the new nmin/nmax range; It seems to behave like an efit.
To get “around” this I just set the omin value to 0 manually.
But I am curious as to why it is working as it is - The points scatter ‘outside’ the geometry using volumeminvalue;
Which is about -21.6, and the volumemax is about 0.91
Shouldn't all the values from 0 to -21.6 clamp to 0?
When I use the fit function with geometry, I do get the bahviour I expect, but not with this sdf volume.
I have an sdf volume with sign inverted.
In a volume wrangle I have a fit applied to @surface.
If I use the primintrinsic “volumeminvalue” as the omin value and nmin value set to zero,
it doesn't seem to clamp before putting in the new nmin/nmax range; It seems to behave like an efit.
To get “around” this I just set the omin value to 0 manually.
But I am curious as to why it is working as it is - The points scatter ‘outside’ the geometry using volumeminvalue;
Which is about -21.6, and the volumemax is about 0.91
Shouldn't all the values from 0 to -21.6 clamp to 0?
When I use the fit function with geometry, I do get the bahviour I expect, but not with this sdf volume.
Houdini Indie and Apprentice » Why does my poly extrude mess up my point numbers
- BabaJ
- 2042 posts
- Offline
What is it your wanting to do overall.
The point numbers haven't changed after a polyextrude. Your creating new geometry from the existing geometry; Its not that the polyextrude is extending the existing points and then filling in between them.
It's creating a duplicate and extending that.
The point numbers haven't changed after a polyextrude. Your creating new geometry from the existing geometry; Its not that the polyextrude is extending the existing points and then filling in between them.
It's creating a duplicate and extending that.
Technical Discussion » simple for loop grouping question
- BabaJ
- 2042 posts
- Offline
run over primitives with..
string BaseName, GroupName;
BaseName = "layer_";
GroupName = BaseName + itoa( (@primnum/2 + 1));
setprimgroup(geoself(), GroupName, @primnum, 1, "set");
Edited by BabaJ - June 22, 2018 21:08:08
-
- Quick Links