technical demonstration document.pds17.egloos.com/pds/201002/22/02/technical... · 2010-02-21 · 2...

16
1 Technical demonstration Document. Jae Hyuk Kwak This document is to show my technical fluency. I have described five projects that I have implemented in last two years. All source codes are available to the public, so that anybody can see my coding style and programming fluency. 1. Billiard game 2. My video tracer 3. Ray tracing 4. Air flight web page. 5. Course work validation system. Summary Project Demonstrating Techniques Billiard game PhysX, Collada, DirectX9, HLSL, OpenAL, C++ My Video Tracer OpenCV, Google Test, GUI, C++ Ray Tracing JOGL, OpenGL, GLSL, Java Air flight web page SpringFramework, Hibernate, HyperSonic, Ant, Axis2, Google Map 2, Tomcat, JavaScript, EJB Course work validation AJAX, Dojo, JavaScript, FireBug Note: This document does NOT include any company projects due to NDA. It describes only my personal projects.

Upload: others

Post on 18-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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.

Page 2: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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

Page 3: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

3

Page 4: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

4

ContentsPipelineContentspipelineispipelinethatgamecontentspassthrough.Underateamdevelopmentenvironment,severaldifferentteamsneedtocooperate.Forexample,onegamemodelcontentwillbegeneratedbyadesignerthenitwillbepassedtoaprogrammerandtheprogrammerwillloadthedatatoshowvisualresultongameapplicationandfinallythegameapplicationwiththegamemodelcontentwillbeshowntogameleveldesigner.Theprocesscanbeconsideredasapipelineprocess.

Therefore,underateamdevelopmentenvironment,itisimportanttobuildagameapplicationtoallowintegrateteamactivity.Colladahasemphasizedonthecontentspipeline,butIfoundthatitdoesn'tfittoDirectXgamedevelopmentprocess,sothatIhavemadeafewmodification.Thisprojectistoshowhowtointegratesuchteamenvironment.

Asthediagramaboveshows,agamedevelopmentteamcanplayeachdifferentrole.Intheprocess,eachroleneedstohavewaystocommunicate.Ihaveadoptedthreestandardways:Colladaformodeldata,PhysXforphysicsgeometry,andEffectFrameworkforshaderprograms.

Page 5: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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.

Page 6: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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.

Page 7: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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.

Page 8: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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

Page 9: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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:

Page 10: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

10

http://mysimplevideotrace.googlecode.com/files/TermReport.doc

Ihaveuploadedmypresentationfile:http://mysimplevideotrace.googlecode.com/files/Presentation1.ppt

RequirementsInordertocorrectlycompileoneneedtoinstallGoogleTestandOpenCVlibrary.

ThereisnoplatformdependentcodebutIhaven’ttestedtheprogramonWindowsorLinux.IwillrunonMacasitdidonmycomputer.

Page 11: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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.

Page 12: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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

Page 13: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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

Page 14: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

14

Sourcecode:ThesourcecodeisavailableonGoogleCode:http://code.google.com/p/weneedourownproject

RequirementsTheprojectiswrittenforTomcatserver.

Page 15: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

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

Page 16: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

16

alsousedKomodowebpageeditor.

SourcecodeSincethisisjustclientsidejavascriptprogram,everybodycanaccessandreadthesourcecodedirectly.

http://comedu.korea.ac.kr/new/2003/board/board/project.htm

Requirement.UnfortunatelyIfoundthatthisprogramworksonlyonFirefox.ItwasbecausemycomputerwasMacanddidn’thavewaytotestonIEorChrome.