[ARHIIV] mängumeistrid
Pole sisse logitud. [Logi sisse ]
Mine lehekülje algusesse
Prinditav versioon | Telli teema e-mailile | Lisa lemmikutesse  
[Õpetus] Ilus vesi FastExtension-iga.
BrainScream
Level 3
Avatar

Liitunud: 29.9.2007
Postitusi: 78
[EEMAL]




postitati 12.6.2008 12:04 Tsiteeri
[Õpetus] Ilus vesi FastExtension-iga.



Fast Libraries vee tegemise näide.
1) Sul on vaja Fast Libraries-est FastExtension-i. Selle saad siit: http://www.fastlibs.com/libraries.php.
2) Sealt on sul vaja kopeerida fail "for_Blitz3D/decls/FastExt.decls" sinu blitz3D kausta userlibs-ide alla. Asukoht peaks selline välja nägema: Blitz3D/userlibs/FastExt.decls
3) Otsi FastExtension-i kaustast "for_Blitz3D." Nüüd on sul vaja kaustast "for_blitz3D" faili "FastExt.dll" ja tervet "include" kausta koos sealolevate failidega. Neid saad kasutada enda programmide ja mängude tegemisel. Rohkem polegi vaja. Kopeeri see kaust ja FastExt.dll sinu projekti kausta.
Näiteks peaks see siis selline välja nägema:

http://s2.screenshots.cc/upload/df64950a.jpg

Ja include kaust peaks selline olema:

http://s2.screenshots.cc/upload/bc90a2a5.jpg

4) Nüüd saamegi alustada projektiga.
Võta Blitz3D lahti ja tee uus fail. Salvesta see enda projekti kausta, nagu pildil:

http://s1.screenshots.cc/upload/81755755.jpg

5) Alustame koodimist.
Sul on vaja veel FastExtension/media kaustast kopeerida failid water32.3ds ja Water_anim.jpg

Kood:
Include "includeFastExt.bb" ;Esimene asi: Lisame juurde include kaustast FastExt funktsioonid.

Graphics3D 800,600,0,2 ;Paneme graafika paika. Ilmselt teavad kõik, mida see teeb.

InitExt ;See funktsioon tuli FastExt.dll-iga automaatselt kaasa. See käivitab FastExtension-i.
;Blitz3D muudab ainult need lisafunktsioonid siniseks, mis on lisatud tema userlibs kausta decls faili all.
;Need, mis tulevad FastExt.bb failiga kaasa(see on ülevalpool include-tud) need jäävad valgeteks.
;FastExt.dll toob kaasa ainult mõne videokaarti lisa, nagu EMBM ja clipplane-ing ja teeb need kasutatavateks blitz3d-s. Nendega
;saab teha paremaid effekte.

;Nüüd kontrollime, kas videokaart on sobiv ja toetab vajalikke asju:
If GfxDriverCapsExClipplanesMax=0 Then RuntimeError "Hoiatus. Sinu videokaart ei toeta clipplanes-eid. "
; Funktsioon GfxDriverCapsEx on include failis FastExt.bb olemas, samuti ClipplanesMax.
If GfxDriverCapsExBump=0 Then RuntimeError "Hoiatus. Sinu videokaart ei toeta EMBM (Bump)-i. "

Camera=CreateCamera() ; Loome siis natuke pilti...
PositionEntity Camera,0,3,0 ; Paneme 3 ühiku kõrgusele...
CameraRange Camera,0.1,500 ; Nägemisulatus...
CameraClsColor Camera,240,240,240 ; Tausta värvus valge-halliks...

CameraSprite = CreateSprite(Camera) ; teeme camerast sprite
PositionEntity CameraSprite,0,0,0.11 ; ja paneme asukoha paika
EntityColor CameraSprite,20,20,40 ; värvime...
EntityAlpha CameraSprite,0.35 ; ja teeme natu läbipaistvaks

Light = CreateLight() ; Teeme valguse...

;Nüüd teeme 2 objekti scene jaoks... Et oleks midagi vaadata :)
cube = CreateCube()
EntityColor cube,255,0,0 ; värvime punaseks
PositionEntity cube,2,2,8

pall = CreateSphere()
EntityColor pall,0,255,0 ; roheliseks
PositionEntity pall,-2,2,8

Global ReflectTexture ; Peegeldustekstuur
CreateReflectTexture(512,512) ;Teeme peegeldustekstuuri, tekstuuri suurus on 512x512 pixlit.

