Email or username:

Password:

Forgot your password?
Top-level
James Brown

I’ll chop the front off that, and stick it into this to make the mould.

A large tray filling the printer bed, with a hollow raised square in the middle.
93 comments
James Brown replied to James

How can I be out of silicone?

James Brown replied to James

Following a series of poor decisions, I now have both a mould and a vacuum chamber coated in uncured silicone.

James Brown replied to James

Well I got a lens out of it in the end. It does make it more directional, but there’s more light off axis than I need.

An led matrix displaying a dinosaur through a fuzzy lens. It’s somewhat brighter in a vertical strip down the middle.
James Brown replied to James

I went back to the slats, and finally got all the bits hooked up together.

It sort of works?

James Brown replied to James

You can see what's going on a bit more clearly with a simpler shape. It looks better when you can use both eyes on it!

James Brown replied to James

The depth is smeared more than I want because the collimators are too shallow (because I don't like prints that take more than 16 hours to complete). I want to make them tighter, and spin the whole thing faster to compensate.

James Brown replied to James

The nice thing about these LED panels is that they're very high framerate (and cheap!). I'm updating these at 1.5 KHz - with 3 of them in a ring, that's 4.5 KHz. Just driven in software from a (somewhat dizzy) Raspberry Pi.

James Brown replied to James

Just realised that I can increase the resolution by progressively offsetting each panel by 1/3 the LED pitch.

James Brown replied to James

That should contain or possibly create any shrapnel.

The spinny display gizmo is now covered by a transparent plastic cylinder. (Specifically, a fish tank.) You can see a cat reflected in it, but that's not important.
James Brown replied to James

Making parts for this has been a real saga, so while I wait for a faster printer to arrive I tried removing the collimators and running it as a swept volume display. Now I’m thinking maybe that’s what I should have built in the first place.

A shot of a glowing holographic (not literally) display of the Earth. It’s sitting on an untidy desk, supported by Lego, and it’s missing a big chunk in the centre. Still looks pretty futuristic though.
James Brown replied to James

The thing I've been trying to make creates its 3D effect by displaying a whole different view in every direction, which means it can handle occlusion and fancy lighting at the cost of vertical parallax.

To turn that setup into a swept volume (where it's lighting up the LEDs according to where they are in space - full 3D, but glowy and transparent) I keep everything but the collimators, and just render each view with the near & far clip planes set really close together.

James Brown replied to James

I'll probably make two displays now - finish off the autostereoscopic one, but then rearrange the geometry so that I can sweep through more than just a thickish-walled cylinder.

James Brown replied to James

A quirk of these LED matrix panels is that they simultaneously update two rows at once, separated by half the panel. So on a 64x64 panel, you update rows 0 & 32, 1 & 33, 2 & 34 etc.
However, if you want to sweep one around an axis, you ideally want to update the outer LEDs at a faster rate than the inner ones, and this layout prevents that.

James Brown replied to James

The Ring of Power from Harry Potter.

A precarious spinning display projecting a 3D image of the Death Star off of Star Wars.
James Brown replied to James

I’ve mentally moved on from this design, but I went ahead and built it to the point I can call it finished.

A 3D display sitting on a desk. It’s a cylinder 35cm tall - transparent plastic above a black base, which is ribbed and supported on little angled legs. Inside, there is the suggestion of a spinning mechanism, and a loose scattering of points of light making up a simple cube.
James Brown replied to James

The advantages of this approach - occlusion and view-dependent lighting - are undermined by the fact that too much of the colour depth is sacrificed to hitting the necessary framerate. The sort of simple scenes it can display could be displayed better by a swept volume.

James Brown replied to James

Most of the time we don't move our heads up and down very much, so the lack of vertical parallax seemed like it wouldn't be a big limitation. But one of the situations where we do move our heads quite a lot is when presented with a neat little 3D effect sitting on a desk.

James Brown replied to James

Anyway, the new display is going to be amazing.

James Brown replied to James

I even remembered to take some pictures before I put it all together.

The base of the display - a circular platform supporting a 12V power supply, mains connector and motor speed controller. Attached to the base is a spidery gantry holding a slip ring (from an automotive alternator), a big bearing mount, and a semicircular ridge used by a photointerruptor for synchronisation. Also visible is a motor held by a 3D printed mount.
The parts of the display shortly before final assembly - the base platform with power supply, the turntable on its chassis, the prism of led modules, and the protective fish tank and supporting cowl. Black 3D printed parts predominate.
James Brown replied to James

Scouring Aliexpress for LED panels for the new display, and it seems the higher resolution ones tend to be flexible. I spent a while investigating developable surfaces* to see how I could take advantage of this, but couldn't come up with a layout that offers any advantages over a flat square centred on the axis. Seems disappointingly pedestrian.

(*Twisting a sheet of paper in my hands)

James Brown replied to James

I'm arranging it as two rectangular panels arranged with their bottom edges touching on the axis, which lets me update columns at the same radius simultaneously. The outer columns need to be updated more frequently than the inner columns, and one of the nice things about these LED panels is that you choose your own update strategy - you're not stuck with scanning a whole frame each time.

James Brown replied to James

If the lines were completely independent, you could evenly scan a sector with half the number of line updates compared to updating the whole frame. As it is, each line has to be updated in parallel with one that's half a panel further down, so it ends up taking 3/4 of the line updates instead (because some updates have to update the outer line while scanning out black to the inner line).

James Brown replied to James

Display 1 currently serving as convenient rotating testbed.

The spinning display disassembled down to its turntable. It’s now just a black disc supporting a Pi, a hub75 interface, and a poorly planned collection of wires and RC battery eliminators.
James Brown replied to James

The thing about voxels is that even when they’re not working, they look cool.

A 3D display device sitting on an untidy desk in a comfortable study. There’s a blur suggesting spinning equipment, and a formless scattering of coloured points hangs in the air.
James Brown replied to James

New display, new panels. I'm driving these ones using DPI on a Raspberry Pi, which is a handy way of wiggling 24 GPIO lines with precise timing and no CPU involvement.

128x128 LED panel on a 3D printed stand on a desk, displaying a 1 bit per channel image that looks a little like Rick Astley.
James Brown replied to James

The results I was getting with the new display were so much better than the original that I went back for another pass at it. Turns out there were a couple of stupid bugs limiting the refresh rate. The colour depth is now vastly improved.

James Brown replied to James

This is still using software bit banging. I'm going to switch it to using DPI, but the current interface board wasn't designed with that in mind, and the GPIO mapping doesn't put all 3 displays on valid DPI pins.

James Brown replied to James

If you squizz your eyes at this, you can see the 3D.

If you have difficulty converging it, it helps to make the image really small and gradually enlarge it once your eyes have locked on.

A stereoscopic pair of images of a rotating stereoscopic display. Two views, side by side, of the same object from slightly different viewpoints.

A device sits on a messy worktop. Black 3D printed plastic supports a transparent cylinder. Inside floats a gaudily coloured dinosaur head, made up of smears of light.
James Brown replied to James

I had the opportunity to give some live demos of this thing recently. It went over well, but the noise was a real killer.
I've reworked it to use a belt drive instead of the horrible 3D printed gear - before, it screamed; now it whirrs.

A view of the underside of the rotating platform from my 3D display, showing a GT2 timing belt.
James Brown replied to James

The new platform now has enough bits to display an image while spinning.

Test card F spinning on its axis; a mess of radial blur
James Brown replied to James

I massively overestimated how much lead would be needed to counterbalance the small amount of slightly off-axis electronics.

James Brown replied to James

Slowly turning up the dial at arm’s length.

Long exposure shot of the latest spinning contraption; a black turntable on blue legs, with a glowing pixelly wireframe hologram of the Apollo LEM floating above it.
James Brown replied to James

It would be convenient to address the voxel data as a stack of horizontal slices, because that's how it's exported from lots of existing tools. I have to rotate it 90 degrees though, because scanning out is faster if each column's data can be addressed as consecutive bytes.
It's a small change, but there's a 6.5x difference in speed between the two orientations, which directly translates into voxel density in the final output.

James Brown replied to James

I really need to get a hobby where missing my framerate target doesn't make me physically nauseous.

James Brown replied to James

I am having so much fun with this thing.

The spinning voxel display again. This time it’s showing a doom monster facing off against the green doom guy. They’re just floating above a turntable. It’s like magic.
James Brown replied to James

I've implemented parts of a content pipeline for rendering a scene on the PC and streaming it to this display, but writing video streaming code is so much less fun than playing with voxels that it may take a while to finish.
Here, I've stored the animation uncompressed on the display itself, and am updating it as fast as the Pi's SD card can handle. (Not very fast.)

James Brown replied to James

My target for this display is 600 rpm - lower than that and it's too flickery; higher than that and I can't refresh fast enough to get 400 voxels around the circumference without dropping to 1 bpc. I'm nudging 400 rpm here, and it's still pretty unfilmable and absolutely terrifying to be close to. I have to decide whether the overall approach is worthwhile enough to start spending money on aluminium and polycarbonate.

James Brown replied to James

Slightly higher rpm, slightly longer shutter.

James Brown replied to James

The other problem I have is that to sell the 3D effect I need to move the camera around a lot, so I'm going to have to put some effort into building a studio backdrop.

James Brown replied to James

Incidentally, those models are from Cheello's voxel Doom: moddb.com/mods/doom-voxel-proj - It's a lovely mod, and makes Doom feel more like my memories of playing it than the real thing does.

James Brown replied to James

I had a panel left over, and I thought I should have another stab at an oscillating display. I wanted to give it an undulating motion and came up with what seemed like a nice linkage, but the end result looks like it was designed by Trevithick.

James Brown replied to James

It's a nice fluid motion on the panel, but overall it doesn't bring me joy.

James Brown replied to James
James Brown replied to James

Guess I’m doing a cone next.

Two homebrew 3D displays - one cylindrical, one spherical.
James Brown replied to James

There must be at least 6D here.

James Brown replied to James

I rewired the back of the panel to tidy up all the loose flappy cables. It now manages 600 rpm, which is not too flickery.

Go Up