Added a tremendously useful parameter type to the editor: 1-bit-deep bitmap type. The editor is clunky, by traditional standards, but as ever, fine for me.
One use for a bitmap parameter on an object is to procedurally generate its geometry. Allows a wide variety of expression without importing 3d assets. Since part of the “look” of the product will be “code, code, code”, this works well. The relatedness of the forms conveys the fact nicely.
Generating mesh from bitmap was fun. I used a greedy algorithm to find rectangles from top left to bottom right, knocking out bits once found. Tracing the extrusion edges was trickier. It works by:
- Building a list of every unit segment which is an edge (0-1 boundaries)
- Take one, and link to the next & the next, until the star point is re-found
- Make the sides longer than unit segments: any three matching X’s or Y’s in a row, remove the middle vertex. Repeat.
- For each loop, determine if it is clockwise or counterclockwise (4 more lefts than right, or four more rights than left
- Determine if it’s contains bits or spaces — find the leftmost lowest corner, and see if it surrounds a bit or a space
- If necessary, reverse the loop (bits clockwise, spaces counterclockwise) so the faces face outward from the final geometry.
Also, beginnings of mapping these objects to Volume Collision Objects. The world begins to operate.