for loop example
should hopefully find some.
SailorTwiftI was getting this error too and I think it came from copy/pasting. I wrote it out myself and it worked
@Airlawn
Hello. I tried to do it your way and everything seems to work except one thing. Once I paste detail(“../nodename”,“iteration”,0) in the Seed value I get error in the origin box's Size parameter. That's what you put in the Seed value, right? Or I misunderstood?
(Error says “Unable to evaluate expression - Syntax error”, and it only happens when I change the Seed value)
@box_id==`detail("../nodeName","iteration",0)`
mkeir
I used a foreach_count loop, then choose iteration method “By Pieces or Points” from the end block. This gives another dropdown of Piece Elements for which you can choose Primitives. I've attached what this looks like below.
I'm now having trouble with the foreach loop on chapter 1 part 3, the roof division. If anyone has a tip on what this should look like, I'd love to see it.
PlayingKarrdeSailorTwiftI was getting this error too and I think it came from copy/pasting. I wrote it out myself and it worked
@Airlawn
Hello. I tried to do it your way and everything seems to work except one thing. Once I paste detail(“../nodename”,“iteration”,0) in the Seed value I get error in the origin box's Size parameter. That's what you put in the Seed value, right? Or I misunderstood?
(Error says “Unable to evaluate expression - Syntax error”, and it only happens when I change the Seed value)
@Airlawns: @box_id==`detail(“../nodename”,“iteration”,0)`
Mine:@box_id==`detail("../nodeName","iteration",0)`
Anyway, when it's correct your VEX will be colour coded. When it's not it will stay white so you know where the errors are (in this case almost certainly to do with however this forum is interpreting quotations).
mkeir
I used a foreach_count loop, then choose iteration method “By Pieces or Points” from the end block. This gives another dropdown of Piece Elements for which you can choose Primitives. I've attached what this looks like below.
AirlawnYou my friend .. are a lifesaver danke
I'm still a little confused on the new for each loop myself so I might be doing something wrong but will try and help and maybe better understand it myself by writing it here.
For that tutorial create a for each loop with the end block as iteration method "By Count“ and you are using ”Feedback Each Iteration“ Merge Each Iteration is like the old merge results checkbox.
Set the Block Begin Method to ”Fetch Feedback" and click the Create Meta Import Node. This Meta Input node is how you know which iteration you are in, in the for each loop and I will rename the node "nodename“ just to write something I can refer to later. The Metainput node is just a block begin with the Method set to ”Fetch Metadata" but clicking the button sets up the Block Path for you.
Plug the attribute create which in the tutorial should be labeled box_id into the “Block Begin”.
In the old tutorial you would often be using the stamp function with the for each loop now you are using that meta input node. Call the meta input node and the iteration the loop is in by writing detail(“../nodename”,“iteration”,0)
So in the old tutorial you would be calling the box id value stamp(“..”, “FORVALUE_stackboxes”, 0)+1 the new thing would be detail(“../nodename”,iteration",0)+1.
The locate node "@box_id==`stamp(“..”, “FORVALUE_stackboxes”, 0)`“
would now be ”@box_id==`detail(“../nodename”,“iteration”,0)`" etc.Image Not Found
I hope that works enough to let you continue.
There are some other gotchas in newer Houdini and the move away from the stamp function. I think once anyone me included gets it, it will be a more direct, faster and easy to use method. For now it still trips me up if I am following something and I have to try and create it the old way look at it as I create it the new way.
tamte
because stamp() function is only valid during the cooking of the for subnet or old copy sop for that matter, you can't see the evaluated value as it's different every iteration so when observed it's not cooking at that moment and it falls back to the value specified as third argument, so in your case 0
new for loops allow you to observe a single iteration, by default is the last one, but you can pick a specific one so thats why detail() expression is able to resolve the actual value when observed as the metadata node still holds the values that belong to chosen iteration
otherwise your result in viewport seems to be the same, if thats the case, it appears to be working correctly during cooking
(also 3rd argument in detail() is component index, while in stamp() it's the mentioned fallback value, so while they may seem similar when both written with 0, they mean very different things)
tamte
the old Foreach if you tell it to start at 0 and end at 0 , then it will do exactly 1 iteraton, iteration 0
the in the new For Loop Block you are telling it to do 0 iterations, so it will not do any and return nothing
so you may need to alter your expression to not and not subtract 1, I'm guessing
BenjaminMarkusI bet
Figuring out how to translate the old for each subnet to the new for loops has definitely been one of the more confusing things I've tried to learn in Houdini
tamteBenjaminMarkusI bet
Figuring out how to translate the old for each subnet to the new for loops has definitely been one of the more confusing things I've tried to learn in Houdini
for learning purposes you can always unhide deprecated nodes (until they are fully removed) to be able to follow old tutorials
just open textport (Alt+Shift+T) and type
opunhide Sop foreach
then in Sop Tab menu you should see Foreah Subnet, even though you may have gone through this particular hurdle, it may be useful for other operators in the future as getting stuck can be demotivating, but of course learning the new stuff eventually is way to go