If my calculations are correct, when this baby hits 300rpm you're going to see some serious shit.
It's already slightly terrifying.
This is the current approach for reducing the horizontal field of view of the screens - a big heavy box o' slats. I'd like to make a lenticular array, but that's a whole side quest.
The black filament is surprisingly shiny. My first attempt turned out to be a light pipe, and didn't restrict the view. In this version, the slats have a zigzag profile.
It’s very unbalanced with only one collimator attached, so I’m spinning it too slowly for persistence of vision. But I’m sort of able to convince myself I’m seeing depth. There’s a lot of mechanical stuff I need to do before I can start cranking it up.
I have a habit of building displays that are just a confusing flickery mess on video.
The slat based collimators are such a pain, I've decided to go for it and try making lenses instead. I think a 3D printed mould will be good enough - the layer height is very much smaller than the LED size, and a bit of scattering is actually desirable. I'm printing this vertically so the lens profile gets the high resolution. It's going to be precarious when it reaches the top.
I had to turn the print 90 degrees - it wiggles rapidly doing the lens profiles, and when that was on the bed slinging axis it shook the whole room. It's a lot less dramatic when it's just moving the head.
Bah.
I think I can live with it. I printed it vase mode for speed, so I was expecting it to need a stiffer structure to hold it flat.
I did have another swing at it. The first one I’d hoped to slip intact around a stiffer carrier. This one I made wider, and corrugated, so it printed better.
I’ll chop the front off that, and stick it into this to make the mould.
How can I be out of silicone?
Following a series of poor decisions, I now have both a mould and a vacuum chamber coated in uncured silicone.
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.

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

It sort of works?

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!
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.
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.
Just realised that I can increase the resolution by progressively offsetting each panel by 1/3 the LED pitch.
That should contain or possibly create any shrapnel.
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.

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.

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.
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.
Inaction shot.
The Ring of Power from Harry Potter.
I’ve mentally moved on from this design, but I went ahead and built it to the point I can call it finished.
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.
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.
Anyway, the new display is going to be amazing.
I even remembered to take some pictures before I put it all together.

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)

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.
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).
Display 1 currently serving as convenient rotating testbed.
The thing about voxels is that even when they’re not working, they look cool.
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.
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.
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.

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.

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.
The new platform now has enough bits to display an image while spinning.
@ancientjames works with a cardboard vr viewer ;)
@ancientjames I love this project and all the updates
@ancientjames
i just found this project of yours and i LOVE it.
good job!
@ancientjames this is incredible!
@mgagle I was this close to giving up on it.
@ancientjames yeah, I get that. Glad you didn’t.
@ancientjames that is awesome. I want to build one.
@jonbro I've been wondering about putting the stl files somewhere - it's all very specific to the parts I happened to have (and almost none of it is how I would make a second one).
@ancientjames yeah - realistically I just want to read the instructions. Building one is likely too much for me.
@ancientjames Hey James could we chat over a Google Meet? I’m in the JST timezone.
@ancientjames volumetric pov’s have very little in common with stereoscopic displays.

@ancientjames it already is absolutely stunning!!

Makes me wonder, what's used for the display driving right now?
Maybe you mentioned already, maybe not. But it'd be neat to slap in a FPGA there to really push the data rate and maybe get some colour depth back!

I made some good experiences, speed-wise, with a mix of Binary modulation and PWM to get low data rate and good brightness.

@xaseiresh It's already scanning out as fast as the panel will take it, unfortunately.
@ancientjames any more videos of this in action?
@randytayler I’ll document it nicely when I’ve made it all a bit sturdier.
@ancientjames do you plan to release the STLs and other specs? I'm interested in replicating, it's excellent work
@ednamode I'll go into more depth on it all when it's more than a loose pile of parts. I'm not sure how useful STLs would be - a lot of it's built around junk I happened to have.
@ancientjames That’s no ring of power!

@ancientjames
I met a fellow at #EMFcamp that built replica #R2D2 - he doesn't know that he needs to build one of your masterpieces for the top...

#EMF #Starwars #holograms #models #modelling #voxels #graphics #scifi

@ancientjames awesome as always James!
@ancientjames excellent work. swept volume sounds like the way forward. though just going by the integral of the coverage, LEDs in the center will have a much higher spatial resolution than the LEDs further out. i've dreamt up alternate "mill"-like setups where the distribution is better/ideal. but they need more space, and i don't know if a treadmill could be moved fast enough.
@ancientjames though it would be better if the leds were always facing the viewer. if the plate remained stationary towards the viewer and would instead be moved back and forth in sinoidal motion (like a sewing machine needle), that could work; here, brightness distribution would be higher towards the edges, but all LEDs would be affected simultaneously. the sync rate would probably use an asin() function to compensate.
@ancientjames the stress exerted on the joint between plate and motor could be substantial though (also, constant shaking of the plate's contents and bending of connected cables - but the backside of the plate doesn't need any LEDs!). i don't know enough about structural analysis to make this stable.
@lritter I’ve tried building oscillating displays, and they’re a real pain. The simplicity of rotating at constant speed is very appealing.