Revopoint MINI 2 3D Scanner

I bought myself a 3D scanner which should greatly enhance my creation of digital donor kit parts. My digital library has grown to several hundred parts, and this should help with some of the more complicated, or hard to measure bits. Tank hulls are notoriously tricky to get right.

Here is my first scan of a Nitto King Tiger (1/48… or is it 1/50?). A bit soft in the smaller details, but perfect for wayfinding.

This was done without any scanning spray, so I hope to refine my workflow and get slightly better results. The circular scars on some of the flat surfaces are from where I had placed tracking markers.

Godspeed, Cerritos

While I obviously love the vehicle designs of Star Wars, there are things about Star Trek that I find fascinating from a design perspective. And then there’s Lower Decks. That one just hit different.

Our family completely fell in love with the Cerritos crew and their ship. It’s both quirky and capable—fitting perfectly into the Star Trek universe while still feeling totally unique.

As Season 5 came to a close, I wanted to honor that crew by building a model of their ship. I up-detailed it ever so slightly to make it feel as real to me as the show did, but not so much that it lost its cartoon charm.

I tried to capture the nuance of the design—like the way they use forced perspective in the nacelles to make it feel faster. I also prefer the detailing on the aft side of the engineering deck from Season 1. And while I get why they removed the two rows of windows across the tail, I felt it looked better with at least some detail in their place.

The actual lower decks are supposed to seem undesirable, but I can’t imagine a better place to be than nestled between the two impulse drives, looking out over the engineering bay with the universe in our wake.

Some details don’t scale well in reality. For example, the escape pods end up being about 75% the size of their Intrepid- and Sovereign-class counterparts when sized to match their on-screen reference. Some of this might be due to the scale change after Season 1—originally, the ship was said to be 794 meters long, but that was later reduced in canon.

This isn’t goodbye—just a farewell for now. We hope to see you again in a future series or a triumphant return to Lower Decks. Godspeed, Cerritos and crew.

The full-scale 535.2 meter model can be found here on GrabCAD.

**Thanks NASA for the awesome star images.

Proto One

Between Sean’s build, Stu’s build, various other builds I’ve seen online, and countless images of the naked ILM structure, I’ve had plenty to reference and ruminate about in regards to my own build.

I think I’ve said it plenty of times – the challenge with building a replica is that ILM got to make stuff up as they went. The size and proportions of things were the result of impromptu decisions and ad-libbing. A replica seeks to capture all that nuance (within reason) and is of a known quantity. This tends to be a slower process.

Late last year and over the New Year’s holiday I had a chance to put my ruminating to the test with my first full-sized prototype of an armature. For the final model, I want the armature to be light, strong, and resistant to warping, sagging and environmental effects over time. I will make it out our Carbon Fiber plate. In the short-term however, a plywood version of the armature will tell me a lot about how things fit, its stability, and assembly order.

I had all the parts laser cut from 1/4″ and 1/8″ hobby ply and after a few dry-runs practicing assembling things in sequence, got to clamping and gluing in stages.

As each spar is added to the assembly it gets more and more rigid. Even in relatively flimsy hobby ply, this structure is strong enough to stand on.

We build to learn – and I think for the next iteration, I’ll make a pin-registration table to allow me to align the mandibles in space relative to the saucer. I don’t think my plywood build is off by much, if at all, but knowing is better than not knowing. The rods will be 3/8″ and threaded; which will allow me to create height adjusted platforms to stabilize the z-axis as I go.

There are also a few additional spars I’ll add for some extra torsional rigidity.

I had an old Bogen tripod laying around that I used to prop it up for a walk around. This isn’t the actual mounting configuration – there are provisions for a “knuckle” in the centroid of the model that will receive a model mover rod and mounted on an engine stand for greebling.

The next step is to build the domes (ugh – the domes, the bane of any Falconer). The plywood buck will give me something I can hack-up to test fit domes on since I’ll want my final armature to fit the domes, not the other way around most likely.

my midjourney (so far)

it seems every one is playing with A.I. image generation these days. I find the tool to be both fascinating and addicting. Most of what it makes is garbage, but there are occasional gems that simply blow my mind. Most of these rely on the eye of the beholder. The computer dreams. We dream along with it.

midJourney really struggles with specifics like X-wings and TIE fighters. But I’m happy to indulge in this universe too.

space ports

Blimps

While the A.I. struggles with Star Wars iconography, I was shocked at how well it could represent a Ford Mustang from the future – blending cues from past and present to make something plausible and exciting.

A long time ago…

In April 2015, Andre and I “published” our first drafts of a blueprint for the Falcon. This got the attention of a few fellow Falconers and our little family was born. Sean Sides, Stu Brown, Doug Maio, Andre Bustanoby, and myself would spend the next six years together chatting about all things Falcon. Identifying new donor parts, trying to figure out the proportions of things, etc.

