 Yeah Okay, hello, my name is Vladimir Ilistratov I haven't honored to be the last one today my talk is titled Prokitektura a procedural approach to create architectural 3d models Most of all the stuff I'm going to talk about can be found on This github repo including the source code of the add-on and the tutorial So what is Prokitektura? There is a version that it has a Greek origin Like this and it means programmable or procedural architecture. So how does it work? Let's pick up a building footprint and pick up a set of Python functions and produce a 3d architecture model and let's go ahead and see it in Blender So we set a set of Python functions here We selected a building footprint and now pressing apply Prokitektura rule So it must be textured You're like this We can play with some parameters like changing a height a bit or changing Floor height that's too much probably and so on It's possible also to change colors Let's use yellow instead of boring great one. So like this So few basic facts about Prokitektura a Set of small Python functions is used to generate a 3d model of buildings Those Python functions are called Rules each subsequent rule refines the model and adds additional details and Prokitektura was inspired by CGI shape grammar developed in the Federal Institute of Technology in Zurich and currently is used by Software S3 city engine has anyone heard of S3 city engine Yeah, okay, so that's rockin progress and the goal is to be able to Code the most of existing and ever existed buildings with Prokitektura So let's consider an example rule set We start from import so pro is short for Prokitektura Then we define some parameters. We seen these parameters in the example I showed you just a few seconds before it's height floor height and so on and notice that that we use here a function param if a Parameters wrapped in this function It means that this parameter could be accessed from outside and change interactively as I showed you just a minute ago also notice that height is generated randomly between 20 and 40 and Roof color Is not a parameter that accessed from outside. It can be accessed from outside. It's just a normal Python variable So let's continue Well, let's start from building footprint and the first rule is normally called a lot We perform an extrude to the specified height And the execution is passed to the next rule called building So let's examine the next rule called building and here we perform the composition a Front face will be processed by a front side rule a side face In fact a number of side side faces will be processed by side facade rule and the top face will be processed by the roof rule So next consider Front facade and side facade rules Here we apply a texture we specify a path to the texture and its width and height in the Global coordinates or in the real world coordinates. So one can say that this texture is 50 centimeters width and 50 centimeters height in the real world coordinates and This texture will be inherited by all a rule by all child rules and less over and less overridden by another texture or material That would be home then we perform a split in their vertical direction So we cut a ground floor it will be processed by the ground floor rule and We cut a number of we perform a number of repetitive splits. That's why we have here a repeat function and each Cut will process by the floor rule But what is the size of the each cut is it a floor height? Not really we have here a fl t Function it means floating size so in this context repeat and fl t combination means Cut the remaining space for the whole number of Cuts yeah, so the total number of floors will be a whole number not like 2.4 like this it will be a whole one. Yeah, so on the side-by-side used for Side faces it's looks nearly the same but instead I apply here a boring gray color instead of for the texture So let's continue Next we process the ground floor and Therefore we have the ground floor rule. We override the texture with another texture it's has We specify the path again and we specify its size in the Global coordinates and then we perform a Split and this time the split is performed in their horizontal direction so We would like to have some margin on the left and on the right and it's this margin will be processed by sidewall function Then we like to have an entrance on the right and The entrance has a floating size Therefore we have a fl t function and the entrance will be processed by entrance tile rule and We cut the rest and gave him have here repeat if cuts and there will be used for windows and processed in the tile rule So next we cut the entrance door and the windows so Let's consider their Tile rule So here we perform a split again in the horizontal direction our window will have the width of two and The remaining space Will be just preserved for the wall. We have here no rule specified and all Materials all textures from their parent rules will be inherited in for this case So then we cut some Then we process this rectangle used for the rule used for the window and The bottom Cut it again and this time in the horizontal direction the bottom part We cut the bottom part then cut a window the window has a height of 1.5 it will be processed by the window rule and the rest And the rest just we just we have here no rule and the all And this piece will Inherit all materials and all textures from the parent rules and the entrance tile used for the Entrance door is nearly similar we cut here a door So let's go ahead This rules are quite small and here just a sign A texture but notice that for The door and for the windows we don't assign a much size It means in this context that the texture will occupy all available space And here we substitute Their texture is another texture and specify the size for it so here how it looks like and Interesting feature that the same rule could be applied to an arbitrary building footprint and This leads us immediately to an interesting application. That's the city generation we have a city a set of Building footprints for a city or a part of a city and we apply for each footprint the same or specific set of rules So and generate a city. So let's take a look at the demo Have prepared the text a while. Here's our city. Let's see it rendered Let's go back to our presentation So another interesting application is So what could we do with this city? I attempted to bring it to the web and So I placed the city in a webGL virtual globe provided by CISU and JavaScript Library so for that I have Had to perform the conversion from Blender to Colada and then to GLTF format So JLTF format is a emerging format specifically designed for WebGL applications. It's developed by the same organization that recently developed Colada format so don't mentioned in his keynote speech that webGL viewer or Player is important for Blender and I think direct export and import to and from JLTF is also quite important as that JL is Getting in momentum So I'm not sure the demo because if both Blender and web browser are open then they're slowed down so and let's go back to our city demo so it looks like a Relatively detailed model he see here we have each Each window and each entrance door card In the building so What about baking so this city model could be used in interactive applications beat webGL application or a game I Realized the baking in the following way so one supplies a rule set for the high poly model and one supplies a Rule set for low poly model in this case. It's just an extrusion just extruded footprint And then the baking the texture baking is performed. So let's see how it works. I specified high poly Rule set and low poly rule set and place and press bake button Text a while So let's see how it looks like I think it's quite easy to see that it's Low-quality texture and let's see the baked baked texture is our baked texture output of baking texture baking So another interesting application is parametric modeling. I already Talked about it meet a bit. So we specify some parameters and we use a Function param to say that this parameter should be accessible from outside and changed interactively so I Code it a model from a real-world model it exists in the reality Let's see it So this building exists in the reality. I tried to call it it with 26 parameters So let's play a bit with them Change something it's too much and so on. I think the idea is clear So the set of parameters could be quite arbitrary and so interesting and one could tweak a model as He or she desires and that's our model. How it doesn't perform as it doesn't work Stamely so it crashes from time to time. I have to find out what's the reason of the crash So that's basically what I have realized so far now would like to talk about Work for the current weeks or month So what about the roofs you probably remember that the top face of our Example should be processed by the roof rule, but I actually Didn't show you anything about the roof Because it hasn't realized so far for that we have to specify To find a good specification for a roof function and then we have to implement it well, I can propose a specification for the roof function only for simple cases and for For complex cases it should be We'll have to think more about how to specify it. Let's say we have a hip hip truth and We have a height so it could be specified in this simple way and the same for gavel truth however It's not often that's Roof size that's simple. We often have very complex a roof shapes and the good specification should be found for those cases and About a few words about the permutation. There is a algorithm called straight skeleton used to solve roofs and it's already It's already developed in the insert polygon Provided by hover tricky so it would be good starting point. However, it doesn't work in every case Let's consider an example Yeah, that's simple footprint However, it's not that simple for the straight skeleton algorithm So I press insert polygon Let's add some height here and see what's going on Simple footprint. However, this case is not that simple for the Adon Should be investigated how to how to fix it and So it can be used for Prokitektura in other direction of rock could be simplification of Prokitektura function currently I have that complex structure decompose then parentheses then Dot then in true It's Related to the fact how Python processes how the Python works However, I think it's possible to do it like this In simple in simple way. It requires some digging into Python machinery However, without going to Python source code and the same for split function We have here in two in two it could be simplified like this So I'm close to finish How could you contribute try to code a building with Prokitektura and give your feedback How to specify implement roof window door balcony stairs and so on functions How to specify implement the different facade Decoration functions. So thank you for attention. Everything could be find on this github repa including the source code for the add-on and Tutorial and also there is a threat in the blend artist dot org Thank you. People have questions that can come down where we will close the day session now People can have a drink or go out or have dinners There are two Screenings of the Susana festival one at 7 and one at 9 30 There will be the same screening so simply pick one of them You can go out now first and have food come back at 9 30 or stay here a bit and watch it at 7 Thank you and I see you later You don't from check the public I have a question regarding your presentation Not all the buildings become people So you can then change, even if you grow the whole building, the whole city.