The purpose of the QuickWall plugin is to eliminate the busywork that builders are currently subjected to when they want to create the walls for a structure. This takes a lot of manual work lining up all the joints at the corners of walls, especially in the case where your structure has non-grid-aligned sections.
How does QuickWall accomplish that?
This is done through a 2D CSG system where you define the area to make walls around in terms of positive and negative volumes. The positive and negative volumes are manipulated via a set of custom draggers that make placing them easy. The draggers don’t snap the positive and negative volumes to eachother so that they don’t get in the way, and ignore the generated content so that it’s easy to manipulate the volumes without the content getting in the way.
How do I use QuickWall?
Open the plugin and place positive and negative parts from the toolbar. Positive parts intersect to define the area that walls should be generated around, and negative parts subtract away from that area:
Add content which “cuts into” the wall. Any model dragged against the wall will be “sunk into” it and cut out a section of the wall. This lets you quickly place any sort of window or door prefabs into the wall to cut into it. This can be as simple as a transparent Part to form a window, or as complex as a full window casement:
Modify settings for the model. The settings are stored in the model, so if you come back and edit it later, the same settings will apply for that model. Settings exposed include: Floor and ceiling generation: Should a top / bottom “cap” be made that can serve as a floor and ceiling for the set of walls? Split color: Should the walls be generated in two “layers” so that the inside and outside can be colored differently, or should only one layer be used for smaller part count? Roof generation: Should a roof be automatically generated over the walls?
Deselect the plugin and do other things. When you deselect the plugin the editable regions will be stored and remembered inside the model’s GeneratedContent folder. You can select the plugin again later to continue editing the where you left off!
Feedback
Seeing as this plugin is very complex, I’m looking for a ton of ideas and feedback on how to make the UX work better. Please try it out and make suggestions!
This creates CSG surfaces rather than CSG volumes.
The Studio CSG system is basically useless for making walls like this, because you have to do way too much busywork creating inner / outer cuts.
This system is built to specifically generate stuff (walls) at the edges of the volumes, and has custom draggers specifically designed for setting up walls.
All the stuff in “Packages” is third party dependencies that I didn’t write myself (though there are quite a few minor edits to DraggerSchemaCore), so they’re just in whatever format the original author decided to put them in, not up to me.
As far as the “Components” folder, those are Roact components that I’m planning to reuse in updating some of my other plugins, so they have to be separate.
Beyond that there’s really not that many packages. Most of the meat of things is in:
PolygonOperation → Raw math for polygon intersection / difference
UnionManager → Figures out what parts to apply polygon math to and when
FloorGenerator / WallGenerator → Generate the content when the UnionManager tells them to
I have good news, there’s nothing special about the door / window provided: You can drag whatever model you want and the draggers will figure out how to sink it into the wall.
I could make it so that the plugin looks in a folder under ServerStorage or something for additional models to show in the toolbar, is that what you’re thinking?
Yeah, the way it currently works it searches for stuff to cut by in the middle of the walls. Do you think it would work better to search a fixed distance from the bottom?
It uses a single Union for each of the floor / ceiling. If you’re only using it for walls then it won’t and otherwise it’s a minimal cost, building the floor / ceiling out of individual parts would be more expensive in many cases and the textures wouldn’t line up in every case.
Is there currently any implementation of how to create interior walls simply, also, how could I go about creating a two-story house, without all walls being two-stories?