Hello,
I want to plot surface graph, the graph is XYZ points.
I tried using LINE_STRIP but the graph looks wiredframe, how can i make it look more solid?

Posted Thursday, 7 August, 2008 - 09:56 by the Fiddler

The basic primitive in 3d graphics is the triangle, so you'll need to specify TRIANGLES as the drawing mode. Check this page for a great explanation of how different primitives work.

I tried TRIANGLES, LINES, QUADS, it gives me the same result with slight difference.
I saw screenshots of very beautyful surface plottings, how do they that?

Posted Thursday, 7 August, 2008 - 11:32 by objarni

1. Imagine a x,y grid of points.
2. Now imagine plotting points at the coordinates given by (x, y, z) where z = f(x,y)
3. Now you have the "structure" of the graph - it's vertices.
4. You want to connect these (x,y,z) points together using triangles.
5. Think of one grid cell, having four (x,y) corners making it a square:
a b
c d
6. You could draw this square using two triangles adb and acd.
7. The vertice coordinates a, b, c, d can be computed using your four corners (x,y) and the function z=f(x,y)
8. Draw the two triangles using GL_TRIANGLES primitives
9. Repeat for each grid cell!

You may want to color different corners of the triangles using for example the z value for the corner. Adding lighting and normals at each vertice using glNormal would further enhance the visual appeal of the graph.

Posted Thursday, 7 August, 2008 - 12:04 by the Fiddler

First, try creating the surface without any textures/lighting etc. Once that is working correctly start adding features until you manage to achieve the appearance you'd like (both textures and lighting follow the same basic principles as described by objarni).

Beziers are a little more complicated - they are a mathematical representation of the surface, so you first have to "evaluate" the points of the surface (at a desired level of detail) and then connect these points to form triangles. In other words, you'll need to build upon the part you are working on right now. :)

Start from the basics and work up - this is quite a fascinating topic!

## Comments

12next ›last »## Re: 3D Plot Help

The basic primitive in 3d graphics is the triangle, so you'll need to specify TRIANGLES as the drawing mode. Check this page for a great explanation of how different primitives work.

## Re: 3D Plot Help

I tried TRIANGLES, LINES, QUADS, it gives me the same result with slight difference.

I saw screenshots of very beautyful surface plottings, how do they that?

## Re: 3D Plot Help

1. Imagine a x,y grid of points.

2. Now imagine plotting points at the coordinates given by (x, y, z) where z = f(x,y)

3. Now you have the "structure" of the graph - it's vertices.

4. You want to connect these (x,y,z) points together using triangles.

5. Think of one grid cell, having four (x,y) corners making it a square:

a b

c d

6. You could draw this square using two triangles adb and acd.

7. The vertice coordinates a, b, c, d can be computed using your four corners (x,y) and the function z=f(x,y)

8. Draw the two triangles using GL_TRIANGLES primitives

9. Repeat for each grid cell!

You may want to color different corners of the triangles using for example the z value for the corner. Adding lighting and normals at each vertice using glNormal would further enhance the visual appeal of the graph.

Good luck

## Re: 3D Plot Help

Thank You Objarni,

I'll try that!

Should I use any textures?

I also read about Bezier surfaces, would it be better to use it ?

## Re: 3D Plot Help

First, try creating the surface without any textures/lighting etc. Once that is working correctly start adding features until you manage to achieve the appearance you'd like (both textures and lighting follow the same basic principles as described by objarni).

Beziers are a little more complicated - they are a mathematical representation of the surface, so you first have to "evaluate" the points of the surface (at a desired level of detail) and then connect these points to form triangles. In other words, you'll need to build upon the part you are working on right now. :)

Start from the basics and work up - this is quite a fascinating topic!

## Re: 3D Plot Help

Thank You!

## Re: 3D Plot Help

Thank you the Fiddler and Objarni for your help, I've managed to plot solid 3D surface, with nice lightings.

Thank you!

## Re: 3D Plot Help

You have a screenshot for us ;) ?

## Re: 3D Plot Help

With pleasure :)

## Re: 3D Plot Help

Cool!

12next ›last »