![]() ![]() So why is Nodebox so much slower? I took a look at context.py, the file where all the drawing happens. (On a side note, the code is easily extended to write out an animated gif using gif.js) Removing the image-saving code from Processing (Java) yields a blistering 27.6 fps, while removing it from Nodebox makes almost no difference. I was expecting processing.js to be similarly slow – how could you expect javascript to keep up with the mighty JVM? I was wrong the processing.js sketch was the fastest of all, averaging 5.3 fps, or 14x faster than Nodebox! Admittedly, the code does less work it doesn’t save any images to disk. Out of curiosity, I also ported the sketch to processing.js (which was pretty straightforward) you can see the result here. It barely scratches the surface of what can be done, but it’s a fun demo. I decided to make a quick project, starry.py with fast_star and scikit-image. Īnd, as advertised earlier, Python’s many great libraries are easily callable from Nodebox. ![]() Rewriting star in OpenGL (and some cute tricks), I was able to commit fast_star, a function that runs 23x faster. Interestingly, it was implemented using an inefficient intermediate class (BezierPath) instead of directly in OpenGL, like the other primitives. My rendered output is here: (I used ImageMagick to stitch the frames together – it’s a ~9 MB animated gif)ĭespite its performance problems, Nodebox does have a primitive that Processing is lacking however, the star. This fake iMessage generator lets you choose the message window. That’s a hell of a performance price to pay. BoxyLady2, a 72-line sketch by analogpixel became 20 lines shorter (yay!), but also 11x slower (.375 fps for NodeBox, 4.4 fps for Processing v2.0b9). ![]() Once that was out of the way, I decided the most instructive thing to do was to port an existing Processing sketch to Nodebox. If you have mercurial, git, and pip installed, it’s not too bad (on OSX, you need to install pyglet from HEAD because version 1.2, which switches from using Carbon to Quartz, has not yet been released): So, I decided to give it a whirl and installed Nodebox-OpenGL (hereafter referred to as “Nodebox”). And although Nodebox lacks Processing’s vibrant community of developers and rich ecosystem (including geomerative and toxiclibs) Nodebox comes with a lot built-in (flocking, particle systems, graphs), plus easy access to all the goodies you could ever want in Python. Nodebox lets you code in Python instead of Java. Lynn Cherny’s talk, Data Visualization with Nodebox (Slides, Video) made an excellent case for using Nodebox as a framework for creative data visualization instead of Processing. The good news is: there’s lots of low-hanging fruit. TL DR: Nodebox-OpenGL gives you the sugar and power of Python and the ease of Processing, but with a significant speed penalty. NodeBox 3Node-based app for generative design and data visualization NodeBox OpenGL Hardware-accelerated cross-platform graphics library NodeBox 1 Generate 2D visuals using Python code (Mac OS X only).A talk for PyData 2013, on using Nodebox OpenGL (and Nodebox 1) for doing data vis with python.Open: 0: 27 Jul, 2020 06:46 AM by john: Door with Awning - Restored. Open: 0: 27 Jul, 2020 08:00 AM by john: Contours without a Custom Node. Open: 2: 27 Jul, 2020 10:47 AM by john: Augmented Reality Street Art using NodeBox. It integrates seamlessly with the web, transforming data from multiple services into interactive visualizations. NodeBox Live is a web application for data visualization and generative design. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |