Mathias Ricken

Mathias Ricken




Curriculum Vitae (pdf)
(doc)  (txt)  (embedded)

Resume (pdf)
(doc)  (txt)  (embedded)


External linkArchive on A Concurrent Affair

RSSPublication RSS Feed

Research Projects

Concutest: A Framework for Testing Concurrent Programs

Mint: Multi-stage Programming for Java

xajavac: Extended Annotations-Enabled javac

LAPT-javac: Local Variable-Enabled javac

DrJava IDE

Programming for Change: The Temperature Calculator

Object-Oriented Design Festival

Design Patterns for Parsing

Assignments for an Objects-First Curriculum

Design Patterns for Marine Biology Simulation

Geometry Synthesis


Geometry Synthesis by Analogy


External linkCOMP 410 - Software Engineering Methodology

Past Classes


External linkA Concurrent Affair

External linkMy
External linkPapers
External linkTalks
External linkTeaching

      Geometry Synthesis by Analogy

In the summer of 2002, I was doing research with Dr. Joe Warren and some other students at Rice University.

I was experimenting with different algorithms for texture synthesis and tried to apply them to isosurfaces to generate new geometry, based on several hand-made source images and a rough sketch of the desired geometry.

Some examples of generated textures, with the original image on the left:

Generated with a 7x7 neighborhood and 3 levels Generated with a 7x7 neighborhood and 3 levels. The generated image lacks the source's structure in most areas, the neighborhood might have been too small here

Both examples were generated with a 7x7 neighborhood and 3 levels. While it worked very well on the left, the algorithm failed to capture the structure on the right. The neighborhood might have been too small here.

Here is an example of an isosurface synthesized from another one. Again, the hand-made source image is at the left. Only the contours are shown:

Generated with a 9x9 neighborhood, 2 levels and 3 passes at each level

The isosurface on the right was generated with a 9x9 neighborhood, 2 levels and 3 passes at each level. It has twice the resolution of the source image, which is why the the structures appear smaller. While most of the structures actually are connected, this way to generate them cannot guarantee it as long as white noise is used as seed. I am still looking into using other seeds. Interestingly, the current algorithm creates tileable isosurfaces, a fact that might or might not be useful. I was also working on non-wrapping synthesis to remove this feature.

The following image series shows how synthesized geometry improves if several passes are run at each level. Here, a 7x7 neighborhood and just one pass was used while the number of passes was varied:

Isosurfaces generated with a 7x7 neighborhood, 1 level and varying number of passes. Quality improves with more passes.

Hand-drawn isosurface. Isosurface generated from the previous isosurface using only diagonals.

In this example, the smiley face on the left is an isosurface that I drew by hand. The computer then re-generated another smiley face using only diagonal isosurfaces.

I also had a spin-off project concerning geometry images. Here, I tried to apply texture synthesis-like techniques to create similar but different shapes. Unfortunately, this project has not yielded any encouraging results yet. The problem was that texture synthesis merely creates new images using the colors from the old image. When it comes to geometry images, the colors are vertex positions, so the algorithm was just recombining old vertices in new nonsensical ways.

Copyright © 2002-2011 by Mathias Ricken. All rights reserved.