WIP Blueprint : Rapid Cabinet Designer


This is a rapid cupboard prototyping blueprint system i am building.
Why you might ask?

Well i need to redo my kitchen cupboards. Drawing the plans up will take about a day. Using prefabricated cupboards is expensive. And making use of plans downloaded from the internet does not give me exactly what i want.

So instead of spending a few hours to draw up the plans i decided it would be best if i could make an overly complex system to do the drawing for me, even if it will take superquadrupel the time as opposed to just drawing it on paper.

Size is automatically calculated based off of a single vector.
Once you are happy it spits out a sheet with dimensions for each individual cut that has to be made.

Shelves are equally spaced at all times.
There are no intersections of mesh. Everything is skin tight and constrained to each panel.
Compensates for Wall Mounted or Floor Standing and recalculates panel dimensions if you add floor support or a TopBoard.

Seeing this in real time is much better as you get to see how sliding the size slider around transforms the mesh in front of your eyes for rapid visualization.
Next up is the pantry unit, and then the washing basin cabinet.

Ultimately the variations you can already make from this single simple cabinet is endless.

Screenshot should hint at the features.
The only mesh used in this process is a tiny 1cm Cube. No other meshes are used.

[FONT=“Calibri”]Still working on this project. Nothing to show yet, but a story to tell. It is hard letting go of an idea, but this project started out with the intention of taking a week. I am now on 2 weeks.

The main hold up was a concept that did not pan out, try as i might. I can probably do it… but the math behind it was becoming extremely complex and for the interest of finishing the project i need to abandon it. I then moved to something simpler but eventually had to abandon that also. All due to time constraints.

The conundrum is the math required to create the room walls.
Method one was allowing the user to click in the world space and spawn a wall which would snap to increments of 10cm and 15-degree angles. This worked fine, however it soon became apparent that corners meeting up requires a little more involved math as it had to snap to the previous walls corner.

Not a concern. The concern however is as displayed in the picture. The game currently has no way of being aware of where the player will be as you just started the room creation process. As a result, your math has to be guessed as the player position ultimately determines which corner needs to snap. Why?

The goal is to have 100% correct measurements. If your wall was meant to be 205cm, then it has to be 205cm. Not 200, not 210, not 201.
Now if we start lerping the corner to snap, it would mean that we first have to interpret the players position. Which is only known after the room has been finished.

I guess you could complete the walls according to your specs and then once done and the player spawns it recalculates the players position and all the walls are adjusted accordingly. But as stated this will take a significant amount of time. And maybe at a later stage this can be implemented. But for now, it is overkill for my purposes.

I then tried doing method 2, which was to remove the ability to create individual walls and instead create a room by entering the dimensions, and then you can click on add and add another room. However, user friendliness being the main concern apart from accurate measurements it opened up too many variables. Now you have to get the first rooms dimensions, and constrain the new room to at least one of the axis dimensions. And then what if the adjacent room is meant to be left aligned and not centre aligned? Or Right?

So after carefully reviewing all the variables and the time it would take to implement this, i ended up only allowing one room generation.
And if the project is picked up by people and there is a need for those features, at least the ground work is completed and ready to be implemented with a little extra time.

This project is teaching me more to let go of features that are not feasible within a certain time constraint, than how to actually create those features. It has been a frustrating and interesting project. I went from clinging to an idea for 5 days straight despite knowing i would need a lot more time to finish it, to letting go of the next feature in 2 days, to 1 hour. And now i am much more comfortable backlogging or scrapping features that is simply not feasible to meet the deadline.