The State of Triclysm
About a year ago, I had nearly finished Triclysm, an LED cube simulator and driver application, for a final-year group project at my university. It was written in C++, using all open-source stuff, and could drive our physical LED cube over the network (via WiFi and UDP). Here’s an example on my small 4x4x4 (I apologize for the boring narrative, the video was for my Facebook to be honest… and I was overjoyed to finally get everything working smoothly):
We ended building a full 8x8x8 for the final project, which I still have. However, there was a problem with our current PCB (worked for test day thankfully), so I needed to rebuild part of it. That’s when I started learning Python and seeing how awesome it would be for a project like this.
I was specifically drawn to the idea of representing the cube as a Numpy array, which would make accessing and updating specific voxel values very concise. Not only that, but using matrix operations could also introduce some unique opportunities for animations (visually speaking).
I started working on a prototype, written only in Python, pygame (for the optional 3D previewer, both software and OpenGL), and Numpy as mentioned. I also plan to include a simple GUI written in Tkinter (which would also be optional). I like Python because it simplifies cross-platform conditional module loading without a recompilation (e.g. if you use only the software previewer, the PyOpenGL module is not loaded, and thus not required on the system at all!).
This allows Triclysm to be run on even basic computers, such as the Raspberry Pi! I have a couple myself, so I want to replace most of the driver board with a Raspberry Pi and go from there. I already tested the basic Python code and it works seamlessly, although the 3D previewer is somewhat slow (the OpenGL one needs to be rewritten for GLES). Surprisingly, the software renderer runs significantly faster on Linux (on my desktop) than it does on Windows. However, the OpenGL previewer (currently writing this part now) is expected to fix this.
Here’s a screenshot of the new Triclysm, running the software renderer under Windows:
I also added an integrated console, where you can use built-in functions provided by Triclysm (to load animations, run scripts, etc…), as well as some restricted Python commands:
Regardless, my life has also been fairly busy these past few months. I’m currently a teaching assistant for a third year microprocessors class, am also a student myself, and am starting a parallel computing computer vision project for my Masters project. I want to work on this as much as I can, but due to the previous clause, I can’t give any definitive timelines for a release.
I plan on getting everything finalized in a month or two on a Bitbucket repository, so I can at least start generating more periodic updates.