introduction gort is a virtual 3d modeling environment for computer programmers. its main area of...
TRANSCRIPT
INTRODUCTION
GORT is a virtual 3D modeling environment for computer programmers. Its main area of focus is to aid in the education of programmers learning the OpenGL API by allowing them to visually connect the abstract aspects of the API with their visual counterparts.
GORT has features that are set to readily assist programmers in creating basic to complex models. These models, utilizing GORT’s ability to output code, can be used to either build more complex models or sceneries, or can be included as a part of another application. This capability provides a means for a programmer to quickly and easily develop applications capable of modeling complex physical systems. It also allows GORT to be useful in several fields such as Chemistry, Physics, Engineering, Robotics, Animation, and Game Development.
FUTURE WORK•Environmental Effects
•Lights and Cameras
•Multi-Threading
•Texture Mapping
•Animation
WEB SITEhttp://www.projectgort.org
ABSTRACT
GORT is a software package that will enable programmers to virtually model objects and render the scenes created to source code. The software includes a comprehensive toolkit to allow the creation of all manner of objects through the use of a variety of powerful features. Users will have the ability to modify objects on varying levels of complexity, as well as the ability to customize materials and textures of objects. GORT also provides powerful methods for the creation of complex objects by applying various operations to simple primitives. These operations would include the ability to take the intersections of objects, to add objects together, and to subtract objects from one another.
CONCLUSION
While the development of GORT is just beginning, numerous proofs of concept codes combined with all that has been already defined in the way of structure make us confident that more complete working implementations are not far away. The use of software design techniques has been an invaluable tool in defining the necessary structure at an appropriate level of detail. This specific definition of the software before the creation of code has so far greatly simplified the actual implementation efforts in that many things that could have caused problems were already carefully considered and dealt with. A key concept behind GORT is its ability to be extensible. With this in mind we have specified the package in such a manner that any developer should be able to quickly and easily add functionality to suit his or her own needs. Future work envisaged by GORT’s developers include the ability to animate scenes, the ability to define scene graphs, and the implementation of more complex rendering techniques such as ray tracing and high speed volumetric rendering.
THE TEAM
Starting from the left: Chang Huang, Thoren McDole, Haipin Cua, and Leon Kania.
GORT: GL Object Rendering and TransformationLeon Kania ◦ Haipin Cua ◦ Thoren McDole ◦ Chang Huang
with Dr. Sergiu Dascalu and Dr. Fred Harris; Department of Computer Science, UNR
+resetDisplayFacetList() : bool+getDisplayFacet(out Facet) : bool+getDisplayEvent(out Event) : bool+getDrawEvent() : bool+getObjectProperties(out propertyStruct) : bool+getObjectType() : char+isLocked() : bool+getStub() : unsigned int#invertMatrix() : bool#transformPoint(out vertex[] : float) : bool#transformPointInverse(out vertex[] : float) : bool#setIdentityMatrix() : bool#normalizeVector(out vertex[] : float, out magnitude : float) : bool#crossProduct(in vec1[] : float, in vec2[] : float, out vec3[] : float) : bool
#objectLocked : bool#redrawFlag : bool#facetDisplayCursor : unsigned int#currentResolution[] : unsigned int#type : unsigned int#stub : unsigned int#parent : unsigned int#matrix[][] : float#center[] : float#rotationVector[] : float#modifierObjects[]#facetList
ReadOnlyObject
+setObjectLock() : bool+setStub() : bool
LockObject (privileged accessor functonsused by GORT class only)
+rotate(in theta : float, in vector[] : float) : bool+translate(in displacement[] : float) : bool+scale(in factor[] : float) : bool+addIntersectingObject(in stub : unsigned int) : bool+addSubtractingObject(in stub : unsigned int) : bool+addSelectedObject(in stub : unsigned int) : bool+setObjectName(in name* : char) : bool+setObjectProperties(in propertyStruct) : bool#drawObject() : bool#generateNormals() : bool#calculateNormal() : bool#parametricDef(in u : float, in v : float) : bool#implicitDef(in vertex[] : float) : float
WriteEnabled
#generateNormals() : bool#parametricDef(in u : float, in v : float) : bool#implicitDef(in vertex[] : float) : float#drawObject() : bool#calculateNormal() : bool
Sphere
+incrementSelection(out objectPtr) : bool+decrementSelection(out objectPtr) : bool+reset() : bool+createNewObject(out objectType) : unsigned int+deleteCurrentObject(in stub : unsigned int) : bool+selectObject(in stub : unsigned int, out readOnlyPtr) : bool+clearSelectedObjects() : bool+displayReset() : bool+displayBegin() : bool+displayEnd() : bool+getEnviromnent(out envStruct) : bool+setEnvironment(in envStruct) : bool+addBitmap(in imgPtr : unsigned int) : bool+deleteBitmap(in imgPtr) : bool+getBitmapList(out imgPtr[], out size : unsigned int) : bool+saveState(in saveObjectPtr) : bool+loadState(in loadObjectPtr) : bool+displayNext() : <unspecified>
-currentObject : unsigned int-displayCursor : unsigned int-freeStubs-objectHeap
GORT
+vertex[] : float+normal[] : float
VertexStruct
+type : unsigned char+vList
FacetStruct
+type : unsigned char+parameterBuffer * : unsigned char
EventStruct
Associated Structs
+openFile(in filename* : char) : bool+newFile(in filename* : char) : bool+closeFile() : bool+getNextObject() : bool+getEnvironment() : bool+addObject() : bool+addEnvironment() : bool+getError() : int
Save/Load Interpreter Object (GORT nativeXML format) +XMLtoGL() : bool
Open GL Translator Module
+XMLToMax() : bool+MaxToXML() : bool
3D Studio Max Translator Module
+XMLToOther() : bool+OtherToXML() : bool
Other Conversion Modules
Raw Data
GORT Native toOpenGL code
GORT native to otherformats
Other derived shapes... Other derived shapes...
#generateNormals() : bool#parametricDef(in u : float, in v : float) : bool#implicitDef(in vertex[] : float) : float#drawObject() : bool#calculateNormal() : bool
Cylinder
#generateNormals() : bool#parametricDef(in u : float, in v : float) : bool#implicitDef(in vertex[] : float) : float#drawObject() : bool#calculateNormal() : bool
Cone
CLASS DIAGRAM
GRAPHICAL USER INTERFACE
Figure 3
MATERIAL EDITOR
Figure 1: The class diagram shows the core design of GORT
Figure 2: A screen shot with captions detailing various aspects of the user interface
Figure 3: The material editor is the interface that enable users to modify the appearance of objects by assigning various color properties and textures to an object
Figure 1
Figure 2