GLScene | |
---|---|
GLScene interfész | |
Típusú | Grafikus motor |
Fejlesztő | Mike Lischke (eredeti szerző), Eric Grange (elsődleges fejlesztő 2000 és 2005 között), mások |
Beírva | Delphi , FreePascal , C++ |
Operációs rendszer | Többplatformos szoftver |
legújabb verzió | 1,8 ( 2019. január 1. ) |
Engedély | Mozilla Public License 2.0 |
Weboldal | glscene.sourceforge.net |
A GLScene egy grafikus motor többplatformos alkalmazások létrehozására Delphi , Free Pascal és C++ programozási nyelveken , az OpenGL könyvtár alkalmazásprogramozási felületként történő felhasználásával . A GLScene ingyenes szoftver , és a Mozilla Public License licence alá tartozik . Ezzel egyszerűbbé és gyorsabbá válik a 3D grafika programozása a Windows rendszerben . A motor legfrissebb verziói a Lazarus programozási környezetben is elérhetők Linuxra és más operációs rendszerekre szánt alkalmazások létrehozására .
Ennek a motornak a fejlesztését 1997-ben Mike Lischke [1] kezdte, és a 0.5-ös verzió nyílt forráskódként jelent meg. A GLScene további fejlesztését Eric Grange folytatta, 2006 után pedig a fejlesztőcsapat tartja karban. Jelenleg a motor új funkciókkal bővült, és a különféle optimalizálásoknak köszönhetően gyorsabbá vált.
A GLScene lehetővé teszi a programozók számára, hogy a képen látható interfész segítségével tervezési időben 3D OpenGL objektumokat hozzanak létre. Számos objektum és további vizuális komponens A VCL segít a programozóknak 3D grafikus alkalmazások létrehozásában Delphi, C++Builder és Lazarus számára.
Letölthető modellfájlformátumok: 3ds, obj, vrml, smd, md2, md3, nmf, oct, lwo, b3d, gl2, gls, ms3d, Nurbs, lod és néhány más.
Mentett modellfájlformátumok: glsm, obj és smd.
Támogatott fizika: ODE , Newton Game Dynamics . Van egy kis saját motor is az ütközések kiszámításához, figyelembe véve a DCE impulzusmegmaradás törvényeit.
A TGLCamera egy kameraobjektum. Ez az a pont, ahonnan az ember a háromdimenziós világot nézi. A kamera pozícionálható és a célpont, amit néz. A FocalLength paraméter változtatásával módosíthatja a kamera gyújtótávolságát. A DepthOfView és NearPlaneBias paraméterek levágják a távoli és közeli objektumokat. A távoli tárgyak levágása nagymértékben megnövelheti a munka sebességét.
Így a kamera látómezeje egy csonka kúp, amelyet mindkét oldalról a DepthOfView és NearPlane paraméterek határolnak, melynek szöge a FocalLength paraméteren keresztül állítható be.
A TGLSceneViewer egy 3D-s világ megjelenítésére szolgáló objektum. Fel kell dobni az űrlapra, és be kell állítani a Kamera tulajdonságot, vagyis megadni, hogy melyik kameráról kell a világot nézni. Ezt követően megmutatja, mit lát a megadott kamera.
TGLDummyCube - olyan objektum, amely nem tartalmaz grafikát, de van pozíciója (pozíciója), forgása irányvektorok (irány) és top (felfelé) és lépték (skála) formájában. Ezen tulajdonságok felhasználásával az objektum különböző pozíciókat adhat a térben. Több egymáshoz csatolt TGLDummyCube használatával pedig összetett térbeli struktúrákat hozhat létre, például csontvázat, amelyben a csontok ízületekkel vagy ízületekkel kapcsolódnak egymáshoz. Ezenkívül a TGLDummyCube kényelmesen használható TGLCamera célpontként.
TGLMaterialLibrary - anyagtár. A benne lévő anyagok átkerülnek a videokártya videomemóriájába. Minden anyagot különböző GLScene objektumok használhatnak egyszerre. Minden anyagnak lehet saját textúrája, vagy használhatja más anyagok textúráit saját megjelenítési beállításokkal. Így például egy zöld autós textúra betöltésével használhatod más anyagban is, de megváltoztathatod a színét mondjuk kékre.
A TGLFreeForm egy statikus 3D-s modell. Például épületek, tájak, fák és más hasonló tárgyak betöltésére szolgál. Két sornyi kód elegendő egy 3D-s modell GLScene-be való betöltéséhez:
// Adja meg, hogy melyik anyagkönyvtárat használja. GLFreeForm1 . MaterialLibrary := GLMaterialLibrary1 ; // A 3D modell betöltése. GLFreeForm1 . LoadFromFile ( 'mymodel.3ds' ) ;A modellbetöltő modult is hozzá kell adnia a uses -hoz . 3ds modelleknél ez a GLFile3DS, smd modelleknél GLFileSMD stb . A betöltés után a modell teljesen bekerül a videomemóriába, és szinte semmilyen processzoridőt nem tölt a kijelzőjén. Az objektum mátrixának megváltoztatásakor csak az új mátrix kerül elküldésre a videomemóriába.
A TGLActor egy 3D-s modell animációval. Emberek, szörnyek és más mozgó tárgyak modelljének betöltésére szolgál. A betöltés hasonló a TGLFreeForm-ban lévő modell betöltéséhez. Két sor elegendő az animáció elindításához.
// A modell betöltése a 'mymodel.smd' vázanimációval. GLActor1 . LoadFromFile ( 'mymodel.smd' ) ; // Sétálóanimáció hozzáadása a 'walk.smd' fájlból. GLActor1 . AddDataFromFile ( 'walk.smd' ) ; // Váltás a „séta” animációra. GLActor1 . SwitchToAnimation ( 'séta' ) ; // Az animációt ciklikus módban kezdjük lejátszani. GLActor1 . AnimationMode := aamLoop ;A TGLFreeForm modelljeivel ellentétben itt a renderelés részben a CPU-hoz van rendelve. Ha megváltozik a vázanimációval ellátott modell pozíciója, akkor minden egyes csont pozíciójához minden pillanatban újraszámításra kerül a modellcsúcsok pozíciója, majd elküldésre kerülnek a videomemóriába és megjelennek a képernyő. Ez a megközelítés lassabb, de lehetővé teszi a mozgások szinte tökéletes simaságának elérését.
TGLPoints – lehetővé teszi pontok rajzolását a képernyőn. Pontokat kell hozzáadnia a Pozíciók listához. A pontok színezéséhez színeket kell hozzáadnia a Színek listához. Ha csak egy színt adunk hozzá, akkor minden pont ebből a színű lesz. Ha a színek száma megegyezik a pontok számával, akkor minden pontnak saját színe lesz.
TGLLines - lehetővé teszi vonalak és spline-ok rajzolását. A vonalakat pontok határozzák meg, amelyek a NodesAdd eljárással felvehetők a Nodes listára. A vonalak az adott pontokon a LineSplineMode megjelenítési módtól függően rajzolódnak ki. Ha lsmSegments, akkor minden két pont külön sort jelent. Ha lsmLines, akkor a vonalak pontról pontra húzódnak. Ha más mód, akkor a pontok fölé spline-t húzunk, vagyis egy sima vonalat, amely az összes megadott ponton áthalad. A vonal simasága a Division paramétertől függ. Minél nagyobb, annál simább a vonal. Ha a loUseNodeColorForLines paraméter engedélyezve van a LinesOption beállításban, akkor a vonal minden pontjához más szín használható. A színek a NodeColor-ban vannak megadva.
Különböző módokon is ki lehet választani azokat a pontokat, amelyek mentén a vonalak épülnek. A metódus a LineNodesAspect paraméterben van beállítva.
A TGLLightSource egy olyan fényforrás, amely a teljes 3D-s jelenetet megvilágítja. Az OpenGL -ben legfeljebb nyolc lehet . Ezért a GLScene-ben nyolc is van belőlük. Azt, hogy egy adott fényforrás világít-e vagy sem, a Shining paraméter határozza meg.
A világítás színéért három paraméter felelős: Ambient, Diffuse és Specular. Az Ambient a jelenet általános megvilágítása, független a fényforrás helyzetétől, mint az árnyékban történő megvilágítás napsütéses napon. Diffúz - irányfény, a forrás helyzetétől függ. Vagyis ha a felület elfordul tőle, akkor nem világítja meg. Specular - tükörfény. Ez függ a normál felülettől is. Ezzel fényes fénypontokat készíthet, például fényes pontot egy fényes vasgömbön egy izzóból.
Három paraméter felelős a fényerősség csillapításáért a forrás távolságától függően: ConstAtenuation, Linear Attenuation, Quadratic Attenuation. Az első egy állandó csillapítás (általában nem függ a távolságtól, de egyszerűen úgy tekinthetjük, hogy ez szabályozza a fényforrás fényességét), a második lineáris csillapítás, a harmadik négyzetes.
A fényforrás lehet egy reflektor. Ehhez a SpotDirection paramétert lsSpot-ra kell állítani, és meg kell adni a spotlight paramétereket. SpotDirection – Meghatározza a reflektorfény irányát. SpotCutOff - spotlámpa kúpszöge. Ha 180 fokkal egyenlő, akkor ez nem egy reflektor, hanem egy közönséges fényforrás. Ha kevesebb, mint 90, akkor reflektorfényben. SpotExponent – a fényerő változási együtthatója a reflektorfény középpontjától a széleiig.
A keresőlámpákat gyakran autófényszóróként vagy zseblámpáként használják a hős kezében a játékokban.
Játékmotorok | |||||||
---|---|---|---|---|---|---|---|
Grafikus | Ingyenes GLScene Horde3D Irrlict EMBEREVŐ ÓRIÁS OpenSceneGraph Szabadalmazott Outerra | ||||||
Fizikai | Ingyenes Box2D Golyó mókus newton ÓDA. Tokamak Szabadalmazott DMM Havok fizika PhysX | ||||||
Általános rendeltetésű |
| ||||||
Specializált |
| ||||||
A játékmotorok listája |