[ martintyler @ 02.02.2011. 14:53 ] @
Pozdrav svima.

Ja sam pocetnik koji uci i hocu da se upoznam sa drugim ljudima zarad medjusobnog napredovanja.

Malo biografije za pocetak, da bi ste znali zasto ovo pisem:

Zovem se Martin i proslo je skoro dve godine od kako sam zavrsio skolu (VPS), gde sam shvatio da volim programiranje.
Tamo sam poceo sa pseudo jezikom da pisem jednostavne algoritme za pocetnike. I posle skole sam hteo da pravim dalje stvari.
Prosao sam knjige za Pascal, Javu, C, C++, nije bilo bas zabavno, ali nikako nisam mogao da pravim nesto ozbiljno, uvek mi je trebalo nesto za GUI itd.
Probao sam jos dosta stvari usput, i naisao na DirectX i OpenGL i momentalno sam se fascinirao iako nisam imao pojma sta je onaj kod radio.
Citao sam dosta o tome, forumi, blogovi i sve u svemu shvatio da mi treba moj omiljeni neprijatelj matematika za bilo kakvo ozbiljnije programiranje.
Navika iz skole da ucim stvari koje ne volim se isplatila, prosao sam neke knjige za osnovnu algebru, triginometriju i geometriju i sad ucim linearnu algebru.
To je komplikovano. A tek sve to ukombinovati sa DX-om je druga prica. Zabavna prica.
E da, a Win32 je jako simpatican. (I knjiga iz koje ga ja ucim.)

Voleo bih da skupim grupu ljudi koji zele da napreduju sa grafickim programiranjem. To ukljucuje generalno programiranje, COM, matematiku, i graficke API-je, data structures itd.
Zamislio sam da se povremeno nalazimo negde (recimo, imam prazan lokal (bez stolica)) i resavamo probleme tog tipa (ako imate stolice), i da medjusobno pomazemo jedni drugima oko nejasnoca.
Malo je naporno sedeti u kuci i pokusavati shvatiti sve ovo sam. Radim to 2.5 godine, uz obaveze koje imam. Licno mislim da bi bilo najbolje da nekoliko nas radi zajedno, gde bi bilo manje sanse za izgovore, “matematika je teska”, “vidi koliko ima da se uci”, itd. Znaci svako bi ljustio za sebe, ali bi svi bili tu ako se neko zaglavi negde; je jedna varijanta.
Danas se izgleda sve radi u organizovanim grupama, pa sto se ne bi i ucilo u grupama?

Jedan deo bi bio savladavanje teskih naprednih knjiga kao Computer Graphics - Principles and Practice, koju posedujem i zbog koje ucim linearnu algebru. Knjiga sadrzi dosta low-level definicija algoritama, I preporucena je u nekoliko knjiga za DX ili OpenGL. Takodje je matematicki mnogo zahtevna. Mnogo.
Posle pet sati dzedzanja nad Bresethamovim algoritmom za renderovanje linije, prosto budes obradovan kako nemas pojma sa algebrom.
Knjiga 3d Game Engine Design bi bila tu negde.

Posto je vecina knjiga potrebnih za ozbiljno graficko programiranje skupa (gorepomenuta CG – PaP kosta ~75 EUR), zajedno bi mogli da investiramo u knjige I da ucimo. Moze sve da se nabavi preko Amazona.

Takodje bi mogli da platimo kurseve koji bi nam bili potrebni, ako nam zatrebaju.

Ako ovo citas i vec imas napisan svoj next-generation engine, osim ako hoces da pomognes drugima, neces imati previse koristi ovde.
Ovo treba da budu ludaci koji zele da programiraju trouglove i trude se sami da nauce. Ako se samo palis na ovo, a do sada nisi nista uradio, verovatno neces dobiti puno od ove zamisli.
A sasvim je u redu I da se jave ostali koji hoce da uce ove stvari, recmo AI.

Recite mi sta mislite, da li vam se svidja I sve ostalo u vezi sa ovim.

