Velika lopta (radius 1000) sa providnom sarenom texturom :)
Kako koristiti GLScene
Zaključano
Zakačeno
odlično :)
mogao si samo staviti broj FPS-a, čisto da se ima uvid ;)
mogao si samo staviti broj FPS-a, čisto da se ima uvid ;)
Eeee... vidis... zaboravih na FPS 
Pa... mogao bi neko da uradi nesto slicno i da ubaci i FPS.
U ovakvoj animaciji bi prilicno lepo izgledalo da Enterprise ispali laserski zrak na neki od asterioida i da se on raspadne. Zrak bi mogao vrlo lako da se naprvi koriscenjem ThorFX... vatra u eksploziji nekim od ParticlePFX managerom i sa nekim crvenim svetlom, ali raspad 3d objekta i nije bas tako lak... ili... da li je?
U GLScene postoji ExplosionFx koji sluzi da "explodira" neki 3d objekat. Imajte na umu da ne mogu svi objekti da koriste ovaj efekat... samo oni koji sadrze podatke o mesh-u (vertexi, normale, koordinate textura) kao sto su GLFreeForm i GLActor.
Opet cemo koristiti Waste model. Postavimo na scenu kameru, svetlo i jedan GLFreeForm (0, 0, -4) objekat. Posto je Waste.md2 malo velik postavimo Scale na 0.05, 0.05, 0.05 i zbog razlike u orientaciji PitchAngle na 90. Sada da ucitamo nas model, a to vec znate kako se radi
Sada dodajmo ExplosionFx efekat GLFreeForm objektu.
Direction property odredjuje na koju stranu ce parcici objekta biti "oduvani". Ako je Directino 0, 0, 0 onda se razlecu na sve strane.
MaxSteps odredjuje koliko ce dugo u "koracima" ce explozija da traje dok objekat ne postane nevidljiv.
Speed je brzina kretanja delova.
Ovo je jedan od komponenti koja ima bug... sve sto se podesi u designtime ne utice na ExplosionFx tako da se svi parametri moraju podesavati u runtime... nista nije savrseno
Bacimo jedan TButton na formu u kojem cemo podesiti sve sto nam je potrebno i pokrenuti exploziju
U Cadencer.OnProgress dodajmo da svaki put iscrtava scenu (GLSceneViewer1.Invalidate) i pokrenimo program. Kada kliknemo da dugme objekat se raspada

