Friday, August 24, 2007

Welcome Visitors

I just realized that Ladyada mentioned my project on her blog.

I much appreciate that, and those of you who have stopped by all the way from Arizona, Missouri, and Maryland. I'm in Los Angeles, so it was nice to see some local attention too.

Please leave a comment if something strikes you. I'll try to keep adding progress so check back once in a while too.

Thanks!

I've also been spotted on Make's website.
Thanks to the visitors from overseas incl: Italy, Russia, Hungary, Czech Republic, Kuwait, Bolivia, Japan, India, UK, and Brazil.

Labels:

Saturday, August 18, 2007

Processing Based Forestry

I've been building some Processing sketches to draw trees. This lead me to L-Systems (or Lindenmayer Systems) which are great rule-based formulas that can be used to draw patterns with natural looking forms. These same formulas can be used to describe natural growth and formations.

The most successful sketch to-date is this one. It's based on a sketch called "Hairball" that I found on a page belonging to W. Xavier Sneigrove. I've tweaked a bit of the code to make trees instead.









(click the image to see the sketch)

I hope to someday combine this with the bonsai hardware so it can display a unique naturalistic tree that's "grown" from software rather than a single 3D model that I labored over. This will definitely open up the possibility for the kind of slow interaction I'm hoping for as well. That the plant would grow more on the side facing a window during the day, or some kind of pruning or training. Something slow would be nice.

Labels: ,

L-system Drawing

This Processing sketch features a truly l-system based plant. I haven't figured out how to "grow" this plant in the same way as the very curly other one. When you click in the window of this sketch it jumps another generation in the weed drawing formula.

Based on the l-system rule: (X → F-[[X]+X]+F[+FX]-X),(F → FF)
Example 8: Fractal plant from wikipedia

Labels: ,

Wednesday, August 1, 2007

V4.0 - 3D Pre-Visualization 3

A second animation finished. This does a nice slow descent while it spins. I'm ready to try building this.















(click the image to see the in-progress animation)

Labels:

Monday, July 30, 2007

V4.0 - 3D Pre-Visualization 2

An animation of the pre-visualization finished enough frames for me to relax a little. I think this will look enough like a bonsai to be recognizable to others. I really just hope that an average viewer knows what it's supposed to represent. It seems that seeing this in the round really helps make the form visible.


(click the image to see the in-progress animation)

Labels:

Sunday, July 29, 2007

V4.0 - 3D Pre-Visualization 1

I've finished a rough 3D model of a fairly realistic Bonsai. I may post some process, but after much slicing in various ways and directions I finished cutting up my model into matrix-friendly pieces. (8x8 pixel squares)

I was also busy building a model of the upcoming hi-res matrices and some way to pre-visualize the display of the aforementioned sliced up 3D model. The result of many attempts is pretty accurate to what I expect the V4.0 device to look like once it's all programmed up and spinning. This display assumes I'll have a resolution of 32 x 32 pixels, which will only require 1 chain of matrix-controller chips and only 3 lines from my controller.

Labels:

Sunday, July 8, 2007

V4.0 - LED Matrix Circuits

As my photos illustrate all too well, the wiring of the matrices is pretty hairy. I'm planning to have some more prototype boards made as a back for each matrix. I'll try to build in the interfacing between these boards, so they'll all plug into each-other when I build a larger array.

I'm still using the freeware EagleCAD program, and I'm right in the middle of building a new library for the matrix. There's already a part for the MAX7221 (actually the MAX7219) so I don't have to worry about that.

I'd like to get the boards ordered ASAP, so I can experiment with more matrices at once. Though, I'm concerned that I'll discover the boards are wrong or could have been better. Kind of a catch22, so I may just have a couple made up or do them at home again. (sigh)

Labels: , ,

V4.0 - LED Matrix Code Driven Animation

I'm pretty happy with myself for this one. I've been reading the recently published book on Processing. I'm glad too, because the Arduino environment is based on the Processing language and this has given me enough understanding to patch together the useful pieces of code I found earlier.

There was an early example in the Processing book of a bouncing ball within a little rectangle on screen. I thought I might be able to adapt that code to work in the matrix. It didn't need much adjusting, and was much simpler as I didn't need to "draw" a rectangle or an ellipse. So, check out the bouncing:














Arduino Code:
Bouncing Ball

Labels: , ,

V4.0 - LED Matrix Animates

I created a couple monotonous pieces of code to generate an animated line. Before I did any serious coding I figured I should just try shoving a bunch of frames at the matrix and test the speed/refresh rate. I did make an Excel spreadsheet, where I can fill out grids that generate their own code.











I made a couple animated sequences with that. Click on these frames to see the animations:









































Arduino Code:
Counting Animation
Pattern Animation

Labels: , ,

V4.0 - LED Matrix lights up

I found a great deal of help with this online. Oddly specific to the task, a search for MAX7221 and Arduino gets a lot of results in Arduino forums and project pages. There's a little code, but mostly overview, basic questions answered, details meaningless to beginners (like me), and my favorite pseudocode.

