26.1.11

Problems Uploading Assignment 3 to Emustore, So I Used Mediafire (link here)

Click here to download the file for my assignment 3 submission from Mediafire, since the Emustore folder appears to be having the same problems as before.

Assignment 3 Final Submission

First Note: In the end, I had to go with my "failsafe" project idea. However, when I get back from Japan, I intend fully to continue working with AR to get the other project working. If I were able to spend time up to and including the 7th of February working on this assignment like everyone else, I'm certain that I'd be able to get my original "wouldn't it be cool if..." project working.

Second Note: For the submission to emustore, I provided two scenes for BuildAR. These scenes differ mostly in the number of markers they have, since in poor lighting, BuildAR was occasionally recognising one marker as another. If this problem occurs during the exhibition, try a scene with fewer markers in it.



THE FAILSAFE PROJECT IDEA DESCRIPTION:
A problem with purchasing furniture and ornaments is that the potential buyer doesn't get the chance to really know what they'll look like in their home next to everything else. Using Augmented Reality, this problem can be solved. The potential buyer needs only a printer to make a marker, and an Augmented Reality program making use of a camera on hand. In this case, BuildAR will be used to let the user place ornaments as they please, locating them with markers in the real world.



IMAGES REQUIREMENT:
Screenshots of the scene I set up to test the idea in my bedroom:






Some more markers:








VIDEO WITH SOUND REQUIREMENT:




REFERENCES REQUIREMENT:
Located in this post.

Video for Interim Submission

Here's a quick video captured with fraps for the interim submission video requirement:

References for Assignment 3