Problem je ako zelimo da imamo sacuvane podatke o objektu i posle explozije jer jexplizija menja koordinate vertexa i oni se vise ne mogu vratiti... zato ako je potrebno prvo treba napraviti kopiju objekta i tak onda pokrenuti exploziju. Dodacemo jos jedan GLFreeForm objekat koji ce nam cuvati podatke i u OnCreate eventu forme napisati
Time cemo sve podatke iz GLFreeForm1 prebaciti u GLFreeForm2 i postaviti da se drugi objekat ne vidi.
Sada jos samo da malo promenimo OnClick event dugmeta i mocicemo da klikcemo koliko hocemo i da nas objekat svaki put explodira iz pocetka
Prvo sto radimo je zaustavljanje explozije, zatim prebacujemo podatke o izgledu objekta u GLFreeForm1 i postavljamo VIsible na true da bi se video... ostatak je poznat. Probajte sad program
Explozija i nije mnogo realna... ali bar se lako koristi i bolja je nego nista
BTW: Sta bi zeleli da sledece radimo? Imamo scripting, shadere, physic... Ako neko ima neku zanimljivu ideju (animaciju, igru, demo...), a ne moze sam da se snadje neka PM pa cu mu ili joj pomoci.
Pa... mogao bi neko da uradi nesto slicno i da ubaci i FPS.
U ovakvoj animaciji bi prilicno lepo izgledalo da Enterprise ispali laserski zrak na neki od asterioida i da se on raspadne. Zrak bi mogao vrlo lako da se naprvi koriscenjem ThorFX... vatra u eksploziji nekim od ParticlePFX managerom i sa nekim crvenim svetlom, ali raspad 3d objekta i nije bas tako lak... ili... da li je?
U GLScene postoji ExplosionFx koji sluzi da "explodira" neki 3d objekat. Imajte na umu da ne mogu svi objekti da koriste ovaj efekat... samo oni koji sadrze podatke o mesh-u (vertexi, normale, koordinate textura) kao sto su GLFreeForm i GLActor.
Opet cemo koristiti Waste model. Postavimo na scenu kameru, svetlo i jedan GLFreeForm (0, 0, -4) objekat. Posto je Waste.md2 malo velik postavimo Scale na 0.05, 0.05, 0.05 i zbog razlike u orientaciji PitchAngle na 90. Sada da ucitamo nas model, a to vec znate kako se radi
Code:
uses
GLFileMD2;
procedure TForm1.FormCreate(Sender: TObject);
begin
GLFreeForm1.LoadFromFile('waste.md2');
end;
uses
GLFileMD2;
procedure TForm1.FormCreate(Sender: TObject);
begin
GLFreeForm1.LoadFromFile('waste.md2');
end;
Sada dodajmo ExplosionFx efekat GLFreeForm objektu.
Direction property odredjuje na koju stranu ce parcici objekta biti "oduvani". Ako je Directino 0, 0, 0 onda se razlecu na sve strane.
MaxSteps odredjuje koliko ce dugo u "koracima" ce explozija da traje dok objekat ne postane nevidljiv.
Speed je brzina kretanja delova.
Ovo je jedan od komponenti koja ima bug... sve sto se podesi u designtime ne utice na ExplosionFx tako da se svi parametri moraju podesavati u runtime... nista nije savrseno
Bacimo jedan TButton na formu u kojem cemo podesiti sve sto nam je potrebno i pokrenuti exploziju
Code:
uses
GLExplosionFx;
procedure TForm1.Button1Click(Sender: TObject);
begin
with TGLBExplosionFx(GLFreeForm1.Effects.Items[0]) do
begin
MaxSteps := 0;
Speed := 0.1;
Enabled := True;
end;
end;
uses
GLExplosionFx;
procedure TForm1.Button1Click(Sender: TObject);
begin
with TGLBExplosionFx(GLFreeForm1.Effects.Items[0]) do
begin
MaxSteps := 0;
Speed := 0.1;
Enabled := True;
end;
end;
U Cadencer.OnProgress dodajmo da svaki put iscrtava scenu (GLSceneViewer1.Invalidate) i pokrenimo program. Kada kliknemo da dugme objekat se raspada
Problem je ako zelimo da imamo sacuvane podatke o objektu i posle explozije jer jexplizija menja koordinate vertexa i oni se vise ne mogu vratiti... zato ako je potrebno prvo treba napraviti kopiju objekta i tak onda pokrenuti exploziju. Dodacemo jos jedan GLFreeForm objekat koji ce nam cuvati podatke i u OnCreate eventu forme napisati
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
GLFreeForm1.LoadFromFile('waste.md2');
GLFreeForm2.Assign(GLFreeForm1);
GLFreeForm2.Visible := False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GLFreeForm1.LoadFromFile('waste.md2');
GLFreeForm2.Assign(GLFreeForm1);
GLFreeForm2.Visible := False;
end;
Time cemo sve podatke iz GLFreeForm1 prebaciti u GLFreeForm2 i postaviti da se drugi objekat ne vidi.
Sada jos samo da malo promenimo OnClick event dugmeta i mocicemo da klikcemo koliko hocemo i da nas objekat svaki put explodira iz pocetka
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
TGLBExplosionFx(GLFreeForm1.Effects.Items[0]).Reset;
GLFreeForm1.Assign(GLFreeForm2);
GLFreeForm1.Visible := True;
with TGLBExplosionFx(GLFreeForm1.Effects.Items[0]) do
begin
MaxSteps := 0;
Speed := 0.1;
Enabled := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TGLBExplosionFx(GLFreeForm1.Effects.Items[0]).Reset;
GLFreeForm1.Assign(GLFreeForm2);
GLFreeForm1.Visible := True;
with TGLBExplosionFx(GLFreeForm1.Effects.Items[0]) do
begin
MaxSteps := 0;
Speed := 0.1;
Enabled := True;
end;
end;
Prvo sto radimo je zaustavljanje explozije, zatim prebacujemo podatke o izgledu objekta u GLFreeForm1 i postavljamo VIsible na true da bi se video... ostatak je poznat. Probajte sad program
Explozija i nije mnogo realna... ali bar se lako koristi i bolja je nego nista
BTW: Sta bi zeleli da sledece radimo? Imamo scripting, shadere, physic... Ako neko ima neku zanimljivu ideju (animaciju, igru, demo...), a ne moze sam da se snadje neka PM pa cu mu ili joj pomoci.
Potpis
ja bih voleo konacno da napravimo (napravis :) ) neki PixelShader efekat!!!
recimo "lelujanje" vazduha iznad vatre ili nekog objekta koji odaje toplotu!!!
ako znas nasta mislim :)
i druga stvar!!! stavite ovu temu za TOP, pa red je :)
i treca stvar... Srkija za predsednika !!! malo li je :)
recimo "lelujanje" vazduha iznad vatre ili nekog objekta koji odaje toplotu!!!
ako znas nasta mislim :)
i druga stvar!!! stavite ovu temu za TOP, pa red je :)
i treca stvar... Srkija za predsednika !!! malo li je :)
Citat:
tamnicar: ja bih voleo konacno da napravimo (napravis
) neki PixelShader efekat!!!
recimo "lelujanje" vazduha iznad vatre ili nekog objekta koji odaje toplotu!!!
ako znas nasta mislim
recimo "lelujanje" vazduha iznad vatre ili nekog objekta koji odaje toplotu!!!
ako znas nasta mislim
Znam na sta mislis, ali nazalost imam GeForce4 MX 440 with AGP8X/AGP/SSE/3DNOW! karticu koja ne podrzava ni Cg ni GLSL shadere tako da ce neko drugi morati da napise te tutoriale. Ne znam tacno koje kartice imaju podrsku za ove shadere.
Jedine shadere koje mogu da objasnim su oni koji idu sa GLScene (oni su samo cisto postavljanje parametara za OpenGL pre iscrtavanja objekta kao sto su debljina linije, boja objekta i slicno...)... sorry... kad kupim neku GForce 68xx karticu onda cu mozda napisati nesto na tu temu
Potpis
Evo mog malog i pocetnickog Screen Savera koristeci
Delphi i glscene....
Idite na www.milika.net pa izaberita AQUA-Kompjuteri...
Prva vest je Screen Saver...
Ne ocekujte puno, ovo mi je prvi primercic :)
Pozdrav i hvala na tutorijalu!!!
Delphi i glscene....
Idite na www.milika.net pa izaberita AQUA-Kompjuteri...
Prva vest je Screen Saver...
Ne ocekujte puno, ovo mi je prvi primercic :)
Pozdrav i hvala na tutorijalu!!!
Ja sam propustio jedno 20 lekcija :( sada je prosao prijemni pa cu narednih par dana da citam ovo i da eksperimentisem, a ti Srki - cekaj jos malko :) i mozda ces dobiti neki lep demo :)
@milika: meni tvoj screensaver ne radi... a zasto? nem' pojma... da nisi koristio nesto cega nema na mom racunaru? :)
@milika: meni tvoj screensaver ne radi... a zasto? nem' pojma... da nisi koristio nesto cega nema na mom racunaru? :)
Potpis
Pa sta "kaze"???
Problem je sa shaderima ili velikim brojem textura. I kod mene se ne vidi text, a sve ostalo radi.
Potpis
meni izbaci neki showmessage, cuje se beep, a onda se cela app ugasi.. ne stignem da procitam message :(
Potpis
Pozdrav svima!!Najvishe se zahvaljujem srkiju jer bih onako ja morao sam sve da testiram i da prevodim sa engleskog he he!!!Ovako ja sam preshao sve lekcije!!!GlScene je prost!!!Hocu da napravim 3D igricu ali ozbiljnu 3D igricu!!Ja imam 16 god a u programiranju sam vec odavno!!!Dobro poznajem pascal delphi kao i ostale programske jezike.Igrica bi trebala da bude na principu GTA San Andreasa samo sto bi tu vishe paznje bilo posveceno kolima i ostalim voznim objektima!!Ako neko hoce da napravimo tim i da zapocnemo projekat bilo bi vrlo sjajno da mi poshalje PM ili mail??
Rekao si nesto kao GTA San Andreas. Taj program(igricu) je pravilo najmanje stotinak veoma iskusnih programera,dizajnera,modelara,... o budzetu i njihovim platama da se ne prica. I pretpostavljam da je igra radjena u C/C++ jeziku sto je danas standard za igre tog tipa i sve ostale.Mada naravno i u delphiu mozes da napravis odlicne video igre iako je C/C++ pogodniji za to.
Ako hoces da pocnes da se bavis ozbiljnim programiranjem PC igara pocni od neceg jednostavnijeg.
Naprimer neku interesantnu 2D igru sa okorelom grafikom od koje mozes da zaradis koji dinar na internetu.
A posle kad steknes malo iskustva sastavi neki tim ili se prikljuci nekom.
Kakva su tvoja iskustva sa razvojem PC igara da li si napravio neku?
Tema je možda malo zastarela, ali da ne otvaram novu, pomoć ću zatražiti ovde.
Dakle, ove godine smo se par profesora, nekoliko drugova i ja upustili u jedan malo veći školski projekat koji je pretežno baziran na elektronici i programiranju mikrokontrolera.
Mi smo zamislili da napravimo (realni) model ljudske šake koji će biti upravljan pokretima naše ruke, pomoću posebne rukavice.
Pošto se ja posebno zanimam za programiranje, ja sam želeo da te pokrete simuliramo i na računaru, softwerski.
U gore navedenim uputstvima sam pronašao kako mogu da izvršim učitavanje osnovnog modela šake, ali moj problem je kako da uradim transformacije nad tim modelom.
Nakon učitavanja modela ruke ja bih želeo da na osnovu podataka o položaju svakog prsta izvršim transformacije tog modela, odnosno da menjam pozicije prstiju.
Moje pitanje je da li su takve transformacije izvodljive i na koji način to mogu da uradim?
Unapred, hvala na pomoći!
Dakle, ove godine smo se par profesora, nekoliko drugova i ja upustili u jedan malo veći školski projekat koji je pretežno baziran na elektronici i programiranju mikrokontrolera.
Mi smo zamislili da napravimo (realni) model ljudske šake koji će biti upravljan pokretima naše ruke, pomoću posebne rukavice.
Pošto se ja posebno zanimam za programiranje, ja sam želeo da te pokrete simuliramo i na računaru, softwerski.
U gore navedenim uputstvima sam pronašao kako mogu da izvršim učitavanje osnovnog modela šake, ali moj problem je kako da uradim transformacije nad tim modelom.
Nakon učitavanja modela ruke ja bih želeo da na osnovu podataka o položaju svakog prsta izvršim transformacije tog modela, odnosno da menjam pozicije prstiju.
Moje pitanje je da li su takve transformacije izvodljive i na koji način to mogu da uradim?
Unapred, hvala na pomoći!
Potpis
Johnny
Moguce su, ali ti je za to potrebno dublje poznavanje OpenGL-a
Srki_82, najpre ti se moram zahvaliti na ovako detaljnom tutorijalu :)
Na žalost, imam problem prilikom instalacije GLScenea, pa mi je potrebna pomoć...
GLScene koji koristim ima oznaku verzije 1.2 iz jula 2013. godine, a Delphi je u broju 7.
Moguće je da je problem u drugačijoj strukturi direktorijuma u "mojoj" verziji GLScenea. Kod mene, u instalaciji u potfolderu Source ima samo sledećih pet direktorijuma: external, include, lib, LinkedObject i Resources, a Resources se grana na vcl i objects, ima desetak direktorijuma i tridesetak BMP datoteka.
Drugim rečima, kod mene nema Base, CgShaders, DesignTime i ostalog čega kod tebe ima.
Dakle, sve to mnogo se razlikuje od tvog setupa.
U Tools / Environment Options / Library popunio sam i Library path i Browsing path svim ovim poddirektorijumima, ali ne vredi, kompajliranje ne prolazi.
Već neko vreme pokušavam da nađem gde bi mogao biti problem, surffujem po StackOverflowu, gledao sam i klipove na YouTubeu, ali ne uspevam, pa bi mala pomoć dobrodošla :)
Na žalost, imam problem prilikom instalacije GLScenea, pa mi je potrebna pomoć...
GLScene koji koristim ima oznaku verzije 1.2 iz jula 2013. godine, a Delphi je u broju 7.
Citat:
Srki_82:
Ok... ovako radi... step-by-step :)
Ako si skinuo zapakovan GLScene prvo ga raspakuju neki folder... npr C:\Program Files\Borlad\Delphi 7\Components\GLScene. Kad to uradis pokreni Delphi. U Tools meniu izaberi Environment Options... Na Library stranici u Library i Browsing path dodaj sve foldere iz GLScene\Source ukljucujuci i njega... trebalo bi da imas nesto slicno ovom
$(DELPHI)\Lib;
$(DELPHI)\Bin;
$(DELPHI)\Imports;
$(DELPHI)\Projects\Bpl;
$(DELPHI)\Rave5\Lib;
$(DELPHI)\Components\GLScene\Source;
$(DELPHI)\Components\GLScene\Source\Base;
$(DELPHI)\Components\GLScene\Source\CgShaders;
$(DELPHI)\Components\GLScene\Source\DesignTime;
$(DELPHI)\Components\GLScene\Source\FileFormats;
$(DELPHI)\Components\GLScene\Source\GameAPIs;
$(DELPHI)\Components\GLScene\Source\PhysicsAPIs;
$(DELPHI)\Components\GLScene\Source\Platform;
$(DELPHI)\Components\GLScene\Source\PlugIn;
$(DELPHI)\Components\GLScene\Source\ScriptingAPIs;
$(DELPHI)\Components\GLScene\Source\Shaders;
$(DELPHI)\Components\GLScene\Source\SoundAPIs;
$(DELPHI)\Components\GLScene\Source\VideoAPIs
Ok... ovako radi... step-by-step :)
Ako si skinuo zapakovan GLScene prvo ga raspakuju neki folder... npr C:\Program Files\Borlad\Delphi 7\Components\GLScene. Kad to uradis pokreni Delphi. U Tools meniu izaberi Environment Options... Na Library stranici u Library i Browsing path dodaj sve foldere iz GLScene\Source ukljucujuci i njega... trebalo bi da imas nesto slicno ovom
$(DELPHI)\Lib;
$(DELPHI)\Bin;
$(DELPHI)\Imports;
$(DELPHI)\Projects\Bpl;
$(DELPHI)\Rave5\Lib;
$(DELPHI)\Components\GLScene\Source;
$(DELPHI)\Components\GLScene\Source\Base;
$(DELPHI)\Components\GLScene\Source\CgShaders;
$(DELPHI)\Components\GLScene\Source\DesignTime;
$(DELPHI)\Components\GLScene\Source\FileFormats;
$(DELPHI)\Components\GLScene\Source\GameAPIs;
$(DELPHI)\Components\GLScene\Source\PhysicsAPIs;
$(DELPHI)\Components\GLScene\Source\Platform;
$(DELPHI)\Components\GLScene\Source\PlugIn;
$(DELPHI)\Components\GLScene\Source\ScriptingAPIs;
$(DELPHI)\Components\GLScene\Source\Shaders;
$(DELPHI)\Components\GLScene\Source\SoundAPIs;
$(DELPHI)\Components\GLScene\Source\VideoAPIs
Moguće je da je problem u drugačijoj strukturi direktorijuma u "mojoj" verziji GLScenea. Kod mene, u instalaciji u potfolderu Source ima samo sledećih pet direktorijuma: external, include, lib, LinkedObject i Resources, a Resources se grana na vcl i objects, ima desetak direktorijuma i tridesetak BMP datoteka.
Drugim rečima, kod mene nema Base, CgShaders, DesignTime i ostalog čega kod tebe ima.
Dakle, sve to mnogo se razlikuje od tvog setupa.
U Tools / Environment Options / Library popunio sam i Library path i Browsing path svim ovim poddirektorijumima, ali ne vredi, kompajliranje ne prolazi.
Već neko vreme pokušavam da nađem gde bi mogao biti problem, surffujem po StackOverflowu, gledao sam i klipove na YouTubeu, ali ne uspevam, pa bi mala pomoć dobrodošla :)
Koju gresku dobijas? Ako je to missing unit onda pretrazi gde je taj pas/dcu/obj lociran pa ga dodaj u search path.
Takodje ako ti 2D library radi posao, pogledaj https://github.com/skia4delphi/skia4delphi, nov je i aktivan za sad.
Takodje ako ti 2D library radi posao, pogledaj https://github.com/skia4delphi/skia4delphi, nov je i aktivan za sad.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Citat:
savkic: Koju gresku dobijas? Ako je to missing unit onda pretrazi gde je taj pas/dcu/obj lociran pa ga dodaj u search path.
Nije missing unit. Evo ukratko celog "hodograma":
1. GLScene v1.2 downloadovan i raspakovan u \Dev\GLScene.
2. Tools / Environments Options / Library
3. U Library path i Browsing path postavljene putanje do \Dev\GLScene\Source i svih poddirektorijuma.
4. Pokrenut \Dev\GLScene\Source\external\Setup.bat (kopira potrebne DLL-ove u \Windows\System32\
5. Otvorena projektna grupa \Dev\GLScene\Delphi7\All Packages . Aktivan je projekat GLS_SDL7.bpl
6. Project / Build All Projects
Posle poslednje stavke, puca na GLSLog.pas u redu 606: Undeclared identifier: 'mbYesNo' i odmah potom u istom redu: Too many actual parameters.
Indikativno je da se struktura (direktorijumi) originalne instalacione datoteke drastično razlikuje od verzije koju je opisivao Srki_82 na početku ovog tutorijala.
Citat:
Takodje ako ti 2D library radi posao, pogledaj https://github.com/skia4delphi/skia4delphi, nov je i aktivan za sad.
Trenutno mi nije u igri, ali ako imaš pohvalnih reči o biblioteci, kaži, pa ću obratiti pažnju ;)
Onda sigurno imas neki nestabilni commit, koji ili ima bugove ili ne radi na svim verzijama Delphija (pisan za neku raniju) probaj da nadjes neki stariji ili da ti predjes na stariji Delphi. Eventualno pogledaj ako ima updejt GLScene za novije Delphi verzije.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html