I did get this to work anyway. I'll be adding screen shots, code examples, and process later. Here's some visual documentation:










Labels: , ,

Friday, July 6, 2007

V4.0 - LED Matrix work

As I'd sort of expected, I have decided that V4 will be higher-res. I hope it to be way higher-res, but we'll see. The plan for now is to use an Arduino board (that has been burning a hole in my project table) for the control. It has a pretty fast chip, 10MHz, so I'm hoping it'll be able to keep up with all my spinning about.

I got all the pieces in the mail that I'd need, had the Arduino, a couple LED matrices, and a couple matrix controller chips from Maxim-IC (MAX7221). Putting this all together is a heck of a lot harder than re-arranging the parts on the SpokePOV, but here goes.

Labels: , ,

Monday, June 25, 2007

V3.1 - Conclusions + Zen

Looking at the videos again, I'm a little frustrated and excited about the project. I do really like the weird Tron style and odd blips of mis-aligned lights. It has that great analog effect of old-futuristic movies that hasn't yet quite come to pass.

Believe it or not, but that odd blip doesn't happen in person, but seems like some frame-rate issue with the video. Documenting this is pretty hard, as many POV-ers will attest these things effect your eyes very differently than a camera's CCD. I've tried different long exposures, ISO/apertures, video settings and found some things that work pretty well. As I said too, I've accidentally made some very nice and surprising images along the way.

I think the V3.1 video part 1 starts to look quite a bit like the animation of the 3D model I tried to match. That alone is pretty promising. As I hoped to do I've learned a lot about vertical and radial resolution, and the RPM/FPS needed for the animation and Persistence of Vision, not to mention circuit design software, PCB manufacturing, built a 3D-to-2D to micro-controller design process, and made all that work together pretty well.

So, V4 and V5? I'm still trying to work out what resolution I think a very detailed 3D bonsai tree will need. I also should define what an acceptable first tree will do. Will it "grow" over time? Can that be spontaneous, or does it need to be pre-programmed? If it is generated by an algorithm, what outside forces can be incorporated into the process over time? I'd like a flexible development platform, a very hi-res LED array so I could concentrate on the programming end of that. I suppose those things will have to come along together.

This is a lot of progress, and I'm feeling pretty good about it. I'm also feeling like, other than a better 3D tree model for V3.1 to display and a slightly faster fan, I've reached the end of the V3 family. I'll likely begin work on V4, either in 3D or in written form next.

Labels:

V3.1 - Video Documentation P2

Here's another video of the new 8 layer tree. This one has a diffusion over the LEDs, as the other one looked too much like little points of light, and didn't blend together like I'd hoped. This works better, but I'll have to find the right material and LED spacing eventually.














Sorry, the red/orange landing lights never came back on. Watch the other V3.1 video first and this one should make sense too.

Labels:

V3.1 - Video Documentation P1

Justin was kind enough to weigh in on the previous videos. As I'd feared, the handheld video was pretty shaky and sort of disorienting. I built a little camera rig just so I could move around these models a little more smoothly. I'll have to put up a picture of that contraption as well. On to the new video...














Also, at Justin's inspired direction, I added those little red/orange LEDs to the base. They look like little landing lights, but are mostly there to keep the sense of orientation as I move the camera around the model. They worked well, except they kept shorting out during the shoot. Too rushed I guess.

Labels:

Sunday, June 24, 2007

V3.1 - Tree Model Testing

The 8 layer tree model finally uploaded and spinning. At first glance it didn't really look much more complete or detailed than the 4 layer tree did. I also thought the 3D model was pretty tree like at the time I modeled it, but now I'm less sure. I experimented with a different wheel shape, more donut like with a large center (hub), which had the effect of more consistent detail from center to edge of the B/W conversion.










I think it looked better than this spinning, so I'll have to shoot some more video too.

Labels:

Friday, June 22, 2007

V3.1 - 3D Tree Model

I've built a pixelated 3D tree in 3D Studio Max for testing 2 boards back to back. The animation on the left shows the model and how it unwraps into the 2 flattened SpokePOV images. I'll upload those to the back-to-back boards and test out the better vertical resolution.

Labels:

Thursday, June 21, 2007

V3.1 - Double Board Assembly

This is the new, higher res hardware setup. I didn't really know how this was going to work until I started populating (assembling) the second board. These are two identical boards, back-to-back, and offset vertically. When spinning, one board should end up making layers 1, 3, 5, and 7 and the other filling in the spaces should make layers 2, 4, 6, and 8. Here are the boards set up on the fan.










I should be able to create a 3D model of a new tree with 8 layers, and separate the interwoven layers into the 2 B/W images to upload to the boards. Here are a couple more photos to show the 2 boards back to back.










I got my hand in one of the long exposure shots, we'll say that's for scale.

Labels:

Tuesday, May 22, 2007

V3.0 - Video Documentation P2


Walking around the ghostly 3D bonsai.

Labels:

V3.0 - Video Documentation P1

Labels:

Monday, May 21, 2007

V3.0 - Tree Model Testing - different views



