technical demonstration document.pds17.egloos.com/pds/201002/22/02/technical... · 2010-02-21 · 2...
TRANSCRIPT
1
TechnicaldemonstrationDocument.
JaeHyukKwak
Thisdocumentistoshowmytechnicalfluency.IhavedescribedfiveprojectsthatIhaveimplementedinlasttwoyears.Allsourcecodesareavailabletothepublic,sothatanybodycanseemycodingstyleandprogrammingfluency.
1. Billiardgame
2. Myvideotracer
3. Raytracing
4. Airflightwebpage.
5. Courseworkvalidationsystem.
Summary
Project DemonstratingTechniques
Billiardgame PhysX,Collada,DirectX9,HLSL,OpenAL,C++
MyVideoTracer OpenCV,GoogleTest,GUI,C++
RayTracing JOGL,OpenGL,GLSL,Java
Airflightwebpage SpringFramework,Hibernate,HyperSonic,Ant,Axis2,GoogleMap2,Tomcat,JavaScript,EJB
Courseworkvalidation
AJAX,Dojo,JavaScript,FireBug
Note:ThisdocumentdoesNOTincludeanycompanyprojectsduetoNDA.Itdescribesonlymypersonalprojects.
2
BilliardgameThisprojectistoshowmytechnicalfluencyofseveralgameprogrammingskills.ThisdocumentwillexplainhowIhavedesignedthebilliardgameandwhattechniquesIhaveused.
Avideodemonstrationisavailableonmyblog:http://wrice.blogspot.com/2009/09/billiard‐game.html
Usedtechniquesa. PhysX
b. Collada
c. DirectX9
d. HLSL
e. OpenAL
f. MicroSoftC++/CLIUnittestingtool
g. C++std::tr1library
Screenshots
3
4
ContentsPipelineContentspipelineispipelinethatgamecontentspassthrough.Underateamdevelopmentenvironment,severaldifferentteamsneedtocooperate.Forexample,onegamemodelcontentwillbegeneratedbyadesignerthenitwillbepassedtoaprogrammerandtheprogrammerwillloadthedatatoshowvisualresultongameapplicationandfinallythegameapplicationwiththegamemodelcontentwillbeshowntogameleveldesigner.Theprocesscanbeconsideredasapipelineprocess.
Therefore,underateamdevelopmentenvironment,itisimportanttobuildagameapplicationtoallowintegrateteamactivity.Colladahasemphasizedonthecontentspipeline,butIfoundthatitdoesn'tfittoDirectXgamedevelopmentprocess,sothatIhavemadeafewmodification.Thisprojectistoshowhowtointegratesuchteamenvironment.
Asthediagramaboveshows,agamedevelopmentteamcanplayeachdifferentrole.Intheprocess,eachroleneedstohavewaystocommunicate.Ihaveadoptedthreestandardways:Colladaformodeldata,PhysXforphysicsgeometry,andEffectFrameworkforshaderprograms.
5
ModeldataIhavechosentouseColladaXMLstandardformodeldata.ColladaiswelldocumentedgameindustrystandardXMLformat.Therearealreadywellimplementedplug‐insforcertainDCCssuchas3DSMaxandMaya.
NotethatcurrentlyIhaven’tseenanyColladaimplementationforDirectXinC++.MostofthemareimplementedbasedonOpenGLorXNA.
PhysicsIhavechosennVidia’sPhysXformyimplementation,becauseithasbeenbroadlyusedforcommercialgames.PhysXoffers3DSMaxandMayaplug‐ins.Itgeneratessufficientdataforphysicgeometryinformation.Thusinaactualteamenvironmentprogrammersdoesn’tneedtosynchronizethegapbetweenphysicsgeometryandvisualgeometry.
Vertex/PixelShadersTheprojectheavilyreliesonEffectframework.Oneofthereasonsisthatthereareshaderprogrammingtoolsforeffectframework.Oneofthem,NVidia’sFXComposer,didn’tworkonmyhardwaresothatIhaveusedRenderMonkeyandexportedmyshaderprogramsasEffectfile(*.fx).
Theeffectfilesareusedforthegameapplication.Thiseffectfilecanalsobeimportedonto3DSMax.
GeneralStructureAsmanygameenginessupportsmulti‐platforms,thedesignofmyprogramalsotakescareofplatformindependencybyseparatinginterfacesfromimplementation.Althoughtheconceptofmoderngameenginehasbeenenlargedalot,mydesignapproachcanbeconsideredasasmallgameengine.Theinterfacesarealsocategorizedbythreedifferentabstractlevels:Abstractenginelevel,OSdependentlevel,andGraphicsAPIdependentlevel.
6
ThearchitecturecanhidespecificplatformorgraphicsAPIsfromgameapplicationdevelopersaslongasthegameapplicationusesonlyabstractengineinterfaces.Theactualgameapplicationwilluseonly“Abstractengine”part,thenitissupposedtoberunningonotherplatformsandothergraphicsAPI.
Sincethisprojectistodemonstratemytechnicalfluency,Iwishedtoimplementforeverycomponents.However,timewaslimitedandIhadtoendupwithimplementingDirectX9partonly,sothatIhavefinished“DirectX9”,“Windows”,“Abstractengine”partsandonebilliardgameapplication.
ShaderProgrammingThisprojectisalsointendedtoshowmyshaderprogrammingskill.Unfortunatelymyhardwarehadacertainlimittousecomplexshaderprograms,sothatIhaveimplementedonlythreeshadereffects.
a. Phongtexturedshader.
b. Shadowmapshader.
c. Depthcullingshader.
Eachballsinthebilliardgamehasitsownphongtexturedshader.Theyareprojectedontoshadowmapfromtheperspectiveofalight.Thentheshadowmapisusedtodrawshadowsonthepooltable.Inadditiondepthcullingshaderisusedtocullgeometriesbeforeactualcolorsaredecided.Itisusedtodraweveryobjectfromthecameraperspectiveontodepthbufferandthedepthbufferisreusedtocullactualpixels.
7
SourcecodeThesourcecodeisonGoogleCode,sothatanybodycanaccesstoit.
http://code.google.com/p/mybilliard01/
RequirementsThesesoftwaremustbeinstalledtoruntheprogramcurrectly.
1. PhysX:http://developer.nvidia.com/object/physx_downloads.html
2. OpenAL:http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx
3. DirectX9c:http://www.microsoft.com/downloads/details.aspx?FamilyID=2DA43D38‐DB71‐4C1B‐BC6A‐9B6652CD92A3&displaylang=en
4. VisualStudio2008FeaturePackforTR1library.
8
MyVideoTracerThisprojectistogenerate3Dmodelingdatafrom2Dmovieclipfiles.
Oneofgameconsole,Wii,hasbecamepopularbytheinnovativeinputinterface.AndveryrecentlyMicrosofthasdevelopedNatalproject.TheybotharetheresultofComputerVisiontechnology.Itisnothardtoimaginethatthedemandforcomputervisionprogrammingwillincreasesoon.Ihaveimplementedtoshowmytechnicalfluencyforcomputervision.
InSiggraph2007oneofpapersintroducedanovelsoftware,VideoTracer,generating3Dmodeldatafroma2Dmovieclipwithsmallamountofmanualtask.However,thesourcecodeandevenbinarycodesnotopentothepublic.Thisproject,MyVideoTracer,isonethathasthesimilarfunctionalityandopentothepublic.Ihaveimplementedthisprojectformytermprojectincomputervisionclass.
Avideodemonstrationisavailableonmyblog:http://wrice.blogspot.com/2009/05/result‐of‐my‐term‐project.html
Usingtechnologiesa. OpenCV
b. Googletest
c. WWWDOMModel1,2,3forGUIimplementation
d. C++inMac
Screenshots
9
GUIimplementationAbigportionofthisprojectisactuallyaboutgraphicuserinterface.Thereisnoplatformindependentandflexibleenoughtobeusedforgamesoftware.Itisbecausegamesoftwarerequiredtochangelookandfeeldependingonwhatthegameis.Forexample,oneofthefamousGUIdevelopmenttoolkit,QT,doesn’tofferanymeanstochangethecolororbehaviorofeachbutton.JavaSwingalsooffersplatformindependentwayofgraphicuserinterfaceprogrammingway.However,thelookandfeelonWindowsisdifferentfromthatofMacorLinux.
Therefore,gamedeveloperswhofacetoimplementGUIpartontheirowngamesufferslackoflibrariesallthetime.IhavedesignedandimplementedaGUIlibrarytobeflexibleenoughforgamedevelopment,althoughmostofimplementationsarestillnotdone.
ThegeneralarchitectureoftheGUIpartismainlyfromWWWDOMmodelver.1.0.IfoundthatmanyofprogrammersarealreadyveryfamiliartoprogramminguserinterfaceonwebbrowserandthedesignofDOMisnotlimitedtowebbrowser.
ResultTheresultofthisprojectwasverysuccessful.Thereisamovieclipfordemonstrationonmyblog:http://wrice.blogspot.com/2009/05/result‐of‐my‐term‐project.html
Unfortunatelytheprojectisclosedwithoutclearlyfinishingupthelastpart,sothatonewhogetthesourcecodebySVNwillfindthatsomeofunittestingcodesareusedasmainprogram.ItwasbecauseIwasunderstricttimeconstrainandhavefinishedonlyforpresentationperpose.
SourcecodeSourcecodeisavailableonGoogleCode:
http://code.google.com/p/mysimplevideotrace
DocumentsIhavemadeaformaldocumentasmyfinalreport:
10
http://mysimplevideotrace.googlecode.com/files/TermReport.doc
Ihaveuploadedmypresentationfile:http://mysimplevideotrace.googlecode.com/files/Presentation1.ppt
RequirementsInordertocorrectlycompileoneneedtoinstallGoogleTestandOpenCVlibrary.
ThereisnoplatformdependentcodebutIhaven’ttestedtheprogramonWindowsorLinux.IwillrunonMacasitdidonmycomputer.
11
RayTracingThisprojectistoshowmytechnicalfluencyforcomputergraphics.TheprojectdrawsthreespheresonascreenanduserscanadjustpositionandcolorswithSwinginterface.TheprojectisimplementedinJavausingJOGL,GLSLandSwing.
Anotherexplanationcanbefoundonmyblog:http://wrice.blogspot.com/2008/05/raytracing‐program.html
Usingtechnologiesa. JOGL(OpenGLforJava)
b. GLSL(shaderlanguageforOpenGL)
c. Swing(GUIlibraryforJava)
Screenshot
Thisprogramwillrunveryslow.Itisbecausemostofcalculationsaredoneonsystemmemory.Inotherwords,althoughitusesgraphichardwareprocessunits,manyofcalculationsaredonebyCPUstill.
Notethatthisprojectimplementedreflectionandrefractionbytransparency.
12
Documentationhttp://pds8.egloos.com/pds/200805/03/02/graphics.tgz
Sourcecodehttp://pds9.egloos.com/pds/200805/03/02/jayRayTraceSrc.tgz
RequirementsThisprogramrequiresJava3Danditshouldbeinstalledmanually:http://java.sun.com/javase/technologies/desktop/java3d
13
FlightbookingsystemThisprojectwasoneofmywebprogrammingprojects.Itwastodevelopaflightbookingwebsitewithsomeofnewtechnologies.Anotherexplanationcanbefoundonmyblog:http://wrice.blogspot.com/2008/12/flight‐searching‐system‐on‐j2ee.html
ItwasfirsttimeformetouseSpringFramework,butIfoundthattheframeworkwasverypracticalanditsupportsunittestingverymuch.IlikedtheSpringFrameworkandIbelieveitsavedmytimeverymuch.
Usingtechnologies:a. SpringFramework
b. HibernatepersistenceframeworkwithHyperSonic
c. Log4j
d. Antbuildingsystem
e. Axis2
f. GoogleMap2
g. TomcatandEJB
Screenshots
14
Sourcecode:ThesourcecodeisavailableonGoogleCode:http://code.google.com/p/weneedourownproject
RequirementsTheprojectiswrittenforTomcatserver.
15
Courseworkvalidationsystem.ThiswasoneofmyprojectsfromUserInterfaceclass.Theprofessoraskedustodevelopanwebpagethatcanvalidationwhetherornottheclassthatstudentsselectedmeetstherequirementsfortheircoursework.Forinstance,onemaynotbeabletograduatewithouttakingmandatorycourses.Theprofessorwantedustomakethewebpageeasyandtoreducemistakesfromusers.
IchosetouseAJAXtoimproveinteractivity.Youcanfindanotherexplnationfrommyblog:http://wrice.blogspot.com/2008/05/ajax‐example.html
Youcanalsousethewebpagedirectlyonhere:http://comedu.korea.ac.kr/new/2003/board/board/project.htm
Usingtechnologies:a. AJAXandDojo
b. Firebug
c. Komodo
Screenshots
NotethatIhaveimplemented“Search”functionwithoutanyserverinteraction.Itwasoneoftheverysuccessfulchallenges.ThebasicideawasfromMacUserInterface.
Duringthisproject,IfoundthatFireBugwasveryconvenientdebuggingtool.AndI
16
alsousedKomodowebpageeditor.
SourcecodeSincethisisjustclientsidejavascriptprogram,everybodycanaccessandreadthesourcecodedirectly.
http://comedu.korea.ac.kr/new/2003/board/board/project.htm
Requirement.UnfortunatelyIfoundthatthisprogramworksonlyonFirefox.ItwasbecausemycomputerwasMacanddidn’thavewaytotestonIEorChrome.