introduction gort is a virtual 3d modeling environment for computer programmers. its main area of...

1
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 FUTURE WORK •Environmental Effects •Lights and Cameras •Multi-Threading •Texture Mapping •Animation WEB SITE http:// 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 THE TEAM Starting from the left: Chang Huang, Thoren McDole, Haipin Cua, and Leon Kania. GORT: GL Object Rendering and Transformation Leon Kania ◦ Haipin Cua ◦ Thoren McDole ◦ Chang Huang with Dr. Sergiu Dascalu and Dr. Fred Harris; Department of Computer Science, UNR +resetDisplayFacetList():bool +getD isplayFacet(outFacet):bool +getD isplayEvent(outE vent):bool +getD raw Event():bool +getO bjectProperties(outpropertyStruct):bool +getO bjectType():char +isLocked():bool +getStub():unsigned int #invertMatrix():bool #transformPoint(outvertex[]:float):bool #transformPointInverse(outvertex[]:float):bool #setIdentityM atrix():bool #norm alizeVector(outvertex[]:float,outm agnitude :float):bool #crossP roduct(in vec1[]:float,in vec2[]:float,outvec3[]:float):bool #objectLocked :bool #redraw Flag :bool #facetD isplayC ursor:unsigned int #currentR esolution[]:unsigned int #type :unsigned int #stub :unsigned int #parent:unsigned int #m atrix[][]:float #center[]:float #rotationVector[]:float #m odifierObjects[] #facetList ReadO nlyO bject +setO bjectLock():bool +setS tub():bool LockO bject(privileged accessorfunctons used by G O R T class only) +rotate(in theta :float,in vector[]:float):bool +translate(in displacem ent[]:float):bool +scale(in factor[]:float):bool +addIntersectingO bject(in stub :unsigned int):bool +addS ubtractingO bject(in stub :unsigned int):bool +addS electedO bject(in stub :unsigned int):bool +setO bjectNam e(in nam e*:char):bool +setO bjectProperties(in propertyStruct):bool #drawO bject():bool #generateN orm als():bool #calculateNormal():bool #param etricD ef(in u :float,in v :float):bool #im plicitD ef(in vertex[]:float):float W riteEnabled #generateN orm als():bool #param etricD ef(in u :float,in v :float):bool #im plicitD ef(in vertex[]:float):float #drawO bject():bool #calculateNorm al():bool Sphere +incrementSelection(outobjectPtr):bool +decrem entSelection(outobjectPtr):bool +reset():bool +createN ew O bject(outobjectType):unsigned int +deleteC urrentO bject(in stub :unsigned int):bool +selectO bject(in stub :unsigned int,outreadO nlyPtr):bool +clearSelectedObjects():bool +displayR eset():bool +displayB egin():bool +displayE nd():bool +getEnvirom nent(outenvStruct):bool +setEnvironm ent(in envStruct):bool +addBitm ap(in im gPtr:unsigned int):bool +deleteBitm ap(in im gPtr):bool +getBitm apList(outim gPtr[],outsize :unsigned int):bool +saveState(in saveO bjectPtr):bool +loadS tate(in loadO bjectPtr):bool +displayNext():<unspecified> -currentO bject:unsigned int -displayC ursor:unsigned int -freeStubs -objectH eap GORT +vertex[]:float +normal[]:float VertexStruct +type :unsigned char +vList FacetStruct +type :unsigned char +param eterBuffer*:unsigned char EventStruct Associated Structs +openFile(in filenam e*:char):bool +new File(in filenam e*:char):bool +closeFile():bool +getNextO bject():bool +getEnvironment():bool +addO bject():bool +addE nvironm ent():bool +getError():int Save/Load InterpreterO bject(G O R T native XM L form at) +XM LtoGL():bool O pen G L TranslatorM odule +XM LToM ax():bool +M axToXM L():bool 3D S tudio M ax TranslatorM odule +XM LToOther():bool +OtherToXM L():bool O therC onversion M odules R aw D ata G O R T N ative to O penG L code G O R T native to other form ats O therderived shapes... O therderived shapes... #generateN orm als():bool #param etricD ef(in u :float,in v :float):bool #im plicitD ef(in vertex[]:float):float #draw O bject():bool #calculateNormal():bool C ylinder #generateN orm als():bool #param etricD ef(in u :float,in v :float):bool #im plicitD ef(in vertex[]:float):float #draw O bject():bool #calculateNormal():bool C one 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

Upload: ezra-gilbert

Post on 17-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

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