U svakom slucaju ne bi bilo lose da se upoznamo za ubuduce.
[ Nothingman @ 09.02.2011. 00:21 ] @
Chini mi se da si krenuo malo tezim putem. Sto se tiche matematike, za pocetak ti treba analiticka geometrija u prostoru i neke osnovne stvari iz algebre, kao sto su matrice, determinante i slicno. Takodje neke osnovne stvari iz analize i numericke analize bi dosta pomogle, ali nisu toliko bitne za pocetak. Po mom misljenju, najvaznije za brzi start ti je da skapiras analiticku geometriju jako dobro i da uzmes neku zbirkicu i resis odredjeni broj zadataka iz iste. Takodje nauci osnovne stvari o matricama i determinantama. Ne moras da ulazis duboko u algebru, jer ce ti te osnovne stvari biti dovoljne za dosta toga u pocetku. Te stvari o kojima pricam mozes nauciti za dosta kratko vreme, a mnogo ce ti pomoci oko grafike.

Sto se tiche izbora knjiga, mislim da si tu napravio najvecu gresku. CG: Principles and practice je fenomenalna knjiga, ali je ja nikad ne bih preporucio nekom pocetniku da iz nje uci ovu materiju. Ta knjiga je vise za ljude koji vec imaju solidno znanje iz ove oblasti, da im posluzi kao referenca, da pogledaju formalnu postavku nekih problema ili da steknu uvid u neke detalje o kojima nisu razmisljali na taj nacin.
Druga knjiga koju si pomenuo je ako se ne varam od Eberly-ja. On je sjajan autor, svaka knjiga od njega koju sam chitao je odlicna, ali ni njega ne bih preporucio pocetnicima. On je jako precizan i vecinu stvari formalno objasni, sto pocetnicima moze stvoriti dosta problema jer se izgube u samoj notaciji koju koristi. Zato bih preporucio da preskocis njegove knjige u startu (3d Game Engine Design i 3d Game Engine architecture, od kojih je druga posebno dobra) i da im se vratis kroz neko vreme kada malo ovladas materijom. Na taj nacin ces iz tih knjiga izvuci najvise.

Moj savet ti je da nakon sto utrosis nesto malo vremena da ovladas analitickom geometrijom, pocnes da citas knjigu "Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization". U toj knjizi imas jako dobro objasnjenu izgradnju softverskog 3d engine-a od nule. Na pocetku knjige imas i kraci kurs iz analiticke geometrije da se podsetis onoga sto ti je potrebno. Knjiga je velika, ima preko 1000 strana, ali se jako lako i brzo chita jer je pisana jednostavnim stilom. Bas onako savrseno za pocetnike.
Kad je procitas znaces mnogo toga o renderingu, i znaces kako bi i sam mogao da napises 3d engine, imaces ideju kako su implementirane stvari u GPU-ovima i slicno.
Posle te knjige ces jako lako da naucis neki graficki API kao sto su OpenGL ili Direct3D, jer dok budes citao knjige o njima znaces tacno sta se desava iza svakog poziva neke od funkcija API-ja :)

Onog trenutka kada procitas gore pomenutu knjigu, i kada posle toga naucis neki API (recimo OpenGl), to je trenutak kada bi se trebalo vratiti na Eberly-ja. Posebnoi na knjigu "3d Game Engine architecture", gde se govori o dizajnerskoj strani nekog 3d engine-a, tj. kako napraviti modularan engine koji se relativno lako koristi i unapredjuje. Dok citas tu knjigu bice ti potrebna sva znanja koja si prethodno naucio, a kada je procitas imaces ideju kako sam da napravis 3d engine koji moze da koristi bilo koji renderer (open gl, d3d, softverski renderer...). Takodje tada ces moci bez problema da citas source code od nekih otvorenih endzina, kao sto je OGRE recimo, i da taj nacin jos vise naucis o arhitekturi jednog grafickog engine-a.

p.s. Onako usput procitaj i neku knjigu o dizajn patternima (ima ih stvarno dosta, uzmi neku laksu za pocetak), kao i o praksama dobrog programiranja (npr. Code Complete). One nisu vezane direktno i iskljucivo za grafiku, ali ce ti dosta pomoci u programiranju :)
[ martintyler @ 10.02.2011. 11:08 ] @
Hm, moze biti da idem tezim putem. Sto objasnjava sto sve toliko kilavo ide.

Hteo sam da ucim OpenGL iz neke knjige i tamo pise da bi bilo dobro da prvo poznajes CG-PaP. Pa sam se njakao sa tom knjigom.
Dobro, onda shvatis da ti treba poprilicno linearne algebre za to i jos malo fizike, za deo oko svetla...

