Build a Rotisserie Scanner With Legos
WalkingBear writes "All you 3d geeks out there should take a look at this. This guy has built a 3d scanner (scans 3d objects resulting in a 2d cylindrical image map) out of a flat bed scanner and Lego. Also has a turntable style for use with digital cameras."
This user has no right to alter the use of this scanner in such a manner without a license. I will be informing the proper authorities of this illegal violation - Cmdr Taco
Well I know there will be people out there who will moan about things like this, but you got to say this i pretty f'ing cool.
This touches two vital "geek nerves" - Hack value and use of Lego.
Yes, that's what he did. I know Slashdot protocol is to not read the article, but try to make an exception for the summary of the article, at least...
Karma: Oldschool
That inner page of his is like 660KB all in, so I can see this guy's server taking a crunch real soon. His JPEGs were uber-unoptimized, so I've optimized them and put up a temporary mirror so you can all see the joy that is the rotissery scanner :-) It will disappear in a few hours or so.
Rotissery Scanner Mirror
I was genuinely interested in this story, as I'm an indie game programmer, and any easy way to generate 3D art is welcome. However, what this guy has created is not a 3D scanner. It's a 2D cylindrical scanner. Someone correct me if I'm wrong here, but I can't see any way to convert the resulting image into a 3D mesh, at least not without some very clever software which the inventor has neglected to write.
I'm impressed. He built a very cool system. I'd be more impressed if he could devise a means in which his web page displayed in the fullness of my browser, instead of being limited to a tiny window in the center. I'm telling you, once someone conquers the "fit to window" problem this World Wide Web thing is really going to take off. Mark my words, someone will make money off it.
The funny thing is, if you read the article you'll see that he's gotten better results by just stitching digital photos together. The scanner has actually given him rather poor images (he's got a nasty light leak), and you need to be able to put the thing you're scanning on a spit...
This is great for skinning i'd like to see people finish it up with some software that will mesh the images together in a batch proccess. Then you can get as detail as you'd like (1 pixel width per shot anyone?)
But what I really would like is some info on how to make meshes. I've heard about people using lamp projectors with grids on them, shine that one the persons face and then the software can follow the gridpoints making a mesh.
Then use a similar technique to follow body movements (flashlights at all the joints/tips on a body in a dark room)
Exciting times..
With a mesh and skinning proccess simplified and cheap enough for anone interested.
That's the only one I know of.
First a "bone printer" and now a lego scanner. What's next, a cardboard monitor???
"Armed forces abroad are of little value unless there is prudent counsel at home" - Cicero
Apparently the answer is: "Correct my diction."
Cool hack, though.
-Peter
As I was reading the article it took me a minute to really notice the picture of the skull. Well to notice that it was showing the back of the skull at the same time.
With that being said... Imagine what this could do for game skinners. Now using an old scanner and some legos you can easily skin in your own face to UT2k3 and other games.
Expect to see Ron Popeil selling this soon...
"Just scan it, and forget it!"
All the geeks I know are 3d geeks, though some are guilty of being one-dimensional at times.
OK, 'scuse me.
This person made a device that they found useful, and you have the AUDACITY to tell them to get back to work until it suits YOU!?
Who the FUCK do you think you are?
Why yes, I AM a rocket scientist!
...could deproject the scanned image to represent the object from an arbitrary angle, or create an ultra-smooth animation of it rotating about the scanned axis. It's the exact analog of the way a QTVR cylindrical panorama is rendered into a window, only there you're inside the object instead of outside.
This technique could be incredibly useful for creating photorealistic views of 3D objects from any angle about one axis.
Wish I'd thought of it. Now how long until IPIX patents it?
Next Lego post on Slashdot, I want to see something that will cook a chicken!
Well, it's not just in the labs anymore. Some Canadian guys over at Braintech have been able to accomplish 3d robot vision, and it's being used largely by car manufacturers.
http://www.braintech.com/sc3d_overview.html
// file: mice.h
#include "frickin_lasers.h"
at this link. Check his mathematical lego sculptures. It was covered in a slashdot article too.
Wait - this wasn't another BattleBots thread?
Okay, to be (relatively) serious - it's a fun adaptation, and goes far beyond the usual motorized crane / walking dinosaur constructions. It needs to be tweaked (i.e. fixing the light leak, and a few other things) before it is really usable in a practical** sense, but it gets all kinds of kudos in the "nifty idea; let's see if it works" department.
Now, if he can find a way to build a genuine 3D cylindrical scanner out of Lego(s), that would elevate him to uber-geek status in a heartbeat!
**not that practical usage ever had anything to do with building wonderful toys...
Doing my level best to piss off the religious right wing...
I would be more impressed if somebody made a Rotisserie BBQ out of lego. Works with real gas and cooks real chicken!
:)
To make it a real trick give it a linux box to control the heat and cooking time
Better yet, put the linux box inside and cook that!
Sure you could wrap the image around a perfect cylinder, but without knowing the "stetch factor" at the top and bottom, you wouldn't know how close to the center of the cylinder to render that point.
:)
Think of it like rendering a sky in games like doom/quake/half-life/etc. The sky is really just a very large box with a sky texture applied to the inside. You as a player are inside the box so you don't realize it's a box. Once you go outside the box, it becomes painfully obvious that there is no sky, just a box.
QTVR is inside the cylinder, but with the scanned image, you're outside
no comment
If you look all the way to the bottom, he takes that creepy warped skull image and wraps it on a 3D model to make something that almost looks like a 3D skull. It looks kind of crummy, but it's decent for a start, and much better than anything I've done in the same field (absolutely nothing).
He never explicitly says what his purpose in all this was (although he claims inspiration from the Matrix), but I guess he's wanting to use this to make it easier to get textures for 3D objects based on actual objects.
The scanner in no way reads depths though... the 3D model he uses in the end is NOT determined by the scanner. That would take a hell of a lot more work, and probably lots of those 2x1 blocks that always seem to run out.
-"One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man." -EH
Yeah, he admits all that. His problem was that the scanner does a calibration every time, which requires motion of the scanning element relative to the bed. It's got some patern in there. It turned out to be easier to make this amusing rig that rides along and spins the object than it was to try to mount the cal patern on a rotiserie made from the servo that moves the scan element. If the cal paternd noes not read, the device sends an error message and that's it. I'm impressed that the cal worked despite the light leaks.
The whole reason he tried this to begin with was that his hand rotation of the skull was very impressive. I imagine it took much less work than all of that stitching and editing.
It was nice of him to share the experience. We all now know what problems to expect when you take apart a scanner and can imagine solutions.
Friends don't help friends install M$ junk.
Such software exists. It is called Rotomapper, and can be found here, hosted on my website. I did not make the original application, and google turns up nothing on the filenames or application title. I just uploaded it now. I don't remember where I found it.
A home-made 3d scanner does not seem unfeasible. It would require having a computer-controllable laser range finder mounted on a vertical post, which is connected to a horizontal post. The laser could slide vertically on its post while the vertical post could slide horizontally on the horizontal post. Motors/pulleys/pistons would be integrated where necessary. In this way the laser would be able to move in a local XY plane.
All of these electronic components would be computer controlled, with the software controlling the laser's XY position. The software would increment the laser's position in both the X and Y directions, and find the distance (using the laser range finder) between the XY position and a point perpindicular to the XY plane on the object being scanned. That distance would provide the Z coordinate. The computer would store each set of XYZ coordinates and then generate a mesh from it.
Okay, if you want a 3D mesh, here's what I would do:
(1) Encase the thing in a black box [or work at night], and put a light on the y-axis of the scanner, and a red light on the axis of the rotisserie, near it, but not inside it [of course]
For your lights, use a good small fluorescent bulb.
(2) Run a normal scan.
(3) Light the thing from the North with blue light, and from the west with red light. Keep each light as *close* to the rotisserie as possible, and on the scanner side [of course].
(4) Run another normal scan.
Now, let's just take the blue light as an example. The intensity of the light decreases with the square of the distance from the light as it impinges on the skull's surface. So the brighter the blue-shift of the colors, the closer the point is to the blue light. Same goes for the red light. [The distance from the point to the scanner is not constant, and will affect this, but can be calculated.]
So align your pictures, and then you subtract off the previous exposure, leaving your "red/blue intensity map."
Now you have to modify the result of this by the reflectivity of the model -- but that information is contained in the original scan. Base Intensity * Reflectivity = Color intensity, so the reverse applies: calculate the distance to and from the model [start with an estimate: the rotisserie height, but recursively refine] to get the Base Intenisty, read the Color Intensity from the original scan, and that will give you the local reflectivity. Divide your red-blue map by the reflectivity, of each particular point, and you get back the Base Intensity of your red-blue map.
Take this intensity map to a png file, and then using some known values [based on the geometry of your setup, and some basic measurements] calculate the xyz coordinates of each point.
Run this routine recursively 2-3 times to get better ("good enough") accuracy.
For even better accuracy, you could use white light, but vary the intensity of your x-axis and y-axis bulb, and read the differences. Use that information to calculate the distance from the bulb to the model to the scanner.
Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
just set it and forget it ?