One of the most important goals of Week VI was to get the entire pipeline through and have a Half milestone version of the full demonstration. For the past few weeks, some of the modules in the pipeline have been in relatively independent, simultaneous development. In view of the different technical difficulties, breakthroughs have been made respectively, and some progress has been made. Now it is time to merge these modules and validate a full version of the pipeline. In the following Week VII, we would reach the Half milestone, and we should be fully prepared for it.

1. Overview of the Half Milestone Demonstration

Video Link: https://drive.google.com/file/d/1SBKC0f7aW9wscViihd28MMG7ENsmtjKc/view?usp=sharing

2. Single Building Progress

The following video shows the latest progress of the single building. Based on last week’s version, we solved the problem of the dougong brackets orientation mentioned earlier, adjusted the overall building scale to make it look more correct, and tried to parameterize as many building modules as possible to let them participate in the process of procedural generation.

3. Experiment with Materials and Textures

We tried to build a preliminary procedural material and textures for the Half milestone version of the roof. Due to performance and computational pressure, as well as the large amount of tiling of buildings required for the demonstration, we had to select an intermediate version of the simplified roof for the experiment to improve the fault tolerance rate. In this version, we used auto UV tool of Houdini to unfold the model UVs and used Substance Designer to build a basic roof material based on that. This is a very preliminary experiment to test the possibility of procedural materials, and much more work remains to be done.

4. Wall Tool & Road Tool

The wall generator and road generator have also gone through several iterations in recent weeks.

The current version of the wall generation tool is implemented using the method of HDA + UE Spline Tool. The generated walls can have more details and the base textures can be assigned to the walls. We can also use Boolean operations to create any shape of the door bodies by digging holes in any part of the walls. Some of the useful properties have been parameterized and can be adjusted in real time during the editing phase in the engine.

Video Link: https://drive.google.com/file/d/1ikocXeOEmHci9Ad9VqV9sIxoKWbT8GxK/view?usp=sharing

Video Link: https://drive.google.com/file/d/1l72_dRQUXoin5Khf-5Xtu50m0ZvHkotj/view?usp=sharing

The road generation tool is also getting a boost. The latest version of the road generator supports the generation of intersections, the skew and height of the road can be adjusted, and some ornaments can be added to the road. Similar to the wall generator, some parameters can be adjusted in real time in the engine.

Video Link: https://drive.google.com/file/d/1TMw7qEsFJ0K-SzcmIO8NVmVfZ9wYmbjP/view?usp=sharing

The current version of the wall and road tools are relatively more general and public, and in the subsequent iteration process, we still need to make them further fit with the requirements and features of our pipeline (for example, intersperse between blocks).

5. Grid Filling Algorithm

In the previous version of the implementation of building clusters and placement methods, we used the Subdivision Algorithm. However, it has some problems, such as being too random in controlling the length and width of the white boxes, and it is difficult to achieve a city layout that is consistent with the results of the historical research we conducted.

So, we turned to a new algorithm called Grid Filling. The core idea of this algorithm is to define some basic units of the building clusters in advance, they may be 1 x 1, 2 x 2, 1 x 3, 2 x 3, or m x n. Then we use these basic units to fill the blocks, making them just enough to fill the entire block by calculation. The current version of the implementation still has some limitations, part of the links still rely on manual operation. In subsequent iterations, we will try to combine different algorithms and increase the level of automation.