Chris Pollett > Students >
Jie Wei Lin

    ( Print View )









    [Del298 (Semester1)]





CS297 Proposal

3D Web Graphics without Plugins using VML

Jiewei (Joyce) Lin (

Advisor: Dr. Chris Pollett

Description: At the present time there is no way to directly view 3D graphics in the most common browsers (Internet Explorer and Netscape) without using a plugin. The closest things that exists at present are LiveGraphics3D [MK01], a Java 1.1 applet for viewing Mathematica objects and a weak XML language that is translated using Javascript to VML in Internet Explorer [GR00]. VML (Vector Markup Language) [W3C98b] is an XML [W3C98] based mark-up language for vector graphics. It is natively supported in Internet Explorer 5 and above, the most commonly used browsers on the web today. The goal of this project is to develop a stylesheet-transformation from the X3D language [W3DC01] to VML. Paungkaew Sangtrakulcharoen also at SJSU is working on a similar project but with target language SVG [W3C01] which is a stronger vector mark-up language. Her project will provide a Netscape solution to plugin-less viewing of 3D graphics. X3D is a version of VRML (virtual reality modeling language) [ANM97] specified as an XML DTD. It is a W3C standard and supports a robust set of tags for describing 3D objects and their behaviours. A stylesheet transformation from X3D to VML would, thus, allow web-sites to exploit 3D without having to worry about whether the client user is patient enough and competent enough to download and install a plugin.

To understand why this project is feasible and yet also rises to the level of a master's project it is important to understand a little about the underlying technologies involved. 3D objects are typically modelled as a mesh of 2D-polygons such as triangles. These polygons are typically shaded so that the surface of the object appears smooth and the underlying polygons are not noticeable. To draw the 3D object on a computer screen in a particular orientation a projection and clipping operation is applied to the object to get a 2D view. VML supports drawing of 2D-shapes such as polygons at given locations on the screen (although it has limited support for affine transformations of these shapes). It also supports gradient painting of shapes. Thus, it is conceivable using these tools to render 3D-objects. To take an X3D file and produce an VML image of a particular view of the object it represents involves generating a mesh corresponding to the X3D object, calculating shading and doing the final 2D projection. This involves implementing several non-trivial graphics algorithms in our translator. In many 3D situations the client will want to view the 3D objects from different perspectives, so we also need to be able to recompute the image on the client side in these perspectives. On the other hand, we need to optimize both the size and speed of our translator so that clients will not become bored by the download time of the translator and the time of the translation. As we describe below, the technology which is available to do this translation is quite limited which partly explains why it has not been done before.

The translator for this project will be written using style-sheet transformations. Basically these are rules which are applied by the browser or by the server to a tag when it is read or before it is transmitted. Internet Explorer supports the stylesheet transformation language XSLT [W3C99]. XSLT supports tag-replacement by other tags as well as manipulating tag-attributes. However, as we will have need of being able to manipulate matrices will probably have to tie these transformations to ECMAscript (aka Javascript) code [ECMA99] which can in theory output VML code. Further, the style transformations and this local ECMAscript code is typically only processed once so care must be taken to leave hooks so that different orientations of the object can still be computed. These considerations as well as speed considerations make the job of writing this translator much harder than the writing of a standard renderer and further illustrate that this project rises to the level of a Master's project.


Week 1 & 2: Jan 23 - Feb 1Scan [W3C98b] + VML handout.
Week 3: Feb 4-8Deliverable (1) due.
Week 4 & 5: Feb 11-22Read Ch.1-11 [ANM97]
Week 6: Feb 25-Mar 1Deliverable (2) due.
Week 7-8: Mar 4-Mar 15Read XML-XSLT handout
Week 9: Mar 18, Mar 20, Mar 22Deliverable (3) due.
Week 10: Mar 25, Mar 27, Mar 29Spring Recess
Week 11 - 14: Apr 3-Apr 24 Read Ch.1-6 [W00]
Week 15: Apr 29-May 3Deliverable (4) due.
Week 16 -17: May 6-May 15Deliverable (5) due.


1. Become reasonably proficient at  VML. This will be demonstrated by creating an image of a sunset that uses poly-line's, shape's, oval's, path's, and gradient's.

2. Become reasonably proficient at X3D/VRML. This will be demonstrated by creating a 3D mock-up of my appartment.

3. Create a DTD for drawing histograms. Write a XSL transform to render this language in VML.

4. Get the X3D Shape tag to work using XSLT and VML for Box, Cone, and Cylinder geometries and non-texture related support for the  appearance node attribute.

5. First semester report on project of length between 10-20 pages.


[ANM97] VRML 2.0 Sourcebook. 2nd ed. A. Ames, D. Nadeau, J. Moreland. Wiley. 1997.

[ECMA99] Standard ECMA-262 ECMAScript Language Specification 3rd ed. ECMA. 1999.

[GR00] 3D Interactive VML. Gareth Richards. 2000.

[MK01] LiveGraphics3D Documentation. Martin Kraus. 2001.

[W00] 3D Computer Graphics. 3rd ed. Allan Watt. Pearson Education Limited. (Addison Wesley). 2000.

[W3C97] Extensible Markup Language (XML). W3C.

[W3C98a] Cascading Style Sheets, level 2 CSS2 Specification. W3C.

[W3C98b] VML - the Vector Markup Language. W3C.

[W3C99] XSL Transformations (XSLT) Version 1.0. W3C.

[W3C01] Scalable Vector Graphics (SVG) Specification 1.0. W3C.

[W3DC01] Extensible 3D (X3D) Graphics Working Group. Web 3D Consortium. 2001