BumpTexture = LoadAnimTexture ( "water_anim.jpg", 9, 64, 64, 0, 32 )
TextureBlend BumpTexture, FE_BUMP ; Fe_bump on olemas FastExt.bb failis.
ScaleTexture BumpTexture,0.0125,0.0125

WaterPlane = LoadMesh("water32.3ds") ; Teeme vee...
ScaleMesh WaterPlane,2,1,2
EntityFX WaterPlane,1
EntityColor WaterPlane,220,230,240

; clipplane vee all olemiseks.
WaterClipplane = CreateClipplane ( WaterPlane )
AlignClipplane WaterClipplane, WaterPlane

While Not KeyHit(1) ; ja algabki loop

; teeme ringiliikumise...
If KeyDown(200) Then MoveEntity camera,0,0,1 ; otse liikumine
If KeyDown(208) Then MoveEntity camera,0,0,-1 ; tagasi
If KeyDown(203) Then TurnEntity camera,0,1,0 ;pööramine vasakule
If KeyDown(205) Then TurnEntity camera,0,-1,0 ;pööramine paremale
If KeyDown(30) Then MoveEntity camera,0,1,0 ;üles A täht
If KeyDown(44) Then MoveEntity camera,0,-1,0 ;alla Z täht

CameraFogMode Camera,0
HideEntity CameraSprite

ShowClipplane WaterClipplane
HideEntity WaterPlane

MirrorCamera Camera, WaterPlane

SetBuffer TextureBuffer(ReflectTexture)
CameraViewport Camera, 0,0, TextureWidth(ReflectTexture), TextureHeight(ReflectTexture)
ScaleEntity Camera,1,Float(GraphicsHeight())/Float(GraphicsWidth()),1

RenderWorld

RestoreCamera Camera
If Underwaterflag ; see funktsioon on samuti olemas FastExt.bb-s ja kasutatakse vee alla minemisel
ShowEntity CameraSprite ; kõik mis juhtub vee all olles...
CameraFogMode Camera,1
CameraFogRange Camera,0.5,25
CameraFogColor Camera,20,20,40
EntityAlpha WaterPlane,0.8
Else
HideEntity CameraSprite ; ja vee peal olles...
CameraFogMode Camera,1
CameraFogRange Camera,20,250
CameraFogColor Camera,212,242,244
EntityAlpha WaterPlane,0.65
EndIf

HideClipplane WaterClipplane
ShowEntity WaterPlane

EntityTexture WaterPlane, BumpTexture, (BumpTextureFrame Mod 32), 0
EntityTexture WaterPlane, ReflectTexture, 0, 1

SetBuffer BackBuffer()
CameraViewport Camera, 0,0, GraphicsWidth(), GraphicsHeight()
ScaleEntity Camera,1,1,1

RenderWorld ;jep.. Jälle :P

If EntityY(Camera)>=0 Then
UnderWaterFlag = 0
RotateEntity WaterPlane,0,0,0
Else
UnderWaterFlag = 1
RotateEntity WaterPlane,0,0,180
EndIf
AlignClipplane WaterClipplane, WaterPlane

If (MilliSecs()-BumpTextureFrameF)>33 Then
BumpTextureFrame = BumpTextureFrame + 1
BumpTextureFrameF = MilliSecs()
EndIf

If KeyHit(28) Then
If TextureSize=256 Then
TextureSize=512
Else
TextureSize=256
EndIf
CreateReflectTexture (TextureSize, TextureSize)
EndIf

If KeyHit(59) Then HelpFlag=1-HelpFlag
If KeyHit(60) Then FlipSync=1-FlipSync

UpdateWorld
Flip
Wend
End

Function CreateReflectTexture(w,h) ; soovitan seda funktsiooni lihtsalt copy paste-da... See lisab peegeldused.
If ReflectTexture Then FreeTexture ReflectTexture
ReflectTexture = CreateTexture (w, h, 1+16+32+256 + FE_RENDER + FE_ZRENDER)
TextureBlend ReflectTexture, FE_PROJECT
PositionTexture ReflectTexture, 0.5, 0.5
ScaleTexture ReflectTexture, 2, -2
End Function



Tulemus on midagi sellist:

http://s1.screenshots.cc/upload/9a494642.jpg

Siit saad tirida terve näite:
http://uppit.com/KHA7B0

Head kasutamist :)
See on hea alus enda mängu tegemiseks ja copy paste-miseks.