Bar je bilo zanimljivo.

Dao si mi bas dosta korisnih saveta. Kada sam ja citao po forumima, nisam bas naisao na neke speicificne instrukcije.

I da, jesi se ti pre bavio ovim stvarima? Jesi pravio engine i igre?

Za pocetak cu da zavrsim knjigu iz linearne algebre sto sam poceo, pa cu da ogulim analiticku geometriju.

Pozdrav covek i hvala.
[ Nothingman @ 10.02.2011. 17:25 ] @
Da se nisam bavio ovim stvarima ne bih ti sigurno ni davao savete :)

To da svi preporucuju "CG: PAP" je postalo nekako ustaljeno, ali kao sto sam vec rekao, ta knjiga je vishe referenca, i kao takva je odlicna. To je tip knjige koja sluzi da je uzmes u ruke i procitas neki deo koji te trenutno zanima, pogledas formalnu postavku problema, uvidis neke alternativne poglede na problem i alternativna resenja. To nije knjiga koja se chita redom od korice do korice u nadi da ce postepeno biti objasnjeno sve sto ti je potrebno da napises svoj 3d engine, a pocetniku su potrebne upravo takve knjige (zato sam ti i preporucio "Tricks of the 3D...", jer to je tip knjige koja se chita od korice do korice...izuzev prvih 100-200 strana gde pishe kako napraviti win32 aplikaciju, i to mozes slobodno da preskocis). Sto se tiche CG:PAP, nju ces vec procitati deo po deo (bar one delove koji su jos uvek aktuelni), kako joj se budes vracao kao nekoj referenci u buducnosti, nakon sto ovladas materijom.

Verujem da svako ko pocinje da se bavi ovim stvarima zeli da zna kako rendering uopste funkcionise, sta se desava iza poziva funkcija nekog API-ja. Kada sam ja pocinjao da se bavim ovim stvarima, najbolja knjiga koja je mogla da se procita je bila "Graphics Programming Black Book" od Michael Abrasha. To je bila vrhunska knjiga. Prva polovina knjige je bila posvecena asembleru i optimizaciji (u to vreme dosta bitna stvar), a druga polovina je bila o softverskom renderingu i osnovnim idejama iza Quake engine-a.
Kasnije se pojavila "Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization", koja je potpuno posvecena samo softverskom renderingu, a sve sto se nalazi u Abrashovoj knjizi imas i ovde (plus jos neke stvari). Zato mislim da, zbog ustede vremena, nema potrebe da chitash i Abrasha (mada se mora reci da je njegov stil pisanja jako zanimljiv, i vredi je procitati barem zbog toga :)

Nebitno je da li ces ikada napisati svoj softverski 3d renderer, to vise i nije toliko bitno (ali je zanimljivo :)), medjutim posedovanje znanja da napises isti ce ti mnogo pomoci sta god budes radio iz ove oblasti. Npr. bilo koji 3D API poput OpenGL-a ili D3D-a ce posle toga izgledati nemerljivo jednostavnije :)
[ martintyler @ 10.02.2011. 19:17 ] @
Brate, gde si mi ti bio pre dve godine :)

Za CG : PaP jeste, to je referenca. Nije udzbenik. Shvatio sam na tezi nacin.

Hteo sam da ucim iz Abrashove knjige, ali je bas matora. Jedino zadnjih 20-30% te knjige je mozda upotrebljivo, bar koliko sam ja gledao.

Hvala ti na savetima i objasnjenjima, sad bar znam neki pravac kuda da idem.

Sto si se "bavio" grafickim programiranjem, jel se ne bavis vise? Ili si jos u tome? Prosla te volja?

Pozdrav covek.
[ Nothingman @ 12.02.2011. 10:51 ] @
Bavio sam se tim intenzivno prvih godina faksa, a posle sam batalio, jer mi se ucinilo da kod nas u tome bas i nema neke perspektive. Danas mi grafika dodje kao neki hobi :)
[ martintyler @ 12.02.2011. 18:34 ] @
Aha. I mislio sam da je tako nesto, uglavnom sam tako cuo od ljudi koje sam pitao.

Pozdrav covek.