Here are the references for the models used for the Augmented Reality in assignment 3, some of which I modified the textures of or split into different files (but looking at the assignment's scene, it should be fairly obvious which file is from which reference because everything is fairly distinctive):

http://www.mr-cad.com/Model4-p-850.html
http://www.mr-cad.com/mrcent03-p-872.html
http://www.mr-cad.com/Baby-Crib-Furniture-011-p-1160.html
http://www.mr-cad.com/Bar-Chair-003-p-1145.html
http://www.mr-cad.com/Sofa-00021-p-1169.html
http://samus.turbosquid.com/3d-Models/3ds/max/xsi/c4d/obj




For the posters, I simply grabbed some pictures from Google images and applied them as textures to very flat rectangular prisms in 3DSMax. The references for the pictures for the posters are:

http://www.sintel.org/wp-content/uploads/2010/06/08.2l_comp_000465.jpg
http://www.licuadorastudio.com/blog/wp-content/uploads/2010/07/sintel_5.3b_0129_compara.jpg
http://1.bp.blogspot.com/_XwjmBjJAtPI/TKalkHol_EI/AAAAAAAAAtU/_OeJCw0brzQ/s1600/Captura-Sintel-1.png
http://www.chinahighlights.com/image/news/water-cube.jpg




Note that some of the pictures are from the free-to-download short movie called Sintel, produced by the Durian team in Blender. You can find download links of it here.

Images for Assignment 3

Here are some progress images for the interim submission of my assignment 3 project. They show the markers I'm creating to let people place lifesize objects in a real-life context with augmented reality.

Printable marker for the first barstool:


Printable marker for the second barstool:


Printable marker for the brown couch:


Printable marker for a Sintel poster:


Printable marker for another Sintel poster:


Printable marker for a small table:


Printable marker for a smaller table of the same design as the one above:

24.1.11

Failsave Project Completed, Just Needs Markers Printed and 3D Objects Scaled

The title speaks for itself. I'll definitely be grabbing some sleep now, since I've got to get up and drive in... three and a half hours. Wow.

Anyway, here's an example of the kind of marker the failsafe project will use:





A rendered image will replace the "render goes here" text, and the markers will all (hopefully!) be distinct enough to be different to one another. I think I'll recommend they be printed off so the markers are 16*16cm, since there's a good chance they'll be pretty far from the camera.

To make the project a bit more of a comprehensive example of the capabilities of BuildAR with respect to the specific matter of a potential buyer wanting to see how something would look in reality before buying it, I decided to do the following things:
- make some models come in slightly different styles, so the user can compare them in realtime (two different bar stools)
- make some models come in the same form, but with different materials (three kinds of couches, two with flat suede-like colours, one with a brown leather texture)
- make several posters available, since people can easily stick them up on walls and move them around
- to get the attention of people coming by for the presentation, I added a 1:1 model of Samus from the Metroid series. I'd imagine there'll be nerdy people taking photos of the monitor while posing next to it, or something. I guess that'll happen with quite a few of the displays, though

All models were found online, but needed to be handled and modified in 3DSMax so they would show up properly in BuildAR. I'll be providing a list of references for them with the assignment submission.

I'll be spending the next however much free time I have completing an assignment for another subject and getting the last bits sorted out for my overseas trip, and then if there's time, I'll take a crack and quickly whipping up that additive modelling Flash application.

Assignment 3 Proposal

I've been so focused the last few days on trying to get FLARManager properly importing 3D files that I forgot to post my proposal. Given I'm currently tossing up between two proposals - one easier "failsafe" one, one hard "wouldn't if be cool if..." one. I'll post them both.



The "wouldn't it be cool if..." proposal:

A problem with many Augmented Reality viewers is that they're very static, loading some given model or animation and either showing an unmoving model, or playing just one animation. My aim is to attempt to make something more capable of change over time. My aim is to make an Augmented Reality application that allows the user to interact with the model they're viewing in a dynamic way, modifying it and creating something new.



The "failsafe" proposal:

A problem with purchasing furniture and ornaments is that the potential buyer doesn't get the chance to really know what they'll look like in their home next to everything else. Using Augmented Reality, this problem can be solved. The potential buyer needs only a printer to make a marker, and an Augmented Reality program making use of a camera on hand. In this case, BuildAR will be used to let the user place ornaments as they please, locating them with markers in the real world.



The failsafe proposal is pretty much finished the moment I get enough models of ornaments, since it's simply a scene that contains markers associated with those models. Then all I'd need to do on the presentation day (or rather, the 20th when I get back from overseas) is print the markers out at the right scale, and place a sufficiently high-res camera such that it looks at a patch of floor and wall that lets the users move markers around. My idea so far involves making a few posters, and letting the user arrange things like couches, bar stools, and tables at 1:1 scale in the scene. To help the user more easily understand what they're doing, the printed markers should have an image of the 3D object next to the marker to indicate what they're moving.



As for the other proposal, I think I'll try working with the idea I had for making a very simple additive modelling application, since I've hit a brick wall with reliably importing well-formed geometry and textures in FLARManager.

For very basic functionality, I'd simply need to have two markers. One marker "carries" a cube to let you position it as you like. The other, when covered, places the cube, and when uncovered, creates a new cube for the first marker to carry. (Also, when the carrier marker isn't visible, no checks will be performed to place a cube.)

Furthermore, a third marker could be used so that, when covered, all cubes are removed from the scene to start a fresh model.

To help the user understand how to use this system, the markers would be labelled with simple names: "Cube Carrier", "Place Cube", and "Delete All Cubes". To help even more, some text would be needed, saying "To choose where to place a cube, move the Cube Carrier marker around where the camera can see its pattern. To place a cube where the Cube Carrier is, hide the Place Cube marker from the camera. To remove all cubes and start again, hide the Delete All Cubes marker from the camera."



I'm about 90% done with the "failsafe" project. I'll get cracking with the "wouldn't it be cool if..." project, and make a Chronolapse recording of myself doing it. Hopefully I'll avoid any more model-related issues by strictly relying on the in-house cube-making functions of FLARManager!

23.1.11

So Many Time-Consuming Issues with FLARManager, I'm Stopping Work on It

Since I've spent so long trying to get FLARManager and its various components working (including, now, its other files parsers, such as Max3DS), and everything I've managed to get appearing as a model has had some pretty major issues (even the example scout model), I'm going to stop work for now.

My plan of action is now to come up with something achievable with BuildAR, which should be a breeze compared to what I've been struggling with. I'll use it as a backup assignment that I can submit if I don't get this FLARManager thing working in time before I go overseas on the 28th. The backup idea is a solution to what's frequently a bit of a bothering problem; knowing what decor will look like in your hope before you purchase it. Given a set of furnishings as 3D models, my idea is to let the user select which marker they want to print out, so they can place it where they want and see how it would look.

One issue with this is that lighting would obviously vary compared to BuildAR's rather constant lighting. It'd be nice to see an app developed similar to BuildAR where you can control the lighting conditions, or even place point lights with markers.

Anyway, after I've gotten that BuildAR scene thrown together, I'll get back to this project and try to get it working once more... But the issues with the rendering are quite persistent. More than just files not loading, backface culling for some of them seems to not work exactly, as though the object is being rendered from one direction with the camera 90 degrees off to the side. Also, when two objects are intersecting in the scene, some intersection does occur, but it's frequently messed up by tris rendering on top of each other when they shouldn't.

I've got other uni work to do for a different subject, too, so that will have to be done before I can afford to spend any more time on this project.

Currently Watching a How-to Collada Video for 3DSMax

Hopefully this video will let me create textured, animated (or at least easily controllable) Collada files.



I've got to admit, I gave a spiteful laugh when he mentioned "I know there's a lot of frustrations out there with the Collada format...".

I've got hardly any time left over before I have to go overseas. I don't think I've even had time to check that I've got everything I need.

Try, Try Again

After a bit of looking for how to create textured Collada models, I found a blog here that seems to be having a ton of problems as well. It'd be much better if there were support for good 3D animations and textures, and not just a ton of competing, hackneyed, half-working exporters. But that might just be the fact I've been at this for four days, doing nothing else and making extremely little progress due to the DAE file exporting being a terrible experience.

It seems to indicate that 3DSMax is the way to go, so I suppose I'll persevere with it now. Now to figure out how, oh how, to get textures exported with a DAE. I followed one tutorial that said all you need to do is assign a standard material to the object in question, then apply a bitmap texture to its diffuse input. But no dice when it was being rendered in PV3D.

Nightmares with DAE Files

I'm having a lot of trouble producing a DAE model that will show up well in FLARManager. I have tried using Sketchup's DAE exporter, 3DSMax's built-in DAE exporter, an OPENCollada exporter plugin for 3DSMax, and have tried lots of different settings. OPENCollada will export animations, but I have no idea how to get it exporting textures that will be rendered by FLARManager.

What adds to my confusion is that when I exported a test cube with a simple texture from Sketchup, it worked. I then drew a rectangle on it and pulled the face to make a cup shape, and exported that. That worked fine. Then I drew a rectangle on it again and pulled that to make a wall inside the cup shape, and exported that. The model now doesn't load properly in FLARManager, even after Ctrl+Z-ing to the state that it worked in. I've done this several times, and it appears to consistently occur, so... what gives?

I've had to constantly scale back what I'm trying to achieve because of random little finnicky things like this that just crop up out of nowhere.

I even tried using Blender, but its materials apparently also don't get rendered in PV3D. How the heck do you get a DAE working in this program? There's an example animation of a low-poly model that is also textured, and it loads just fine and has no issues whatsoever. Checking its file in notepad++, I saw that it was made using 3DSMax 8, using an exporter called Feeling ColladaMax v3.04C. Unfortunately, that exporter appears to have evaporated from the internet.

So, I'll just keep battling ahead and trying to get any description of a half-decent model showing up. All I wanted is to associate two models of different levels in a building with one marker, so you can hold your hand over a "button" marker and have each level fly out towards you for inspection, but it seems like a ton of stuff is working against that actually happening. It's been about four solid days of trying to get this working, and I'm constantly getting knocked back to square one. Frustrating!

More Thinking about FLARBuilder

I've noticed that in the example I'm working with, when a marker is removed, its associated object is deleted from the scene. Specifically, some irrelevant stuff, the code is:


var container:DisplayObject3D = this.containersByMarker(marker);
if(container){
this.scene3D.removeChild(container);
}
delete this.containersByMarker[marker];


So, the container (a model) is removed from scene3D (what I currently believe is what contains a 3D scene to be rendered each frame), and then... a container is deleted?

I tried commenting these lines out to keep a 3D model in the scene while its marker disappears, but what actually happens when the marker comes back is another instance of the model is created, leaving the old one sitting where it was. It gave me an interesting idea that AR could be used for quick, relatively intuitive "additive" 3D modelling. This is because whenever a new model is added to the scene, it can intersect other models already in it. So, for example, you could define a set of useful primitives associated with given markers. You could then have a "button" marker that the user can cover to trigger a primitive's marker to drop its model in the location it's currently at.

Rotating a scene set up like that, however, would currently be a mystery to me unless I can figure out how to associate models with other markers, and lock their orientation relative to that marker (otherwise they'd be automatically aligned with it).

In any case, that's just an interesting aside. My next immediate task is to find out how to permanently associate markers with given models, so when you cover a marker, its model stays in that position until the marker is found again.

22.1.11

Further Progress, Now with FLARBuilder

For anyone reading who doesn't know, FLARManager is what's called a "wrapper" for FLARToolkit's API. That means it basically makes it nice and easy to work with FLARToolkit, giving you a bunch of pre-made things. Sort of like if you were given all the parts that can make a car work (FLARToolkit), and then someone decided to put most of it together for you (FLARManager) so you can focus on learning to drive and pimping it out with extra stuff.

I was told a lot of useful stuff about FLARManager by Jacky Yuen, so it's given me a good footstool of knowledge to work with. I started not able to get even the basic FLARManager stuff compiling due to Flash player errors (I wasn't using a debugging version of it in Google Chrome). To get it working in Google Chrome, I followed the tech notes they have available here. In case that link changes, an outline of what to do is this:

To install and use an alternate version of Flash Player:

Download and install the appropriate system plug-in. This plug-in could be a debugger, pre-release, or release version of Flash Player. (Archived release versions of the system plug-in are found here.)
Type “about:plugins” (without quotation marks) into the address bar at the top of a Chrome browser window.
Click “Details” at the upper-right corner of the page.
Find the “Flash” (or “Shockwave Flash”) listing for the integrated plug-in on the page and click the corresponding “Disable” button. To identify the integrated plug-in, see the table of plug-in filenames above.
Find the “Flash” (or “Shockwave Flash”) listing for the system plug-in on the page and click the corresponding “Enable” button. To identify the system plug-in, see the table of plug-in filenames above.
Close all Chrome windows and restart the browser.

To re-enable the Flash player once you're done, you just need to go back to the "about:plugins" page, look for the Flash / Shockwave Flash plugins you disabled, then click "enable" for each of them.



After a bit of fiddling, I managed to figure out how to get some cubes showing up on various markers. Currently, I'm testing things using Flash Builder, since I finally got that working. Now the projects compile much more quickly compared to before. Flash CS5 would take the better part of a minute or two before letting me see what I'd made, whereas Flash Builder is only a few seconds, and lets you preview the Flash application in your browser.

The stage I'm currently up to is getting multiple (identical) .dae files animating over different markers. I've found the relevant OnMarkerAdded() and OnMarkerRemoved() functions, and I successfully modified two scripts to change from showing multiple cubes to showing simplified models of Team Fortress 2's Scout (which came with FLARManager).

Left to do:
- change models depending on what markers are being hidden / shown, so those markers effectively act as buttons being "clicked" by a user when they cover them up
- animate a 3D section of a building, and a few 3D plans
- see if I can detect whether or not a given animation is finished (so I can have transition animations between different states; ideally, I'd have a "neutral" state for the building model, then removing a marker would animate it back to a "neutral" state, after which it would animate to the state indicated by the removed marker)
- add cool animations to be shown over the tops of markers to act as buttons (hopefully semi-transparent textures are supported by PV3D's renderer); things like "Show Section" and "Show First Floor". I'd like to make it look like an interactive 3D menu is popping up over the marker when the user touches it, so hopefully that will be achievable within the timeframe I have left (3 days...).



The main issue left is deciding what kinds of options to provide the user when interacting with the application, taking into consideration how easy it is to model given things to avoid choking up what should be a simple, quick proof-of-concept process.

Online .pat Generator for Markers Made by Hand

I think one of the tutors mentioned this already, but I only just found the resource: there's a Flash application online (found here) that gets your webcam input, recognises anything it thinks is contained in a marker square, and lets you pick them to export as .pat files. The resolution of the files is pretty low, though.

However, the benefit of it is that you can simply print out a few empty markers, then scribble in them and then use this application to generate the .pat files for you.

I was using this for a while during the day, but then when the sun set and I had to use artificial lighting rather than daylight, I noticed the markers stopped being picked up because the .pat files weren't accurate to them. Rather than lowering the confidence of the marker detection needed to detect a marker (it was already at 50%), I decided to try something a little tricky. BuildAR can generate .patt files from .bmps and .gifs. I took a guess and hoped that BuildAR was developed from the same base as FLARToolkit and used BuildAR to create a marker, then used that in FLARToolkit. Lucky for me, it worked! Now I've got much higher-detail .pat files to work with.

I should also mention here that I had a lot of trouble getting FLARToolkit up and running. This wasn't due to FLARToolkit, but was actually due to the fact I was using Adobe Flash CS3 to try compile the example files. After downloading Flash Builder, FLEX 1.4, and Flash Develop to try get things working in CS3, I finally gave in and downloaded a trial of Adobe Flash CS5, which now works with no issues whatsoever, and I was luckily able to install it without uninstalling any of CS3. I'm fairly sure that only CS5 can compile them properly, though I wouldn't be surprised if there's a chance that CS4 could handle them, too.

Thanks to a lot of help from Josh and Jackie, I've gotten my head around how the Flash IDE works. Tasks currently still ahead of me are:

- get a 3D model other than a generic cube showing up (I thought I was having trouble with it, but now I'm supposing it's due to lighting issues)
- get an animated 3D model showing up and animating
- get a model on marker A changing state (eg, what model is being displayed) when I cover / uncover marker B, thus turning markers into real-world buttons

21.1.11

Overcoming Some Issues with FLARToolkit Being in Japanese

I was trying to find out how to make markers for FLARToolkit by looking through its files, and I found something in .odt format, which I realised is an OpenOffice format. I opened it, and saw everything was in Japanese. Given that everything was formatted nicely with tables and images, it would be an arduous task of copy+pasting chunks of text over and over into an online translator if I wanted to know what text went with what image. However, I came up with a better solution: Save As .html, then open it in Google Chrome, which automatically detects foreign characters on the page and offers to translate them. Thus, the page would keep its formatting (in html), and I'd be able to save the page from Google Chrome in its translated form.

I think I'll be able to do a similar thing with some of the ActionScript files, too. This should help tremendously!

18.1.11

More FLARToolkit Stuff I Found

How to create a "box head" that opens and closes its mouth as you talk:



The video goes through what you need to download to do what they're doing, as well as covering some basic code they used. I'm suspecting that Flash itself supports retrieving mic input, whereas FLARToolkit's libraries are used to render the box heads. With a few more really helpful search results like these, assignment 3 should hopefully get completed without any hitches.

17.1.11

Figuring Out Assignment 3

For assignment 3, I was wanting to get into the more technical side of augmented reality. I want to try out something called FLARToolkit to make an interactive model. The idea I have is to have a sheet of paper with several markers on it. One main marker will position the model to be animated. The other markers will be smaller and in a row, and will let the user control the state of the animation by covering or uncovering the markers.

Josh was a lot of help getting me started with FLARToolkit. Though I've got a lot of experience with programming (Basic, Python, C++, Javascript, etc), I'm new to ActionScript. Hopefully my familiarity with programming generally will help speed the learning process. Also, FLARToolkit has a lot of high-level functionality that seems to handle what I want to do. The main thing for me would be to attempt simplifying the process for myself, and perhaps generalising it to make the resulting Flash program able to have different models loaded into it while maintaining the same functionality.

As I find / figure out useful scripts, I'll post them on this blog.

Some links I was given by Josh to look at are:

3D Objects Interacting with each other (Google Groups)


Question on Multiple markers as a trigger...



Also, yay, API documentation for FLARToolkit.

Issues Uploading to Emustore

For some reason, I couldn't upload my assignment submission to Emustore (all attempts ended up being 0 bytes in size), so as an alternative, I'm uploading it to mediafire.com and am posting the links here.

The version with many extra files in it (intended to give a clearer idea of what I was trying to do with the assignment until I had to scale it down due to BuildAR crashing)
The version with the bare essentials in it (should work just fine, but doesn't show as much of the high degree of structure I was hoping)

Assignment 2 Video

Note: The video is currently being uploaded to Youtube. It would have been captured two hours ago, but I encountered a lot of issues and crashing due to trying to get BuildAR running with 18 medium to high poly models loaded. In the end, I dropped the number of models to something like 6 or 7, which still produces a significant drop in framerate but at least doesn't crash BuildAR.

Edit 1: Video finished uploading.



Edit 2: I made a simpler model and recorded again so I'd have a video up without a horrible framerate.

Design Idea in Progress

My design idea in progress:

For my submission, the requirement of having multiple markers is met through having one marker that can be modified to allow the user to view what they perceive to be the same model in different ways.

The workflow resulting in the final marker was as such:

A normal marker looks like this, and represents only one model in BuildAR:


For this project, I had the idea of being able to break up a marker into pieces that can be replaced to give the appearance of change in the viewed model:




The idea refined to a larger marker (double usual size) to help with handling its pieces. Note the holes in the back of the marker that let me poke the pieces out instead of potentially damaging them by picking at them with my nail until they come loose.





However, the first try had too many fiddly details for BuildAR to easily distinguish from one another, so I simplified it to this:




The idea was refined somewhat by considering the marker interacting with BuildAR as a "finite state automaton" controlled by the user. The idea works by setting the "state" of the marker, and letting BuildAR react accordingly to that state. For each state you want BuildAR to react to, you need a different model associated with a marker image in that given state. Unfortunately, since this means you need several different models loaded into BuildAR, this idea can very quickly start to take up a lot of RAM.

15.1.11

Assignment 1 Post

(Note: This is a post made using bits of previous posts to fit the requested layout.)

Title of Project: Control Freak

Description:
I'm an avid gamer, so controllers rule my life. It all started with a NES, so I wanted to pay homage by using new technology to capture and replicate its old technology. In a technophile's version of an archaeologist creating a plaster cast of a dinosaur's bones, I want to make a 3D printed 'cast' of a NES controller. While working on it, as with gaming, I'm a perfectionist and completionist. As such, I'm incorporating the words 'Control Freak' in the model, and will subtract an accurately modelled NES controller. The result is intended to be a replacement controller body.


Comparison of Real object and 3D reconstruction 1


Comparison of Real object and 3D reconstruction 2


Render of my reconstructed object


Render of my reconstructed object


Render of my reconstructed object



Supporting assignment material:

Timelapse video of me making the model to be 3D printed:

14.1.11

Mesh Unfolding Plugins for Sketchup

I'm just posting these links here so I remember to give them to Josh this Tuesday.

An automated mesh unfolding plugin (adds tabs to mesh so it can be printed, cut out, and glued together), comes as a 15 day trial version or paid one-year-license version:
Waybe Plugin

A free unfolding plugin, but you have to manually select faces:
Unfold Tool Plugin

Timelapse Recording of Me Making the Model to be 3D Printed

I finally got around to compiling and editing the timelapse images I captured with Chronolapse. I put the video to some music called "One Girl in All the World" by djpretzel, a link to which you can find in the video description on Youtube.

13.1.11

Yes, Yes, and More Yes.

Augmented Reality with Unity3D and SSTT:



I've been making a game in Unity3D for a competition lately, so seeing augmented reality and that combined is a really cool idea. I wonder if it's ok to submit a game that uses augmented reality... It'd be pretty damn cool, I'd say.

Also, here's a video I captured of me toying around with BuildAR, using part of my soon-to-be-3D-printed NES controller model:

11.1.11

Augmented Reality Videos

Here are some videos of augmented reality I found on Youtube that caught my imagination.

Augmented Reality Game for the iPhone:


Augmented Reality Game using the NVidia Target Dev Kit:


Interactive Augmented Reality (Touch Parts of Real World to Trigger Bone Animations):

9.1.11

Inspiration Images / Sources

I should mention where my idea of making a new case and buttons for my NES controller came from. In the past, I've seen several instances of people modding their old consoles to have new parts, or so they serve new functions. The first one that stood out to me was someone who modded their old NES so it became a properly functioning PC, with a disc drive in the cartridge slot, and other ports swapped out for the typical ports you'd find on a PC.

Some mods I had heard of in the past before looking more into it for this subject were a SNES toaster (the Super Nintoaster), a NES controller being stripped out and used as an iPod Shuffle, and sundry case mods. After a little research online, a ton of sources with people doing mods of their old console hardware turned up. To narrow down the results, I focused on Nintendo-related modding that caught my eye.

Here are a few images from the searching, including the URLs they were retrieved from (listed before each set of images taken from that URL).

An iPod Shuffle Mod of a NES Controller (http://everyjoe.com/technology/nifty-nes-controller-ipod-shuffle-mod-130/)


The Super Nintoaster (http://walyou.com/super-nintendo/)


NES Modded as a PC (http://www.geekologie.com/2009/06/im_on_to_you_snes_actu_a_pc.php)


Entire NES System Fitted into NES Cartridge, Ports and All (http://gizmodo.com/382452/nes-cartridge-modded-into-nes-system-space+time-remains-intact)




NES Cartridge Modded to be a Handheld System (http://walyou.com/portable-nes-cartridge-console-mod/)




NES Modded to be an Alarm Clock (http://www.infendo.com/nintendo-spotting-pointless-nes-mod-edition/)


I love the idea of revamping old technology to take on new functions, as well as reinterpreting old technology in new ways to get fresh enjoyment out of it, which is really the main reason why I made my project the way I did.

3D Model Finished-ish

I've got a 3D model completed that should be just fine in the 3D printer. I had a few confusing issues with holes appearing in my models after performing a few Pro Boolean operations in 3DSMax, but using the "Cap Holes" Modifier fixed them in most cases. The one instance it didn't fix the issues was when one solid had a double face, which I eventually realised I could delete (along with a resultant unconnected edge).

My main hope is that the buttons are in the right positions, and that they will sit at the right heights to be able to press the rubber contacts below them. It was a bit of a battle to get all the measurements done accurately for the different relevant parts of the NES controller's circuitboard and rubber contacts, but I eventually figured it out.

Here are some 3D "renders" of the model...

An angled perspective view of the controller with the buttons and D-pad placed in the top half:


A top view of the controller with the buttons and D-pad placed adjacent to the top half:


An angled perspective view of the buttons and D-pad on their own:



One thing I didn't know how to show in the renders was the fact that just underneath the lettering on the buttons, I subtracted the same lettering again, since that would be something that isn't possible for an average designer to achieve to the same quality in any medium other than 3D printing. I'm hoping that it will show up when the controller is looked at under bright light.

Now to crunch some numbers. Using Jeremy's approximation that printing a 10cm cube costs about $100, noting that a 10cm cube is 1 000 000mm^3, and noting that my model fills a rectangular prism of about 300 500 mm^3, the cost for my model should be (300 500 / 1 000 000)*$100 =~ $30.

That's a pretty good price for a funky new NES controller case! :D



Currently, I'm wondering if I could make use of the remaining space in the aforementioned rectangular prism. The case is mostly hollow, so something like a simple chain could fit in it, so I could well make a necklace or bracelet or something. If I can't come up with something reasonably soon, I'll just submit the model I have and leave it at that.

8.1.11

Thinking Through What to Model

I was originally intending to create the 3D model so it would be able to have screws put into it and also have the circuitry sitting in place easily. However, looking into the feasibility of doing that, there are a lot of places I could make a small error, resulting in the entire thing not fitting together. The tolerances for the screw holes, for example, would probably be less than I am able to manually measure, quite possibly resulting in a hole that is too tight or too wide. A tight hole could be tediously sanded down until the screw fits, but that would be rather time-consuming, and could still potentially result in a poor fit.

For an idea of the complexity of what would need to be modelled, here's a photo of the inside of the case:



So, instead of having screws and such, I think it would be easier for me to do the following:
- tape the back of the cord to the circuitboard (it should normally be secured by weaving between some parts that poke out near the cord's exit hole),
- make the inside of the case intentionally too deep for the circuitboard to be able to sit easily with the buttons on top; this way, I'll be able to pad it with, say, folded paper until it is precisely in position.

This should save me a few hours of modelling non-aesthetic details, and reduce the probability of the model printing incorrectly.

Photogrammetric Comparison

Here are some comparison images to show the accuracy of the point cloud generated by the Photosynth I picked for the final 3D model. It's a little hard to see, but the buttons had a little bit of trouble standing out in the surface reconstruction. Upon inspecting the point cloud, however, it looked like they were captured with appreciable accuracy. The issue therefore is that the mesh generated by the surface reconstruction was slightly smoothed out, rather than being more jagged. The corners of the point cloud are extremely accurately positioned, which is very clear to see when looking at the Photosynth.



Sketches for Altered Object Design

Here are some very quick sketches I threw together in Photoshop for the design. While doing them, I noticed another issue that will constrain the form of the model: the NES controller's Start and Select buttons don't have separate rubber contacts below them. Given that I don't want to destroy the controller or its components for this project, I've decided to keep those buttons in the model such that they determine the orientation and placement of the letters "R" and "E", because they're the two that would occur where the Select and Start buttons are.

An image showing where the contacts are on the controller:








Note that the placement of the "F" in "FREAK" is such that it covers all the contacts for the D-pad.

Another thing I intend to do with the model is to add 0.5-1mm deep cutouts of directional arrows on the "F", "Select" on "R", "Start" on "E", "B" on "A", and "A" on "K", so the object retains a semblance of obviousness to its function.

I forget whether or not I've mentioned this yet in the blog, but ideally, I'd like to be able to hook my old NES up during the exhibition so people can have a play with the printed controller and compare it to my other controller. Issues standing in the way of this are:
- I need to find the power cord (it's loitering around my room somewhere),
- I need to find an appropriate RF cable converter (I've got one that converts it to Component, so hopefully that'll do the trick)
- I need to make sure my old NES system still works.

Failing that, I'll probably just bring the system in and not bother to hook it up to anything, just so people have something more substantial to relate the object to than itself or another controller.

And with that, I should probably get some sleep. Tomorrow, I'll do a timelapse recording of myself getting the 3D model thrown together. I'll probably resort to using Sketchup for certain technical parts that require precise dimensioning, geometry inference, and 3D text, simply because I'm so familiar with it. I could look up the tutorials for 3DSMax, but that process would certainly take longer than making a model in Sketchup, using Babel3D to convert it to .3ds format, then doing whatever it is I need with it in 3DSMax.