PS! See vesi näeb nii tühine välja, kuna põhja pole.. ma lisasin lihtsalt tühjusesse selle vee ja paar objekti juurde, et oleks midagi vaadata...

(y)


Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
smr597
Level 3


Liitunud: 21.5.2008
Postitusi: 76
[EEMAL]




postitati 13.6.2008 10:11 Tsiteeri


Kui ma ei eksi, siis see "kogu" on tasuline?
Kuigi ma ei ole siiamaani aru saanud, mis piirangud tal on :D.
Vene foorumid on lahedad asjad, olen sealt niimõndagi kasuliku saanud, aga siis, kui meie inglise sõbrad satuvad venelaste foorumise, siis muudetakse kõik äkitselt tasuliseks :mh: .
Näiteks newton oli ennem tasuta, mul õnnestus, see tasuta 0.9 versioon saada ennem, kui 0.9.6, ehk siis tasuline versioon, välja tuli.

BTW, see dot3 bump maping, seda saab ka ilma selle "koguta" teha ja isegi paremini, võin mõne näite milalgi üles visata. Ainus asi miks see blitz3d's eksisteeriv bump mapping on nõme on see, et siiamaani ei ole suudetud korraliku, värvilist ja multi valgustust tekitada, ainult üks valgustus, mis on valge.
Ise nipalju, kui olen uurinud olen suutnud mingi süsteemi leiutada, et kuidagi moodi normaalselt tunduv värv lisada, samas keegi suutis veel BSM'i kirjutada(netis ripub kuskil) aga minu arvates on see ültse väga valesti kirjutatud (et ei ole enam see õige dot3 mis on näiteks DOOM3mes või HL2'hes)

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
jorss
Level 12


Liitunud: 25.1.2005
Postitusi: 951
[EEMAL]




postitati 13.6.2008 11:13 Tsiteeri


omast kogemusest tean öelda, et ilma shaderiteta pole absoluutselt mõtet bumpmappidega jamada.
ühe valgusallikaga normalmapitud ja tekstuuritud objekti kuvamiseks tuleb seda objekti erinevate atribuutidega 2x renderdada. iga lisatud valgusallikas lisab 1x, specular lisab veel 2x vist, ning neid organiseerida on veel omaette nuss.
geforce 440mx, mis on põhiline shadereid mittetoetav kaart praegu liikvel, ei suuda nii suure hunniku passidega joonistada midagi palju keerukamat paarist kuubikust ja teepotist.
ja eelmainitud videokaart on kah suhteliselt unustusse vajumas juba, niiet te võiksite ikka directx9-at vaadata.

või veel kavalam, opengli.
Platform II: -DMI-; H0lx&jorssJõulumäng I: h0lx&jorssKambakas I: jorss, Perfoon
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
BrainScream
Level 3
Avatar

Liitunud: 29.9.2007
Postitusi: 78
[EEMAL]




postitati 13.6.2008 18:45 Tsiteeri


Hah ma avastasin DX9 library ja kõik õpetused, kuidas seda kasutada(blitzile) ja siis avastan äkki, et... DX10 vistaga see asi ei funka.. no mida :D
Tollega saaks juba hardware shadingut teha. Aga jah see dll library, mis siin on, see kasutab DX7 enviroment bump mapping või midagi säärast.. DX7 algusaastatel hakatigi bumpmappingut ugritsema. See on siiski suht algeline aga see eest suht norm :P. EMBM ongi vist dot3-l põhinev hardware-ga. Aga ma ise ka täpselt ei tea.. Sellepärast vaatasingi, et FPS on kuidagi kõrge, poleks nii kõrge olnud, kui ei oleks hardware kasutanud.. Nii, et see süsteem seal hoiab kokku arvuti ressursse. Mul endal videokaart toetab kõike, vertex ja pixel shader on 3.0 256mb
PS.. See on jah tasuline aga trial-i viga on see aint, et ta viskab vahel sellise akna ette "trial version" mingi iga 5 minuti tagant... Aga mäng kinni ei lähe selletõttu.. Nii et suht kasutatav library. Paneksin 8/10 punktist.
Ma teen oma zombie killer mängu "Eaten! By the walking death" selle abil. Jätsin mainimata, et see library teeb täiega effektsemaks, kui kasutad õiget pinnast(Terrain) ja sellist kraami, vee alt paistab ka kraam suht lahe.