So, this is kind of tree like. Though, I concede that it looks more like coral than a bonsai tree. The LEDs are still points of light more than a mass, even when 2 adjacent LEDs are lit they read as 2 dots. At least the 3D form is discernible. Next step video, then more LEDs and a better 3D model.

Labels:

V3.0 - Tree Model Testing - Growing


Labels:

V3.0 - 3D Tree Model

I've built a pixelated 3D tree in 3D Studio Max for testing the V3.0 board. The animation on the left shows the model and how it unwraps into the flattened SpokePOV image on the right.

Labels:

V3.0 - Fan Assembly



This is much more straight forward than the version with all the fiber optics. It's also way brighter. This is good considering how briefly each LED will be on in any given location. The board, battery pack, and magnet (for rotation positioning) are all hooked up and ready for testing.

Labels:

V3.0 - Assembled Circuit Board



This isn't much, but the board is all assembled. It seems to have worked out pretty well, though the rows of LEDs are pretty far apart. Also, I haven't been able to get this to hook up through a serial port so I still don't know if it even works. They do look nice, and I love seeing my board name silkscreened on the PCB.

Labels:

V3.0 - Custom Circuit Boards

I got my 3 circuit boards in the mail today. These were produced by Advanced Circuits who come recommended by Ladyada and others on the net. The boards were adapted from the aforementioned Ladyada's SpokePOV circuit. I edited the board files within the extremely limited size in the free version of the very impressive EagleCAD. I'd love to have the full version of this, but did manage to get all the components to fit on the restricted board size and in a pretty satisfactory layout.

I plan to stack the 3 boards vertically to make a tall tree, but will start with 1 alone. I'm not even sure if the boards were designed correctly. I hope so.



I didn't make these myself partly as an experiment in the process of professional PCB fabrication, partly because V2's boards took so long to make, but mostly because these needed to be 2 sided boards.

Labels:

Friday, April 20, 2007

V2 - Assembled Boards





The boards took a while to etch, were pretty simple to populate and assemble, but were nearly impossible to solder onto the SpokePOVs in place of the LEDs. This version was abandoned after the assembly problems and successes with experiments EagleCAD.

Labels:

V2 - Etched Boards


This is one of the three sets of circuit boards that I etched. These are mostly drilled and ready for populating.

Labels:

Wednesday, April 4, 2007

V2 - Concept and Design

The idea for V2 is to route the connections for each of the 60 LEDs in the SpokePOV up to another configuration. Rather than routing the light with FiberOptics, this uses a series of daughter cards to rearrange the electrical connections for the LEDs without changing any of the rest of the SpokePOV board or programming. This is again overly complex in a way, definitely not an elegant solution, but if it works and doesn't take much time then I don't care.



This is the final artwork for my V2 boards. These were pieced together from 9 parts made in EagleCAD assembled and edited in Adobe Illustrator. I'll be using blue Press-n-Peel toner transfer to mask and etch 3 of each board.

Labels:

Tuesday, April 3, 2007

V1.0 - Video Documentation P2

Labels:

V1.0 - Video Documentation P1

Labels:

Monday, April 2, 2007

V1.0 - Testing 3D POV

The grid of lights didn't turn out quite right in this version. Rather than scrapping it I'm forging ahead, to learn as much as possible from V1. A couple of the FiberOptics ended up in the wrong position, and few don't transmit much light. The patterns I've programmed into this are pretty simple, but I can't tell the difference between them.



The whole CircuitBoard and FiberOptic assembly is mounted to a square computer fan (120VAC) that spins at about 500 RPM. This sounded fast, but only works out to be 8 FPS in animation. I'd prefer 12-15 FPS on the low end, but the Amtel microcontroller seems to crash at higher rotation speeds anyway.

In the images below you can definitely see the light sweeping through space, defining arcs of different lengths and diameters. This isn't motion blurring, but the LEDs turning on and off as they rotate in very specific locations. The points of light at the end of the FiberOptics are way too small, looking very spread apart. This isn't helpful for using them as pixels to draw out a 3D shape.



End of V1.0

Labels:

V1.0 - SpokePOV+FiberOptics



The FiberOptics carry the light from the SpokePOV's 30x2 LED configuration to my 8x8 grid. The top half of the grid faces one way, and the bottom faces the opposite. Each of these has a left and right side that are mirror images. This is so that while spinning, you can view a point of light from any direction.

Labels:

Wednesday, March 21, 2007

V1.0 - SpokePOV hacking

I received my SpokePOV kits from Ladyada
I've been thinking about how to adapt these for use in my BonsaiPOV project. This won't "grow" in any meaningful way, as I hope the final will do, but should provide a decent platform for designing the form.


This is my first hack for the SpokePOV. I know I want to layout the LEDs in another configuration, not 2 parallel rows. I figure that it's easier to leave the LEDs on the board and pipe the light elsewhere with fiberoptics. My solution to that was to drill right into the LED lens and epoxy the fiber into it. This worked surprisingly well, as the light hasn't spread very far from the reflector where it strikes the end of the fiber.

Labels:

Thursday, March 1, 2007

SpokePOV


This is the original SpokePOV from Ladyada.

Labels: