==============================================================
GLView version 1.1  15.06.95
3D OpenGL Viewer for Windows/NT
Copyright (C) 1994-1995 Holger Grahn
All Rights Reserved
==============================================================

README.TXT

Evaluation and Registration
===========================
This is not free software. You are hereby licensed to use this software for evaluation purposes without
charge for a period of 14 days. If you use this software after the 14 day evaluation period a registration
fee of $50 is required. See license.txt and order.txt for more information.

System Requirements
===================
	- Microsoft WINDOWS NT 3.5,
	- OpenGL compatible Display.

Startup
=======
	glview.exe
Starts glview with a default OpenGL pixel format mode (Double-buffer, RGB)

	glview.exe /x
Starts GLView without GL-initialization, first action should be to setup Pixelformat using menu Options->
Pixel Format -> Set.

GLView automatically use OpenGL acellerator hardware like graphics boards equipped with a 3DLabs
glint chip.

Fileformats
===========
GLView supports its own fileformat with extension 3dv,
geo format files (like supplied with Intel 3dr) are also supported.
Single rgb or dib image files are read in as a single textured, rotatable polygon.
The raw files, containing a triangle per line can also be imported, and are automatically converted to a
smooth object.
Preliminiary support for Wavefront obj files has been integrated (but not fully complete)
Texture files can be a 24 Bit rgb or dib image.
Single objects can be written back to RAW or POV triangle formats.


Known Problems
==============
For some data files Backface culling must be disabled via Rendering->Options->backface cull.
If the picture still is very dark (e.g. with RAW or GEO files) flip the computed normals
of the object using Rendering->Options->flip normals

Not all custom texture parameter functions available in the dialog Texture->Parameters are fully
implemented.
Sometimes in wireframe render mode especially if non double-buffering modes, the system crash.
The Help file does not document all functionality.
This version supports only one object per 3dv file.
On the first run on a 256 color driver, the colors are wrong, its ok the second time.

Files
=====
GLVIEW.EXE		executable
GLVIEW.HLP		help file
readme.txt		readme file
order.txt		Order form
licencse.txt	License agreement
whatsnew.txt	History
file_id.diz	description
*.3dv		3D-Data sets
*.geo		3D Data sets
*.rgb
*.dib		texture image files, can also be used as "3d" data-set


GLView is availabe as
=====================
- Shareware executable version 
- Redistribution executable versions for hardware vendors
- Sourcecode license version
- its planned to release GLView classes as a class library
  supporting a highlevel MFC GLView View class and lowerlevel 
  graphical object, attributes and operation classes
  for integration in other applications


Quick Tour
==========
start the program
drag around with the mouse (this is camera->rotate mode)
try camera->zoom mode and camera->roll mode
camera->reset will bring back the default view

try render menu:
render->wireframe
render->flat
render->gouraud
..
now once again
render>wireframe
& render->lighted	you get a lighted wireframe display

try material menu
material->load		choose a predefined material from the list box

material ->edit
click with the mouse in the diffuse entry field,
now press EDIT to edit the diffuse color using the Windows color dialog box
choose a color , Exit & Apply

material->Load texture
choose a texture e.g. brick.rgb

using material->Texture options you can change OpenGL texture mapping parameters
try to enter scale numbers like 3 3 3 in the scale edit field

Try the filtering options only if you have time or a hardware acellerator

Switch off texture mapping using Render->textured

Say Tools->deform->sphere
enable the check boxes for enable and drag
drag around with the mouse, the model should deform to a imaginery sphere, (which is unfortunable
currently invisible). If you do no see an effect, change the radius edit field to higher numbers (negative
numbers are
also working).

3DV-Fileformat
==============
3dv files are containing one object
The 3 object types of main interest are 

	- Shell 	a polyhedral object
	- ShellIndexed a polyhedral object with more level of inderection and group information
	- Mesh		a quadrilateral Grid surface

Alls lists and objects are enclosed with { and }.

The basic information in each object is the vertex field,
simply a list of 3d points.
Optional fields with similar structure are
	vertex_parameters : u,v,w  texture coordinates (parameters)
	vertex_normals	:  a normal for each vertex, used for smooth shading
	vertex_colors	: a r,g,b color value for each vertex
		
for the Shell and ShellIndexed primitives the faces field describes the
list of faces (or the individual polygons).
the format for a face is

0:	vertexcnt of face
1..n:	vertex number, (starting with 0)

All face are now concatenated together.
.E.g a tringle face using vertex 0,1,2 would be stored as
		3 0 1 2
.

A face with vertex cnt of 2 describes a single edge,
A face with vertex cnt 0 or 1 is ignored,
but all vertics still can be made visible by using the "Vertices" Renderstyle.

 For faces the optional fields
	face_normal	: a normal for each face, used for flat shading
	face_color	: a r,g,b color value for each face 
			(vertex colors have precedence if enabled)



Example of cube, with a color assigned to each face
; 3DV Version 1.0 Object
 shell {
    vertex {( -0.5 -0.5 -0.5)( 0.5 -0.5 -0.5) ( -0.5 0.5 -0.5) ( 0.5 0.5 -0.5) 
   ( -0.5 -0.5 0.5) ( 0.5 -0.5 0.5) ( -0.5 0.5 0.5) ( 0.5 0.5 0.5)}
    faces {
    4 0 2 3 1	; first face
    4 1 3 7 5	; second face ...
    4 5 7 6 4
    4 6 2 0 4
    4 2 6 7 3
    4 0 1 5 4}
    face_colors {( 1 1 0)( 0.5 1 0.4) ( 0 1 1) ( 1 0.647059 0) 
   ( 0 0 0) ( 0 0 1)}}


The vertex indices in the facelist of a Shell are indexing directly into
the vertex* arrays.

For the ShellIndex object these facelist indices are refering into the
verts field.
The verts are a array of logical vertices.
The structure of a vert is
	index into vertex table
	index into vertex normal table
	index into vertex color table
	index into vertex parameter table

This level of indirection allows to have at a common xyz location verts with
different normal/parameter values.


A Mesh needs no explicit face infomation, because all face are forming a grid.

Example :

; 3DV Version 1.0 Object

 mesh {
    rows  10
    cols  20
   vertex { (x y z) ... 10*20 times }
}   

The corresponding C like declation would be
struct Point {
	float x,y,z;
}
int rows=10;
iint cols=20;
Point mesh[rows*cols];




===========================================================
Holger Grahn		Email :   100575.266@compuserve.com
Motzstr. 65
D 10777 Berlin
Germany
============================================================
