I'm yet to grasp what brackets mean in a rule name. Could someone explain the logic? For example, this rule taken from CityEngine Tutorials 7:
Wall(walltype)-->
// dark bricks with dirt
case walltype == 1 : color(wallColor)
texture(wall_tex) set(material.dirtmap, dirt_tex)
projectUV(0) projectUV(2)
// bright bricks with dirt
case walltype == 2 : color(wallColor)
texture(wall2_tex)
set(material.dirtmap, dirt_tex)
projectUV(0) projectUV(2)
// dirt only
else : color(wallColor)
set(material.dirtmap, dirt_tex)
projectUV(2)
What does Wall(walltype) mean? Why is the "walltype" in brackets?
Any benefits for such?
Solved! Go to Solution.
Hi,
You can think that rules work like function do in other programming languages.
The information within brackets are parameters you give to the rule to do something with it. So with this parameter you can carry information from one part of your rule file into a rule that will perform another operation. The name of that parameter (walltype) is just a variable that will inherit the value you pass to the rule.
For example: You can "call" the rule Wall() and at the same time you can specify to what specific wall you want that to do the operation by adding the walltype parameter.
In the case of the Tutorial 7 you mentioned, the parameter will determine the type of brick texture to load. If you call the rule as Wall(1), the parameter 1 will be pass into to the rule as the walltype variable. The "Wall(walltype) -->" than rule can be actually read as Wall(walltype = 1) and so the following case walltype == 1 will be run.
If you google search for function parameters in other languages, the logic is the same.
Hope this helps clarify the syntax.
Hi,
You can think that rules work like function do in other programming languages.
The information within brackets are parameters you give to the rule to do something with it. So with this parameter you can carry information from one part of your rule file into a rule that will perform another operation. The name of that parameter (walltype) is just a variable that will inherit the value you pass to the rule.
For example: You can "call" the rule Wall() and at the same time you can specify to what specific wall you want that to do the operation by adding the walltype parameter.
In the case of the Tutorial 7 you mentioned, the parameter will determine the type of brick texture to load. If you call the rule as Wall(1), the parameter 1 will be pass into to the rule as the walltype variable. The "Wall(walltype) -->" than rule can be actually read as Wall(walltype = 1) and so the following case walltype == 1 will be run.
If you google search for function parameters in other languages, the logic is the same.
Hope this helps clarify the syntax.
It does help. Thank you!
And it became clearer in Tutorial 9 too, just in case anyone's wondering.
Hi,
In addition to the tutorials i would recommend to check out the cga essentials in the help, there you will find a section where this logic is explained too: Rule with parameters