Next step in development is dynamic houses.
I am in the process of creating a house editor, where you can lay down the foundation of the house which is stored in an array of 2D lines, the end point of the last line needs to connect to the start point of the first line, so the loop is closed. You can also add a negative foundation for creating houses with an inner yard.
The foundation of the house is grid based with the possibility of diagonal walls ( basically the editor just snaps to the grid for placing the points of the houses foundation )
Then I render walls from these 2 foundations for each story of the house there will be one generated wall ring.
A floor will be rendered for each floor ( flood filling the house foundation ), only interrupted by openings that can be placed on the floors.
I will actually build the wall rings 2 times, the second time the walls will be inverted ( also with different texture offsets to allow different inner wall textures ) those two walls will be rendered at the same time, because only front faces will be rendered they will not z-fight each other. When the player enters the house, the
outer wall ring is not displayed anymore, so you can only see the inner walls, also only the floor the player is on will be rendered, when the player enters the next floor, the floor will slowly blend in as the player transitions to the next floor.
Doors and windows can break the wall rings and will be left as openings when creating the models, meaning that you can only exit a house by doors and windows. Also you can see the inside of the houses through the window from outside and vice versa.
The only problem in this concept i am facing is finding a nice algorithm to automatically generate a roof for a build house. I have already created the outside line loop for the roof, so it will leap a bit over the walls by just translating the lines of the foundation outside and calculating the cut points to the translated, enlarged lines with their direct predecessors and ancestors.
Now I am thinking of doing the same, but translating the enlarged lines of the houses foundation to the inside of the house, also defining them finally by their cut points like the outer loop of the roof. This will be my first layer of roof, from this I can do the process again, till everything is filled with roofs. The only problem with this is, that some points can lay directly on other walls and have to be recalculated and also some points
will be removed ( duplicates that sit on top of each other ). With some points removed, the whole loop of points needs to be reordered correctly.
Also i need to keep track of the outer loop of roof to the inner loop, basically for creating the triangles correctly between the two loops. I hope to be able to resolve this, but it should be doable.
The final step will be to add inner walls to the house, so you can create rooms inside.
So basically a house consists of floors, outer walls ( one for each story ), inner walls ( specific to each story ) and the roof, which can easily be blended in and out.
This will have the great advantage of being able to seaminglesly enter houses on a map without loading times, the player could directly relate their position inside the house to the outside world.
Right now, the foundation editor is ready and outer wall rings can be rendered ( without the option to place doors and windows yet ), also the outer loop for the roof is created automatically.
I will keep you informed of the progress I make here and hope to be able to show something soon.
I am in the process of creating a house editor, where you can lay down the foundation of the house which is stored in an array of 2D lines, the end point of the last line needs to connect to the start point of the first line, so the loop is closed. You can also add a negative foundation for creating houses with an inner yard.
The foundation of the house is grid based with the possibility of diagonal walls ( basically the editor just snaps to the grid for placing the points of the houses foundation )
Then I render walls from these 2 foundations for each story of the house there will be one generated wall ring.
A floor will be rendered for each floor ( flood filling the house foundation ), only interrupted by openings that can be placed on the floors.
I will actually build the wall rings 2 times, the second time the walls will be inverted ( also with different texture offsets to allow different inner wall textures ) those two walls will be rendered at the same time, because only front faces will be rendered they will not z-fight each other. When the player enters the house, the
outer wall ring is not displayed anymore, so you can only see the inner walls, also only the floor the player is on will be rendered, when the player enters the next floor, the floor will slowly blend in as the player transitions to the next floor.
Doors and windows can break the wall rings and will be left as openings when creating the models, meaning that you can only exit a house by doors and windows. Also you can see the inside of the houses through the window from outside and vice versa.
The only problem in this concept i am facing is finding a nice algorithm to automatically generate a roof for a build house. I have already created the outside line loop for the roof, so it will leap a bit over the walls by just translating the lines of the foundation outside and calculating the cut points to the translated, enlarged lines with their direct predecessors and ancestors.
Now I am thinking of doing the same, but translating the enlarged lines of the houses foundation to the inside of the house, also defining them finally by their cut points like the outer loop of the roof. This will be my first layer of roof, from this I can do the process again, till everything is filled with roofs. The only problem with this is, that some points can lay directly on other walls and have to be recalculated and also some points
will be removed ( duplicates that sit on top of each other ). With some points removed, the whole loop of points needs to be reordered correctly.
Also i need to keep track of the outer loop of roof to the inner loop, basically for creating the triangles correctly between the two loops. I hope to be able to resolve this, but it should be doable.
The final step will be to add inner walls to the house, so you can create rooms inside.
So basically a house consists of floors, outer walls ( one for each story ), inner walls ( specific to each story ) and the roof, which can easily be blended in and out.
This will have the great advantage of being able to seaminglesly enter houses on a map without loading times, the player could directly relate their position inside the house to the outside world.
Right now, the foundation editor is ready and outer wall rings can be rendered ( without the option to place doors and windows yet ), also the outer loop for the roof is created automatically.
I will keep you informed of the progress I make here and hope to be able to show something soon.