GLScene | |
---|---|
GLScene interface | |
Type | Grafik motor |
Udvikler | Mike Lischke (oprindelig forfatter), Eric Grange (primær udvikler fra 2000 til 2005), andre |
Skrevet i | Delphi , FreePascal , C++ |
Operativ system | Cross-platform software |
nyeste version | 1,8 ( 1. januar 2019 ) |
Licens | Mozilla Public License 2.0 |
Internet side | glscene.sourceforge.net |
GLScene er en grafikmotor til at skabe applikationer på tværs af platforme i programmeringssprogene Delphi , Free Pascal og C++ , ved at bruge OpenGL -biblioteket som en applikationsprogrammeringsgrænseflade . GLScene er gratis software og er licenseret under Mozilla Public License . Med den bliver programmering af 3D-grafik i Windows nemmere og hurtigere. De seneste versioner af motoren er også tilgængelige i Lazarus -programmeringsmiljøet til oprettelse af applikationer til Linux og andre operativsystemer.
Udviklingen af denne motor startede i 1997 af Mike Lischke [1] og version 0.5 blev udgivet som open source. Yderligere udvikling af GLScene blev videreført af Eric Grange, og efter 2006 vedligeholdes af udviklingsteamet. I øjeblikket er motoren blevet fyldt op med nye funktioner og er blevet hurtigere takket være forskellige optimeringer.
GLScene giver programmører mulighed for at skabe 3D OpenGL-objekter i design-tid ved hjælp af grænsefladen vist på billedet. Et stort antal objekter og yderligere visuelle komponenter VCL hjælper programmører med at skabe 3D-grafikapplikationer til Delphi, C++Builder og Lazarus.
Downloadbare modelfilformater: 3ds, obj, vrml, smd, md2, md3, nmf, oct, lwo, b3d, gl2, gls, ms3d, Nurbs, lod og nogle andre.
Gemte modelfilformater: glsm, obj og smd.
Understøttet fysik: ODE , Newton Game Dynamics . Der er også en lille egen motor til beregning af kollisioner, under hensyntagen til lovene om bevarelse af momentum DCE.
TGLCamera er et kameraobjekt. Dette er det punkt, hvorfra man ser på den tredimensionelle verden. Kameraet kan placeres og det mål, det kigger på. Ved at variere dens FocalLength-parameter kan du ændre kameraets brændvidde. Parametrene DepthOfView og NearPlaneBias afskærer fjerne og nærliggende objekter. Klipning af fjerne objekter kan i høj grad øge arbejdshastigheden.
Kameraets synsfelt er således en afkortet kegle, afgrænset på begge sider af parametrene DepthOfView og NearPlane, hvis vinkel indstilles gennem parameteren FocalLength.
TGLSceneViewer er et objekt til visualisering af en 3D-verden. Du skal smide det på formularen og indstille kameraegenskaben til det, det vil sige at angive det kamera, hvorfra du skal se på verden. Derefter vil det vise, hvad det angivne kamera ser.
TGLDummyCube - et objekt, der ikke indeholder grafik, men har en position (position), rotation i form af retningsvektorer (retning) og top (op) og skala (skala). Ved hjælp af disse egenskaber kan objektet gives forskellige positioner i rummet. Og ved at bruge flere TGLDummyCubes knyttet til hinanden, kan du skabe komplekse rumlige strukturer, såsom et skelet, hvor knogler er forbundet med hinanden af led eller led. Derudover er TGLDummyCube praktisk at bruge som et TGLCamera-mål.
TGLMaterialLibrary - materialebibliotek. Materialerne i det overføres til videokortets videohukommelse. Alle materialer kan bruges af forskellige GLScene-objekter på samme tid. Hvert materiale kan have sin egen tekstur eller bruge teksturerne fra andre materialer med sine egne skærmindstillinger. Således kan du for eksempel ved at indlæse en grøn biltekstur bruge den i et andet materiale, men ændre dens farve til f.eks. blå.
TGLFreeForm er en statisk 3D-model. Bruges til at læsse f.eks. bygninger, landskaber, træer og andre lignende genstande. To linjer kode er nok til at indlæse en 3D-model i GLScene:
// Angiv hvilket materialebibliotek der skal bruges. GLFreeForm1 . MaterialLibrary := GLMaterialLibrary1 ; // Indlæs 3D-modellen. GLFreeForm1 . LoadFromFile ( 'mymodel.3ds' ) ;Du skal også tilføje modellæssermodulet til anvendelser . For 3ds-modeller er dette GLFile3DS, for smd-modeller er det GLFileSMD osv . analogt. Efter indlæsning kommer modellen helt ind i videohukommelsen, og der bruges næsten ingen processortid på skærmen. Når matrixen for dette objekt ændres, sendes kun den nye matrix til videohukommelsen.
TGLActor er en 3D-model med animation. Bruges til at indlæse modeller af mennesker, monstre og andre bevægelige genstande. Indlæsning svarer til at indlæse en model i TGLFreeForm. To linjer er nok til at starte animationen.
// Indlæs modellen med skeletanimation 'mymodel.smd'. GLActor1 . LoadFromFile ( 'mymodel.smd' ) ; // Tilføj gå-animation fra 'walk.smd'-filen. GLActor1 . AddDataFromFile ( 'walk.smd' ) ; // Skift til 'gå'-animationen. GLActor1 . SwitchToAnimation ( 'gå' ) ; // Vi begynder at afspille animationen i en cyklisk tilstand. GLActor1 . AnimationMode := aamLoop ;I modsætning til modellerne i TGLFreeForm, er gengivelsen her delvist tildelt CPU'en. Når der er en ændring i modellens position med skeletanimation, genberegnes positionen af modellens toppunkter for hver position af hver knogle på hvert tidspunkt, hvorefter de sendes til videohukommelsen og vises på skærmen. Denne tilgang er langsommere, men den giver dig mulighed for at opnå næsten perfekt glatte bevægelser.
TGLPoints - giver dig mulighed for at tegne punkter på skærmen. Du skal tilføje punkter til positionslisten. For at punkterne kan farves, skal du tilføje farver til farvelisten. Hvis der kun tilføjes én farve, vil alle punkter have denne farve. Hvis antallet af farver er lig med antallet af prikker, vil hver prik have sin egen farve.
TGLLines - giver dig mulighed for at tegne linjer og splines. Linjer er defineret af punkter, som kan tilføjes til listen over noder ved hjælp af proceduren NodesAdd. Linjer ved givne punkter tegnes afhængigt af visningsmetoden LineSplineMode. Hvis det er lsmSegments, betyder hver to prikker en separat linje. Hvis lsmLines, så tegnes linjer fra punkt til punkt. Hvis en anden tilstand, så tegnes en spline over punkterne, det vil sige en glat linje, der går gennem alle de givne punkter. Linjens glathed afhænger af divisionsparameteren. Jo større den er, jo glattere er linjen. Hvis parameteren loUseNodeColorForLines er aktiveret i indstillingen LinesOption, kan der bruges en anden farve for hvert punkt på linjen. Farver er angivet i NodeColor.
Det er også muligt på forskellige måder at vælge de punkter, som linjerne er bygget langs. Metoden indstilles i parameteren LineNodesAspect.
TGLLightSource er en lyskilde, der oplyser hele 3D-scenen. Der kan maksimalt være otte i OpenGL . Derfor er der også otte af dem i GLScene. Hvorvidt en given lyskilde skinner eller ej, bestemmes af parameteren Shining.
Tre parametre er ansvarlige for lysfarven: Ambient, Diffuse og Specular. Ambient er den generelle belysning af scenen, uafhængig af lyskildens position, ligesom belysning i skyggen på en solskinsdag. Diffust - retningsbestemt lys, afhænger af kildens position. Det vil sige, at hvis overfladen er vendt væk fra den, så lyser den ikke op. Spekulært - spejlende lys. Det afhænger også af overfladen normal. Med den kan du lave lyse højdepunkter, såsom et lyst punkt på en skinnende jernkugle fra en pære.
Tre parametre er ansvarlige for dæmpningen af lysets lysstyrke afhængigt af afstanden fra kilden: ConstAttenuation, Linear Attenuation, QuadraticAttenuation. Den første er en konstant dæmpning (generelt afhænger den ikke af afstanden, men det kan simpelthen anses for, at den styrer lyskildens lysstyrke), den anden er en lineær dæmpning, den tredje er kvadratisk.
Lyskilden kan være en spotlight. For at gøre dette skal dens SpotDirection-parameter indstilles til lsSpot og angive spotlight-parametrene. SpotDirection - Specificerer retningen af spotlyset. SpotCutOff - spotlight kegle vinkel. Hvis det er lig med 180 grader, anses det for, at dette ikke er en spotlight, men en almindelig lyskilde. Hvis mindre end 90, så spotlight. SpotExponent — ændringskoefficient i lysstyrke fra spotlight-punktets midtpunkt til dets kanter.
Søgelygter bruges ofte som billygter eller lommelygter i hænderne på helten i spil.
Spilmotorer | |||||||
---|---|---|---|---|---|---|---|
Grafisk | Ledig GLScene Horde3D Irrlicht OGRE OpenSceneGraph Proprietære Outra | ||||||
Fysisk | Ledig Box2D Kugle Jordegern newton O.D.E. Tokamak Proprietære DMM Havok Fysik PhysX | ||||||
generelle formål |
| ||||||
Specialiseret |
| ||||||
Liste over spilmotorer |