We did most of this on Slack – and some 50,000 messages (mostly “LOL”) and several gigabytes of photos and files later, Sean has a fully realized Falcon, and Stu (by his own best guess) is three-fourths through his.

Millennium Falcon by Sean Sides premiering next to the restored Dykstraflex motion control camera used to film the original Star Wars miniatures.

Sean taught us a lot. He was our trial run. As he built, he let us know where we were wrong (and right). He reworked as much as he could in real-time, but otherwise plowed through as only Sean can, and we rolled as much knowledge into the next rev of CAD in his wake.

Yearly (or more) snapshots of our iterative process

We have a lot of iterations. Stu mentioned he was using version seventeen. That’s mostly true. That’s version 17 of his Falcon model (which currently sits a v22). I keep a digital twin reference model of every team members’ build in case we need to go back and pull a specific dimension or reference. In aggregate we’ve done hundreds of iterations over the six years. And hundreds more if you factor in the progression of the subassemblies – I think our upper gun platform revisions alone were in the upper-fifties before we were happy with them. And then there’s the quad-cannons, docking arms, jaw boxes, docking rings, and on and on.

I thought it would be fun to superimpose all our key milestones. Fusion 360 keeps internal version numbers – but that is every single save – otherwise, we do our own mile-stoning; duplicate the working file, and dump it into an archive to have more discrete checkpoints. Or in some cases the Sean model, or the Stu model, etc…

The X-Wing project really helped Andre and I refine a workflow to truly nail the proportions of a model and the tracking points for reference. Below shows one of a dozen reference images we used for the X-Wing to track points in 3D space, extract them to CAD, and the use them as reference for final surfacing in Alias.

X-Wing digital model and photo composite as seen in X-Wing Part 1.

We’ve been using a similar process on the Falcon all along, but the X-Wing project really allowed us to tune our process, and verify that process against known fuselage dimensions since Jason had original X-Wing parts in-hand. Being able to make hypotheses, and verify that those hypotheses were correct as a scientific control to prove the fundamental method gave us greater confidence in what we’ve been doing with the Falcon. When we re-render our tracked surface data over our Falcon photoset (we have a little over 130 photos that we use for our Falcon 3D tracking) we have pretty tight alignment – original model’s idiosyncrasies not withstanding.

3D surface data reprojected onto photo and rendered.
photo credit: Andre Bustanoby

Six years later, we are more confident than ever that what we’re divining is dang close to the original. Onward!

The Stu Brown Show

We’ve been working with Stu (and Andre, and Sean, and Doug!) since 2015 on this project. It has been wonderful to see the birthing of another Falcon into the world. If only they were as easy to build as sitting on an egg… We learned so much from Sean’s build, and they just keep getting better. Great work Stu!

1/12th x-wing part 9

This post will be about the lighting (and mechatronics) solution we’ve started working on for the 1/12th. As with much of the project, we start with the 1/24th model.

The main objective of the first sprint would be to decide on what lighting components we’d build around. We were delighted (see what I did there?) to discover that the Adafruit Neopixel 7-element Jewel fit perfectly into the 1/24th engine, and the Jewel plus the 12-element Ring fit the 1/12th – a convenient way to scale up our solution. Using neopixel circular arrays for both models would mean we could scale the code and everything else pretty easily.

Adafruit Neopixel Jewel imported from their GItHub repository into Fusion 360 – ECAD + 3D CAD is amazing!
Neopixel solutions compared in 1/24th and 1/12th models.

Beyond an initial spec and fit check, there wasn’t a ton more to do in CAD – it was really a matter of ordering parts and prototyping stuff. Initial prototypes were done on an Arduino Mega. They are easy to use and have a ton of general purpose I/O on board. I use them quite a bit in early stages of development. I can plug-in and swap around things quickly and it makes for a productive brainstorming tool. This iteration uses both the Ring and the Jewel as we would in the 1/12th setup as it allowed me to quickly toggle between the two scales for testing.

Along with hardware comes software. One of the challenges I have had with programing LED’s is that ramping from one color to the next does’t always look right – whether it’s interpolating around the color wheel in unexpected ways, or muddy transitional colors, it rarely feels right. I wanted something I could “paint” with. I found this project on the Adafruit site that uses a Python script to take an image, convert it to an array, and “play” through the sequence like a flip book once loaded onto an Arduino.

There were a few things I didn’t like about the existing code though. It contained affordances for doing similar trickery with audio files (which I didn’t need) and, in the interest of saving memory (I think?), it converts the colors into 4-bit per channel colors. It also didn’t support RGBW Neopixels.

