BLOBBY MODELER IN JAVA APPLET
1997'-98' M. Eng. Project (CS790)
Yi-Ji Huang
Supervisor: Bruce Land
Department of Computer Science, Cornell University
 Bluebar.gif (142 bytes)

 vga.gif (962 bytes) Introduction about Blobby Modeling.

 vga.gif (962 bytes) Goal of this project

 vga.gif (962 bytes) Applet

 vga.gif (962 bytes)Code

 vga.gif (962 bytes) Future Work

 Bluebar.gif (142 bytes)
 

Introduction about Blobby Modeling.

As early as 1982, James Blinn began exploring methods to model molecular structures, which was often done with ball-and-stick or space-filling-sphere models. In the interest of both artistic variety and scientific accuracy, a new model that can appear more like a real electron density cloud for a covalent bond.

The conventional approaches to model such a shape via the familiar bicubic or quadric surfaces is difficult for elaborate molecules. For this reason, we seek to simulate an actual electron map with quantum mechanic representation of atoms as a density function of the spatial location. For example, a hydrogen atom might be represented as:

[1] D(x, y, z) = exp(-ar)

where r is the distance from a location to the center of the atom. If several atoms are present in the scene, the effects of their density field are simply added. Extracting a surface of constant value across the field, the molecular density cloud can be formed. Blinn named this the blobby model.

Years later, Wyvill, McPheeters, and Wyvill decided to apply the technique more generally to the modeling of soft objects, which are traditionally awkward at best to render. They presented a modification to Blinn's exponential function with one which is computationally cheaper. Additionally, their function has the desirable quality of being able to ignore an atom which is too far from the point in question. They first defined a bicubic function:

[2] C(r) = 2r³/R³ - 3r²/R² + 1

where C is the intensity of influence, r is the distance between the point in question and the atom, and R is the radius of influence of the atom. An almost equivalent but more efficient version of the function is:

[3] C(r) = ar^6/R^6 + br^4/R^4 + cr²/R² + 1

where the values of a, b, and c are found by solving with the following constraints:

C(0.0) = 1.0
C(R) = 0.0
C'(0.0) = 0.0
C'(R) = 0.0
C(R/2) = 0.5

yielding:

a = -0.444444
b = 1.888889
c = -2.444444

In 1991, Shigeru Muraki took it one step further, and applied blobby models on range data to visualize very interesting objects such as human faces. Immediately obvious from his research is that to achieve a reasonable degree of realism modeling anything other than simple molecules, a blobby model should be composed of a large number (typically hundreds) of atoms.

return to the index


Goal of this project

Goal of this project is creating an Java applet to simulate Blobby Model.   Basically, there are two blobs in the applet.  By defining the radii of two blobs, we can get parameters of the function of Blobby Model.  The parameters of strength are set as twice as blob's radius.  By defining the distance between two blobs, we will get the different shapes of implicit surface.  The applet can show the image of two blobs and their interaction. There are some examples.

return to the index



Code

Implicit.java
PASA.java
ImageCanvas.java

 return to the index



 

Future Work

1. Improve the rendering function

    The function I am using in this applet is based on Java default function.  It can only draw straight lines between two points.  There are some sharp point in the image which is impossible in a implicit surface.  It also has connection lines between two blobs.  Using different rendering tools such as VRML may improve the image.

2. Modify the implicit surface polygonalizer

    The blobs created by my implicit polygonalizer are not perfect.  Sometimes two blobs intersect with each other.  The implicit surface polygonalizer could be improved to get a better shape of surface.

return to the index