[Muudetud: 13.6.2008 BrainScream]


Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
Crypton

Avatar

Liitunud: 18.12.2005
Postitusi: 1604
[EEMAL]




postitati 24.6.2008 21:31 Tsiteeri


Olen ka nüüd paar päeva Blitz3D näppinud ja sattusin sama asja otsa. Tore, et leidsin siit ka vastava õpetuse, kuidas seda kasutada. Mina seda omal jõul tööle ei saanud ja parakui ei saa ka seda. Arvatavasti on kaart liiga nigel(?) (GeForce FX 5200), et vastavat paketti jooksutada, kuna koguaeg peksab "graphics_create failed" veateate ette. Aga sooviks tohutult neid effekte käima saada küll.
Oppaaa ! :P. Tõmbasin su valmis projekti, võtsin debuggeri maha ja voila täitsa töötab. See annab motivatsiooni :P

Ülesseadistamisega küsimus. Kas dll-id ei peaks samuti userlib kaustas olema? Vähemalt sealne readme nagu ütleks nii.
Või sinna panna ainult decls failid ja dll-id ja include kaust toppida oma projektifaili kõrvale?


[Muudetud: 24-6-2008 Crypton]

Maze I: CryptonRalli III: Crypton<br>
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
smr597
Level 3


Liitunud: 21.5.2008
Postitusi: 76
[EEMAL]




postitati 24.6.2008 22:39 Tsiteeri


Tsitaat:
Tsitaat: Crypton
Olen ka nüüd paar päeva Blitz3D näppinud ja sattusin sama asja otsa. Tore, et leidsin siit ka vastava õpetuse, kuidas seda kasutada. Mina seda omal jõul tööle ei saanud ja parakui ei saa ka seda. Arvatavasti on kaart liiga nigel(?) (GeForce FX 5200), et vastavat paketti jooksutada, kuna koguaeg peksab "graphics_create failed" veateate ette. Aga sooviks tohutult neid effekte käima saada küll.


Paar küsimust ülesseadistamisega. Kas dll-id ei peaks samuti userlib kaustas olema? Vähemalt sealne readme nagu ütleks nii.
Või sinna panna ainult decls failid ja dll-id ja include kaust toppida oma projektifaili kõrvale?

[Muudetud: 24-6-2008 Crypton]


Mina instalin Lib'se sedasi:
Oletame, et meie lib'si nimi on "library", seega, kopeerid need failid -> "library.decls" ja "library.dll"
kausta "blitz3d\userlibs"
ja oma projekti juurde, panen ma include failid, täpselt sellisese kausta, kuidas ma projekti nende juurde lingin ehk siis:
kaust ->"lisad"
link -> include"lisad\library"

(A)

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
Crypton

Avatar

Liitunud: 18.12.2005
Postitusi: 1604
[EEMAL]




postitati 25.6.2008 13:37 Tsiteeri


mnuh rohkem mõtlesin dll-e. decls tuleb niikuinii panna userlib-si, et koodiaknas need siniseks värvitaks ja all ribas selgitust näeks.

Aga enne su posti jõudsin muudatuse teha, et ma sain igatahes tööle õnneks. debugger enabled tuleb maha võtta, muidu hakkab mingit graphics_create failed ette toppima.

Ma olen nüüd näidet uurinud ja temaga natukene katsetanud. Enne pole vist mõtet igat koodirida küsida, kui mingit selgitavamat näidet uurinud ei ole. Samuti ei ole ka FastExtensionile ka mingit help file-i nagu ma aru saan?

Maze I: CryptonRalli III: Crypton<br>
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
smr597
Level 3


Liitunud: 21.5.2008
Postitusi: 76
[EEMAL]




postitati 25.6.2008 14:48 Tsiteeri


Fast extensionil peaks kodukal väga palju "help" infot olema .. kui ma õigesti mäletan, kui valetan siis palun vabandust, igastahes, mul kunagi varem oli blitziga ka nii, et pidin debugeri maha võtma, see on vist vanemate blitzide bug, et mul on praegu blitz ni peal et ainult 1.99 updatega ja saan kõiki asju koos debugeriga teha.

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum

Hetkel loevad seda teemat:
Mitte ühtegi - 1 külaline

Mine lehekülje lõppu





Foorumi algbaas põhineb XMB mootoril, modifitseeritud Valter Pundi poolt
Kodulehekülg on tehtud Valter Pundi poolt vpundi ät gmail punkt komm