about

:: what is BSO3? ::

BSO3 is a CSG-plugin for the GroIMP modelling-platform written in Java, released under the GNU GENERAL PUBLIC LICENSE Version 3.

It is an implementation/port of Sander van Rossen's C# demo-code accompanying his and Matthew Baranowski's article "Real-Time Constructive Solid Geometry" [1].

There are two popular approaches for combining graphical primitives into more complex objects: One consists of "growing" complex structures by using growth-grammars, with graphical primitives as nodes. The other one is combining graphical primitives, by interpreting them as convex sets and performing boolean-set-operations on them, known as CSG. While GroIMP was developed with the focus on the former approach, it had no support for the latter one. Using the BSO3-plugin allows for combining both approaches into a single one, by incorporating a new node type into the growth-grammar, representing a boolean-set-operation.

This project does not claim to be a perfect CSG-solution for the GroIMP-modeller. Though the code is working on a lot of possible configurations, there still exist some bugs in more complex settings. But this project might be a starting point for anyone who is trying to do CSG on this platform or it may even be sufficient for your needs.

While van Rossen's & Baranowski's algorithm is updatable in real-time, to my best knowledge the GroIMP-modeller does not support such a feature yet. Although in principle the meshes generated by this plugin may be cached, possibly on the GPU. Anyone interested digging into the inner workings of the modeller is cordially invited to do some work on the problem.

For requests, please use my GitHub profile: Patrick Kaster


[1]: Rossen, Sander v. ; Baranowski, Matthew: Real-Time Constructive Solid Geometry. Chap. Real-Time Constructive Solid Geometry, p. 79-96. Published in: Game Development Tools, A K Peters/CRC Press, May 2011. - ISBN 978-1-56881-432-2