For all the houses, I set up the vertex and create geometry with triangles. For the doors and windows, I create a class for addOnObj just for 2 triangle to compose the doors and windows, and let other class to set different materials in parameter Then, I add those new objects to the house (same group with the house)

House 1 (left two houses): I have a parameter, "side", to decide whether add a side house to the house, the side house is made up of house 2 with replacing the door with a window I add different 3 window type for front/back, right/left, and roofs The house with the side house will not have the windows on the front.

House 2 (middle): This house is what I want to create with the roof and walls to be made up of window/glass. So I cover all four sides with the window (except a spot for the door) and choose a grid texture for the roof.

House 3 (right two): Similar to house 1, house 3 can have a side smaller house depend on the param "side". If there is a side smaller, the windows on the left of the larger house will not be added and two smaller windows are added to the left of the smaller house. I use three types of window for left/right, front, and roofs.

Image Sources: