![]() |
![]() |
This summer I worked in Cindy Grimm's lab down in my home town of St. Louis, dividing my time between two projects. Primarily I worked on Sangwon Lee's Architectural Sketching project, which I'll describe in more detail later. I got decently far implementing Holger Winnemoller's Driving Test, which is also described below.
Architectural Sketching
Sangwon has it in his head to try and design a 2D-to-3D architectural sketch converter which functions on minimal user input, and I'm giving him a hand. Cindy Grimm graciously offered me a place in her lab for the summer and gave me access to her wonderful library of code for starters.
Driving Test
Holger wants to run an experiment to compare performance levels in game environments between various levels of image abstraction (shading, contours, and textures). He found an engine (Fly3D) that's got the bulk of what we want to do already coded up, so we chose to start with that..
Firstly, after a mad rush of coding and writing, Sangwon and I submitted the first portion of this project (the interface) to I3D within the 2nd week of classes. After many (6 or so) weeks of waiting, we sadly heard back that our paper had been rejected. Starting on November 9th, Sangwon and I redoubled our efforts with a new goal in mind for our paper, Graphics Interfaces 2006, in hopes that they will like us a little more there. Reviews from our first attempt told us mainly that our paper lacked proper focus; we spent too much time talking about minor features and too little time talking about our primary contribution (our perceptual optimization scheme). We're currently updating the paper to have it ready for November 21st (my birthday!).
Simultaneously, I'm working with Sangwon to finish up the automatic reconstruction stuff. I'll be working on implementing some of the more cosmetic features of our system, such as day/night time lighting and Entourage(tm) figures. Fun fun!
While waiting to hear back from the I3d folks, I jumped madly onto Holger's ToonRacer train consisting of still more mad coding in preparation for the Ford Building Dedication, which we used as a participant pool in the experiment. We managed to run about 15 people through our experiment, but, unfortunately, the data was not what some call 'statistically significant'. We're currently in the process of updating the experiment so that it will yield nicer results.
| Week | Date | In | Out | Hours | Update |
|---|---|---|---|---|---|
| 0 | Thursday 6/23 | 11:00 | 5:00 | 6(6,6) | Bruce/Amy/Sangwon in Town. Initial meetings, setup, parking pass, etc. |
| 0 | Friday 6/24 | 8:30 | 5:00 | 8.5(14.5,14.5) | Setup. Got a Unix acct, got Fly3d compiling, waiting for 2nd Unix acct, hacked a windows admin acct. |
| 1 | Monday 6/27 | 8:15 | 4:45 | 8.5(8.5,23) | Checked out Cindy's gfx library, got MeshViewer(IBar) compiling, stared at libraries for awhile, mauled MeshViewer (now to be known as ArchSketcher) to render a bitmap. |
| 1 | Tuesday 6/28 | 8:15 | 4:30 | 8.25(16.75,31.25) | Got lines drawing properly, stared at the library code for camera solving until my brain hurt. |
| 1 | Wednesday 6/29 | 9:45 | 6:15 | 8.5(25.25,39.75) | ArchSketcher can now solve for the camera position. Fixed a bug in image loading that chose to appear today. |
| 1 | Thursday 6/30 | 8:15 | 4:30 | 8.25(33.5,48) | Refined the camera solving algorithm; it now does an initial pass, then tries to tweak the user data and solve again. |
| 1 | Friday 7/1 | 8:30 | 5:00 | 8.5(42,56.5) | Yet more refinement -- it interpolates and solves multiple times toward the desired camera position (as opposed to making one big jump). Tried to figure out how to make the background image scalable (*scratches head*), and shading the car differently for Holger's thing. |
| 2 | Monday 7/4 | -- | -- | 0(0,56.5) | 4th of July |
| 2 | Tuesday 7/5 | 9:45 | 6:15 | 8.5(8.5,65) | Started messing around with finding vanishing points; began implementing element selection (pts, lines, etc); messed with rendering settings in fly3d to no avail. |
| 2 | Wednesday 7/6 | 9:15 | 5:45 | 8.5(17,73.5) | Drawing polygons now possible; vanishing point hunt continues; holger's repository FINALLY checked out. |
| 2 | Thursday 7/7 | 9:45 | 6:00 | 7.25(24.25,80.75) | Birthday lunch for ppl in the lab. Lots of progress on vanishing point locating. |
| 2 | Friday 7/8 | 8:15 | 3:45 | 7.5(31.75,88.25) | Early day -- taking a road trip this weekend. Planned out with Cindy how to use the vanishing points to find the camera; spent a long time staring at Fly3d...considering switching to a different engine and starting from scratch; looked a Irrlicht with Newton Game Physics as a solid possibility. |
| 3 | Monday 7/11 | 7:45 | 4:45 | 9(9,97.25) | Decided not to abandon fly3d. Worked on setting up checkpoints and scoring for the cars. |
| 3 | Tuesday 7/12 | 9:45 | 6:15 | 8.5(17.5,105.75) | Much more work on vanishing points; solving for them a little better; forcing lines to go through vanishing points functioning reasonably well |
| 3 | Wednesday 7/13 | 8:15 | 4:30 | 8.25(25.75,114) | Working on vanishing point adjuster widget...coming along. |
| 3 | Thursday 7/14 | 8:30 | 4:30 | 8(33.75,122) | Coming dangerously close to finalizing camera position. |
| 3 | Friday 7/15 | 8:15 | 4:30 | 8.25(42,130.25) | First pass of readjusting camera based on vanishing points done; steering wheel working for car sim |
| 4 | Monday 7/18 | 9:00 | 5:00 | 8(8,138.25) | Interactive switching of rendering modes for car sim; played with various levels of detail for toon-shader; interface tweaking for archsketcher |
| 4 | Tuesday 7/19 | 9:00 | 5:00 | 8(16,146.25) | Desaturated-mode for carsim done; keyboard adjustable settings (desat., edge width, etc); added a rather odd flat-green-no-shading-landscape-mode to the carsim for yet more disorienting fun |
| 4 | Wednesday 7/20 | 9:00 | 5:00 | 8(24,154.25) | Modeled a track for carsim; tweaked snap-lines-to-vanishing-points method; working on drawing a rabbit car for carsim |
| 4 | Thursday 7/21 | 8:30 | 4:30 | 8(32,162.25) | Implemented Load/Save in archsketcher; Rabbit and scoring reasonably intelligent in carsim; |
| 4 | Friday 7/22 | 9:15 | 5:45 | 8.5(40.5,170.75) | Dynamically generated LODs for carsim; starting on polygon drawing in archsketcher; |
| 5 | Monday 7/25 | 8:15 | 4:15 | 8(8,178.75) | Slow day. Cleaned up line drawing bugs in AS, now actually ready to do polygon drawing; implemented a couple more features in CS for Holger |
| 5 | Tuesday 7/26 | 9:45 | 6:00 | 8.25(16.25,187) | Overhauled AS class structure completely to make i more amenable to Sangwon's drawing code. |
| 5 | Wednesday 7/27 | 8:15 | 4:15 | 8(24.25,195) | Incorporated all of Sangwon's code into my camera stuff; graph class marginally functional...just need to fix the cycle finding function; |
| 5 | Thursday 7/28 | 9:45 | 5:45 | 8(32.25,203) | Cycle-finding works, now just need to get 3d point projection working; |
| 5 | Friday 7/29 | 8:15 | 4:15 | 8(40.25,211) | Projection working sometimes...not sure what the problem is; finished (mostly) session saving and fixed some minor bugs for carsim cs department bbq |
| 6 | Monday 8/8 | 8:15 | 4:15 | 8(8,219) | Nearly finished with session recording (Holger wanted more output); car sim refusing to compile with a linker error...for several hours now. |
| 6 | Tuesday 8/9 | 9:45 | 6 | 8.25(16.25,227.25) | CS compiling again; fixed several minor CS bugs; starting to puzzle out AS glitches; |
| 6 | Wednesday 8/10 | 9 | 5 | 8(24.25,235.25) | Fixed some minor UI bugs in AS; Added guidelines to helper drawing; added a separate explorable 3d window; |
| 6 | Thursday 8/11 | 9:30 | 5:30 | 8(32.25,243.25) | Shaded meshes now draw properly in the new meshview window; more minor AS bugs; located 3d projection problem...now to fix it; |
| 6 | Friday 8/12 | 8:45 | 4:45 | 8(40.25,251.25) | Fixed the projection problem; added functionality to let user specify coplanar polygons; |
| 7 | Monday 8/15 | 8:45 | 12:45 | 4(4,255.25) | Half day today -- finacee's leaving town. Worked on improving the background image drawing...hopefully will lead to transparency soon; |
| 7 | Tuesday 8/16 | 9:00 | 5:00 | 8(12,263.25) | Background transparency done; fixed polygon selection bug; added unit cube scaling feature; started adding more intelligent projection stuff; |
| 7 | Wednesday 8/17 | 8:00 | 4:00 | 8(20,271.25) | Added another projection heuristic on top of Sangwon's...working fairly well. |
| 7 | Thursday 8/18 | 9:15 | 5:45 | 8.5(28.5,279.75) | Cleaned up the new projection scheme; started on texture mapping the final image |
| 7 | Friday 8/19 | 9:15 | 5:15 | 8(36.5,287.75) | texture mapping done; toggle render mode (polygonal or texture); updated load and save routines |
| 8 | Monday 8/22 | 9:15 | 5:15 | 8(8,295.75) | cleaned up line removal a bit; fixed projection computation bug; fixed face selection issues; new lines snap to vanishing point lines; added point-based (as opposed to polygon-based) reprojection; |
| 8 | Tuesday, 8/23 | 9:00 | 4:00 | 7(15,302.75) | adjustable line/point size; cleaned up texture coordinate calculation; fixed yet another projection bug; |
| 8 | Wednesday, 8/24 | -- | -- | 0(15,302.75) | GRE! |
| 8 | Thursday, 8/25 | 9:00 | 5:00 | 8(23,310.75) | noticed some distortion problems and cycle-finding problems...probably going to ignore them; more minor bug fixes |
| 8 | Friday, 8/26 | 9:00 | 5:00 | 8(31,318.75) | Tweaked the interface a little; got a fair bit done on orthographic projection...need to get some questions answered on Monday |
| 9 | Monday 8/29 | 9:15 | 5:15 | 8(8,326.75) | Started looking at writing height-map terrain generator; more futzing around with orthographic projection; |
| 9 | Tuesday 8/30 | 9:00 | 5:00 | 8(16,334.75) | Finished orthographic projection; fiddled with terrain generator some more |
| 9 | Wednesday 8/31 | 8:00 | 3:00 | 7(23,341.75) | Worked from home (no car); spent most of the day fighting with VS.NET; worked on terrain generator; |
| 9 | Thursday 9/1 | 9:00 | 5:00 | 8(31,349.75) | Getting close to finishing terrain generator; paper editing/writing; |
| 9 | Friday 9/2 | 7:30 | 2:30 | 7(38,356.75) | Fixed some projection bugs in AS; Worked on the terrain generator; wrote up a rough draft of the tech. section of the paper; |
| 10 | Tuesday 9/6 | 9:15 | 5:15 | 8(8,364.75) | Started object additions; |
| 10 | Wednesday 9/7 | 9:00 | 5:00 | 8(16,372.75) | line/fill styles for added polygons; cross-polygon texture coordinate transfer; hidden-line removal; |
| 10 | Thursday 9/8 | 9:00 | 5:00 | 8(24,380.75) | line covers; perspective texture correction; interface updates; ground plane |
The infamous IBar. Ignore the assertion that gets thrown when running the exec (it's looking for a file that only exists in Cindy's code tree, initially), and load Timsblob.m from the file/io menu. Enjoy.
Download ArchSketcher (updated 8/23)
Download ArchSketcher Source (updated 8/23)
Download a Demonstration Video(.mov)
To use, load an image from the file/io menu. The stippled lines you see are a set of axes. Draw three lines (click n' drag, r-click to remove) from a convex corner that resemble the edges of a cube, then click "calc. camera params." The camera will adjust itself from its original position (from(0,-1,-5), at(0,0,0), up(0,1,0)) to the proper new position, and you can look at the new camera data in the console. Next, draw several lines which point towards the left vanishing point in the image and click 'Find Left Vanishing Point'. Repeat for the right vanishing point, then click 'Adjust Camera'. Now start drawing polygons over the image, starting from one of the vertices on the cube now shown.