The Logitech notebook webcam that peers into the Thing-O-Matic has terrible dynamic range compensation; turning on the LED ring light washes out the image something awful. An old Logitech ball camera seems better, but it sits atop a rubbery dingus adapted to grip huge old laptops. So I built an adapter with a standard 1/4-20 tripod screw thread in the bottom that ought to make it more useful.
The old & new mounts compared:

The color change comes from switching to yellow filament for an upcoming larger object.
The solid model shows those tiny little notches will require a bit of riffler file work:

The bottom has a blind 1/4-20 tapped hole. Lacking a bottoming tap, not having any broken 1/4-20 taps, and being unwilling to grind the end off a perfectly good taper tap, I filed three notches along a bolt. Ran the taper tap in until it hit bottom, ran the bolt in likewise, and defined the result to be Good Enough:

On the other end, the most probable failure will leave that delicate little post jammed firmly inside the camera’s socket. There’s not enough post to allow printing a small guide hole, but there’s no real need for one; I drilled a #50 hole right down the middle, ran a 2-56 screw into it without tapping the hole, and filed the screw head flat:

After cleaning up those notches, it snapped solidly into place:

And then the camera sits neatly atop a cheap Gorillapod knockoff:

That tiny reddish dot in the middle of the imposing set of rings marks the actual lens, so it’s more of a pinhole camera than anything else. The fixed focus kicks in beyond a meter, but a bit of rummaging in the Box o’ Lenses produced a random meniscus lens that pulled the focus in to maybe 100 mm. Alas, that means the camera must float in mid-air about 15 mm inside the Thing-O-Matic’s box. If I can conjure up a mount that holds the ball inside the box, above-and-forward of the stage, that’d work great. VLC can allegedly rotate the image upside-down, so maybe I can mount it bottom-up.
Here’s everything I know about those two cameras, with the ball camera on top and the webcam on the bottom:

Apparently it’s easier to put that information on a tag than provide a good old data plate on the camera body.
The OpenSCAD source code:
// Tripod mount for Logitech ball camera // Ed Nisley KE4ZNU - Oct 2011 include </home/ed/Thing-O-Matic/lib/MCAD/units.scad> include </home/ed/Thing-O-Matic/Useful Sizes.scad> include </home/ed/Thing-O-Matic/lib/visibone_colors.scad> //------- //- Extrusion parameters must match reality! // Print with +0 shells and 3 solid layers ThreadThick = 0.33; ThreadWidth = 2.0 * ThreadThick; HoleFinagle = 0.2; HoleFudge = 1.02; function HoleAdjust(Diameter) = HoleFudge*Diameter + HoleFinagle; function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); Protrusion = 0.1; // make holes end cleanly //------- // Dimensions BallDia = 60.0; // camera ball BallRad = BallDia/2; BaseDia = 16.0; // interface at tripod surface BaseRad = BaseDia/2; BaseLength = 10.0; // to base of ball BoltDia = Tap025_20; // standard 1/4-20 thread BoltLength = 7.0; StemLength = 8.5; StemDia = 4.7; StemRad = StemDia/2; FlangeWidth = 6.6; FlangeThick = 2.6; NotchSectionDia = 1.4; // toroid cross-section diameter NotchSectionRad = NotchSectionDia/2; NotchOffset = 2.3; // from top of stem //------- module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); FixDia = Dia / cos(180/Sides); cylinder(r=HoleAdjust(FixDia)/2,h=Height,$fn=Sides); } module ShowPegGrid(Space = 10.0,Size = 1.0) { Range = floor(50 / Space); for (x=[-Range:Range]) for (y=[-Range:Range]) translate([x*Space,y*Space,Size/2]) %cube(Size,center=true); } //------- // ShowPegGrid(); translate([0,0,BaseLength]) union() { difference() { translate([0,0,-BaseLength]) cylinder(r=BaseRad,h=2*BaseLength); translate([0,0,BallRad]) sphere(r=BallRad); translate([0,0,-(BaseLength + Protrusion)]) PolyCyl(BoltDia,(BoltLength + Protrusion)); } rotate(180/16) cylinder(r=StemRad,h=StemLength,$fn=16); difference() { translate([0,0,StemLength/2]) cube([FlangeWidth,FlangeThick,StemLength],center=true); translate([0,0,(StemLength - NotchOffset)]) rotate_extrude(convexity=3,$fn=64) translate([FlangeWidth/2,0,0]) circle(r=NotchSectionRad,$fn=16); translate([0,-FlangeWidth/2,StemLength + sqrt(FlangeWidth)]) rotate([0,45,0]) cube(FlangeWidth + 2*Protrusion); translate([0,FlangeWidth/2,StemLength + sqrt(FlangeWidth)]) rotate([0,45,180]) cube(FlangeWidth + 2*Protrusion); } }