OpenGL demo -- First Person Shooter  9 Jul. 04
This demo is the start of a simple First Person Shooter game from Steve Wortham. There are no monsters, zombies, Nazis, or 2D sprites to shoot yet -- just you in a room by yourself with 2 big guns. But I think it is very useful OpenGL demo for beginners. It shows how to implement radiosity to render lightmaps, multitexturing to apply the lightmaps and a particle engine.

- Thanks, Steve Wortham
1,008 KB (VC++ source code and some textures)

Quadrilateral Surface Mesh ( 3D Paving )  29 Mar. 04
NURBS surface quadrilateral mesh
The paving was first introduced for meshing in the Blacker paper "Paving: A New Approach to Automated Quadrilateral Mesh Generation" But it was for two-dimensional surface. The Roger J. Cass's paper, "Generalized 3D Paving: An Automated Quadrilateral Surface Mesh Generation Algorithm", presented the extension of the paving algorithm for quad mesh generation to arbitrary 3D trimmed surfaces.

And this version fixed some bugs in the previous version.

First, load the Surface from IGES file and then click the Hybrid Quad mesh button on the toolbar, set the mesh parameters, then click the OK button and lastly, watch the black cat pacing before the mesh is generated completely.

3,528 KB (Exe, DLL and Some Models, including a body data model)

Delaunay type triangular surface Mesh  31 Oct. 03
Nurbs surface Delaunay Triangulation
For each triangle on a surface, its circumcircle is mapped into the parametric space, and the geometry of the mapped circle in the parametric space is approximated by an ellipse function. The triangulation in the parametric space is created and maintained using the property of empty circumellipse instead of empty circumcircle. Also surface's boundary curvature is used to control surface mesh density distribution if you like, or just fixed size.  

First, load the Surface from iges file and then click the mesh button on the toolbar, set the mesh parameter.

3,801 KB (Exe, DLL and Some Models)

IGES Viewer  5 Sep. 03
This program is designed to load and display zyo (my format) and IGES CAD model.

You can take it as a IGES Viewer.

The B-spline Surface is rendered by my tessellation mesh, no Open GL evaluators (gluNewNurbsRenderer);

The untrimmed surface is meshed by tessellation.
The trimmed plane suface is meshed by Delaunay Triangulation with no minimum angle.
The trimmed curved surface is meshed by tessellation first and then spliting the boundaries' cells.
The background is fade by drawing a quad with different colors' vertexs.
2,693 KB (Exe, DLL and Some Models)

Custom-Shaped OpenGL Window  9 Aug 03
This is a sphere with a texture mapping of earth.

By holding down the left mouse button and moving mouse, You can move the Window.

By holding down the right mouse button and moving mouse, You can rotate the earth.

Press Esc to close the window.

The red point on the earth is my location. :)
547 KB (Exe and Source for VC++6.0)

Delaunay Trianglation Mesh Generation 11 Feb 03
By far the most popular of the triangle meshing techniques are those utilizing the Delaunay (Boris, N. Delaunay, (1934) "Sur la Sphere" Vide. Izvestia Akademia Nauk SSSR, VII Seria, Otdelenie Matematicheskii i Estestvennyka Nauk Vol 7 pp.793-800) criterion. The Delaunay criterion, sometimes called the "empty sphere" property simply stated, says that any node must not be contained within the circumsphere of any tetrahedra within the mesh.
The Delaunay criterion in itself, is not an algorithm for generating a mesh. It merely provides the criteria for which to connect a set of existing points in space. As such it is necessary to provide a method for generating node locations within the geometry. A typical approach is to first mesh the boundary of the geometry to provide an initial set of nodes. The boundary nodes are then triangulated according to the Delaunay criterion. Nodes are then inserted incrementally into the existing mesh, redefining the triangles locally as each new node is inserted to maintain the Delaunay criterion.
It is one 2D Delaunay algorithm with boundary nodes.
47 KB (Exe and Source, DLL for VC++6.0)

Convex Hull of 2D Point Set 3 Dec 02
Very simple example of how to compute the convex hull of any 2D point set or polygon with no restrictions. the general 2D hull algorithms first sort the vertex point set in O(n log n) time, and then use a stack to compute the hull in O(n) time. And this example uses Andrew's Monotone Chain Algorithm.
37 KB (EXE and Source for VC++6.0)

Reflection and shadow 3 Aug 02
Very simple example of how to achieve reflections on a flat surface using OpenGL blending. The example has a mode using OpenGL stenciling to avoid drawing the reflection not on the top of the floor. Initially, stenciling is not used so if you look (by holding down the left mouse button and moving) at the dinosaur from "below" the floor, you'll see a bogus dinosaur and appreciate how the basic technique works. Enable stenciling with the popup menu and the bogus dinosaur goes away! Also, notice that OpenGL lighting works correctly with reflections.

(Program that were contributed to the GLUT distribution from

Transparent 3D Demo 30 Jul 02

- 按下左键,移动鼠标为XY方向的Rotate
- 按下左键,X方向移动鼠标为Scale
- 空格键为左半边脸的Shading模式 polygon normals for flat shading 和 averaged vertex normals for smooth shading



Site Up 24 Jul 02

Today, I've started Ziyoo homepage, which is about programming in Computer graphics. Mesh, OpenGL and Surface with C++.  I hope you find what you're looking for or something else that interests you.

 24 Jul. 2002

 Mutual Encouragement with You!

Copyright (C) 2006-2024 南京斯沃软件技术有限公司