Modifying the Python script to convert to 8-bit per channel was just a matter of not jettisoning half the precision. Converting to RGBW was a bit trickier. Fortunately, we had done a similar project at Teague where we (Felix Heibeck and I) used Processing to convert RGB to RGBW. And that was largely based on the math found here. There’s a nearly one-to-one relationship between RGB and CMY color spaces, and a jump to CMYK is easy from there. Turns out doing all this on an inverted image results in RGBW. Here’s the relevant conversion assuming an inverted image as input…

p = pixels[x, y]

rrr = 1 - (p[0] / 255)
ggg = 1 - (p[1] / 255)
bbb = 1 - (p[2] / 255)

var_w = 1

if rrr < var_w :
	var_w = rrr
if ggg < var_w :
	var_w = ggg
if bbb < var_w :
	var_w = bbb

if var_w == 1 :
	rrr = 0
	ggg = 0
	bbb = 0
else :
	rrr = (rrr - var_w) / (1 - var_w)
	ggg = (ggg - var_w) / (1 - var_w)
	bbb = (bbb - var_w) / (1 - var_w)

www  = var_w

rrr *= 255
ggg *= 255
bbb *= 255
www *= 255


rgbw2hex(int(www),int(rrr),int(ggg),int(bbb))

Here is a link to a GitHub repository of the conversion scripts (RGB, and RGBW). They output a slightly different .h file than the original Adafruit code as my X-Wing Arduino code works a bit differently. I use the built-in Neopixel library for gamma correction, for instance. But if you’re playing around on GitHub, then I’m guessing you know what to do with them.

Speaking of Arduino code – that was the next part. I wanted a system in which I could load an image that represented the flip book animation, but we didn’t just want it to play end-to-end; we would also have a variety of states and transitions. For the X-Wing, we warm-up the engines, then throttle-up to a cruise state. When the wings open we transition into an attack mode. When the wings close, we go back to our cruise state.

I animated our source image (that would be later converted to an array of hex color values) in Apple Motion. I like the way Motion deals with 32-bit values for lighting effects. It’s quick, and renders in realtime. From there I output individual frames, wrote another Python script to ingest the frames, and concatenated them into a single image with all the frames end-to-end consecutively.

The Arduino code has a function that will play a certain number of frames then loop a frame for a determinate (or indeterminate) amount of time. It also has a procedural noise function such that I can pass a single color value to a group of pixels (say, the outer ring) and then add variability to the them as individual pixels. The whole animation fits into about 8k of memory. Certainly plenty of headroom to do more complex things in the future. Below is a video of our 1/12 (Ring + Jewel) test after a couple rounds of refinement.

From there it was a matter of integrating and miniaturizing the hardware. I moved from a Arduino Mega, to a Teensy 3.2, but then decided on the Adafruit M0 Trinket. The trinket has some fun lighting options built into the board that we would later leverage. But at first it was wires and prototyping breadboards. I started using 26 awg servo wire as it had what we needed for data, and power in a pre-terminated offering.

As mentioned, the M0 Trinket has some lights on it. We’ll install the M0 up near the cockpit console and repurpose its lights for instrumentation lighting. The green is just power on (so, not programmable), the red blinks when the wings are open, stays on when closed (it’s a digital out, so no fancy fading), the RGB light is programmed with a “CRT blue” color-sampled from the actual film, of course (I know it’s pink in the photo – we changed it later).

While playing with the breadboard, I started to imagine how I might package the connections for the final. Initially, I was going to just use perma-protoboard with the connectors perpendicular to the board – but once I got into routing the connections, it was too tight, and/or would have required too much effort to make multiples. If we were going to make a half-dozen of these, I’d need more space.

my first stab at connection layout – compact, but too hard to work with.
this looks remarkably similar to our final boards, but is built on protoboard and was never completed to working order.

Moving to a flatter configuration offered more room and a friendlier form factor for sending signal and power out to each wing, but would still be tricky to wire from a circuit standpoint. So, we went for a custom board. I thought it would be a good opportunity to learn how to make my own PCB’s as the 1/12th solution would eventually be 2-3 times the complexity with it’s additional power and servo (gasp! spoiler…) requirements.

With the new PCB’s fresh from OSHPark, I was ready to solder-up the first full prototype.

And of course build a Lego test rig to fully emulate the working conditions…

The 1/24th scale model isn’t very smart. There are no mechatronics beyond the Arduino and the Neopixels. To sense if the wings are open or closed, we’re using a hall effect transistor and a magnet to simply detect if the wings are near each other or not. The 1/12th, as mentioned, will have a more automated system with servo control (that’s the plan anyway) which means we can animate the lights in-time with the motion, rather just being reactive to the physical wing state.

4mm magnets fit perfectly in the Technics hole!

Last was the final testing before sending off to Jason. We’ll probably have another rev or two before it’s done, but here is the current state. This is the 1/24th scale version (4 x 7 LEDs) on the Lego rig diffused behind a piece of paper…

Next up is to get this fully integrated into Jason’s models. Then we do it all over again and then some for the 1/12th.