Nytt i forumet
Senaste privatannonserna
Prylar säljes, köpes, bytes och skänkes
| 2012-06-06, 11:13 | #1 |
Bubben97Medlem Registrerad: dec 2011 |
Skapa grafiken i ett spel
Hej!
Hur fungerar egentligen grafiken i ett spel när man skapar den, man kan knappast göra 50 olika bilder/sek med en marginell skillnad så de rör sig. Jag har själv kommit till den punkten då jag gör simpla spelmotorer utan grafik i C++ och därmed börjar jag undra hur man lägger till grafik, skriver man all kod själv, finns det annimeringsprogram osv. Om man sedan ska lägga till enkel grafik till ett spel, vad ska man börja med? OpenGL/DirectX Tacksam för svar //JO |
|
|
| 2012-06-06, 22:06 | #6 |
iXamMedlem Plats: Stockholm Registrerad: jan 2004 |
Citat:
3D-modeller kan skapas i en mängd olika program såsom 3D-Studio Max, Maya, Blender osv. http://en.wikipedia.org/wiki/3D_modeling |
|
|
| 2012-06-06, 22:15 | #7 |
swehunter2000Medlem Plats: östersund Registrerad: jan 2011 |
Komplicerade mattematiska uträkningar, och en jäkla massa texturer, sedan kan grafik motorn dra, trycka ihop flytta och sätta alla texturer där dom behövs för att få scenen att se bra ut. enkelt förklarat..
Med skelett menar han i princip att en gubbe har en ram som texturerna ska följa med, säg att du har en funktion som är "Vänster ben fram" så flyttas själva ramen och texturerna flyttas om och modifieras för att följa ramen och se så bra ut som möjligt. (En textur är en bild) Detta stämmer inte till 100% då det är svårt att förklara det på ett enkelt sätt utan förlora viss information.
__________________
CPU:Intel Core I7 930 (Socket 1366) MOBO:Asus P6T-SE GPU:Sapphire Radeon HD6870 FleX RAM:Corsair XMS3 Vengeance 1600 MHz 12GB (Tripple channel) SSD:Force GT 120GB HDD:Samsung Spinpoint F3 1TB Chassi:NZXT M59 PSU:Antec 550 Watt Modulärt Ljud:Creative Sound Blaster X-Fi Titanium Fatal1ty Champion Series Hörlurar: AKG K 240 MK II Högtalare: Logitech X-530 Mus: Logitech MX518 Matta: steelseries QcK Mini Skärmar: en BenQ 22' och en Samsung 19'. V.v. citera mig för att få svar. |
|
|
| 2012-06-06, 22:20 | #8 |
Andre_HMedlem Plats: Östersund Registrerad: aug 2007 |
Man gör inte 50 3D-modeller per sekund animation, man gör modeller med skelett och bestämmer ledernas vridning vid vissa tidpunkter så "tweenar" datorn emellan dem och mellan olika animationer. Tror det är bäst att köra på någon färdig motor typ unreal engine om man ska göra något så avancerat
__________________
mobo Asus M4A88TD-M EVO/USB3 cpu 1100T kylare Noctua NH-D14 gpu 6850 SCS3 ram 16GB 1600MHz ssdX25-M 80GB eyefinity-setup 3 * 40" NEC P401 Public display psu Corsair AX 850 eaan - " Att det är så många som kör i fullskärmsläge. Personligen känns det som ett totalt slöseri av skärmyta." |
|
|
| 2012-06-06, 22:30 | #9 |
filipcombatMedlem Plats: Linköping Registrerad: jun 2010 |
Om jag inte hade varit så slö så hade jag iaf försökta göra en grafikmotor
__________________
ASUS Maximus V Formula - Intel Core i5 3570K - Antec Kühler H2O 620 V4@Cougar Vortex 120MM PWM PnP - Corsair CL9 1600Mhz Vengeance LP 8GB - Silverstone Strider 750W Silent 80+ Gold - Samsung 840 250GB SSD- Fractal Design Define R4 - KFA2 GTX670 - EIZO 23'' FS2333-BK - Cooler Master Storm Trigger - Mionix Naos 3200 - Mionix Propus 380 - Cooler Master Sirus 5.1 - Sony Xperia Z |
|
|
| 2012-06-06, 22:46 | #10 |
CindoriMedlem Plats: Lund Registrerad: sep 2010 |
Grunderna är väl först och främst en fysikmotor samt 3d-modeller av objekt
Om du undrar hur tex. man gör animationer för hur en snubbe ska springa i tex. BF3 så fäster man sensorer på en riktig skådespelare som spelar in rörelserna. Dessa spelas sedan upp på en 3d-modell av en soldat i spelet. |
|
|
| 2012-06-11, 17:55 | #14 |
Dalton SleeperMedlem Plats: där solen lyser över 12 Registrerad: sep 2003 |
Dock innan man ger sig in på 3D så kan det vara bra att ha ett antal mattekursen i bagaget, gärna från högskolan =)
Förr i tiden ritade man alla rörelser för exempelvis en gubbe i ett 2D-spel (tidskrävande, jobbigt, och ofta få hackiga rörelser). Tidiga 3D-spel hade också vissa fasta 3D-modeller som det bläddrades bland (hackiga rörelser). Även idag använder man 2D-bilder i 3D-spel där rörelser är ritade för hand, dock brukar dessa vara förenklingar och användas på långt håll där man inte ser så stor skillnad. Så, 2D-modeller brukar ritas för hand, och som sagts ett par gånger så modelleras 3D-modeller i 3D-program, eftersom modellen är tredimensionell och kan synas från alla håll så behövs endast denna modell (med vissa undantag). För att modellen ska få material så "lägger" man på bilder (texturer) för varje triangel (som modellen är uppbyggd av) i 3D-programmet. För att modellen skall röra sig så binder man delar av den till ben (skelett), om ett ben rör sig så rör sig delen på modellen som är ansluten till denna. Man anger också villkor för rörelser i skelettet som man kan röra sig mellan i själva spelet. Exempelvis ett armveck skulle kunna röra sig ca 180 grader (halvt varv) på en normal person, annars skulle man kunna böja armen bakåt (ajaj), det man sedan gör i spelmotorn är att gå upp & ner i detta intervall så att armen rör sig jämnt & fint, modellen hänger med benen som rör sig, materialet hänger med modellen, och vipps vi har en animerad nisse... Hm, detta var inte så tydligt som jag trodde det skulle bli, men men.
__________________
... I'm a dishwasher, yes I am ... i7-3930K @ 4.5 GHz | 32GB Corsair Dominator GT @ 1866 MHz | Rampage IV Extreme x79 | 2 x 7970 OC 3GB @ 1.0 GHz/1.5 GHz | Antec Quattro OC 1.2 Kw | Samsung LE40C655 40" | SteelSeries Siberia V2 | Pioneer HTP-070 5.1 |
|
|
| 2012-06-11, 18:07 | #15 |
Alpha77Medlem Registrerad: apr 2012 |
Citat:
![]() Exempelvis härifrån http://www.daz3d.com/ |
|
|
| 2012-06-12, 02:19 | #16 |
edizMedlem Plats: Norrköping & Karlskrona Registrerad: jun 2011 |
Om du vill pröva jobba med 3D grafik bör du läsa linjär algebra, det är vad 3D är uppbyggd på och det finns inga genvägar, hela iden är bara i princip linjär algebra. Allt du gör, transformerar (flyttar), roterar och skalar objekten i världen görs med matriser (matrix).
2D - grafik: Två dimentioner: x och y 3D - grafik Tre dimentioner: x, y ,z 3D världen är byggt av polygoner (trianglar), ju mer trianglar, desto snyggare men också dyrare. En polygon består av 3 vertex (en punkt som beskriver ett hörn i en specifik geometrisk form. En punkt är en koordinat i 3D miljön, xyz) punkter som formar en triangel (tre hörn). Skillnaden från 2D är att 3D har ett djup. I directx, som är ett left handed coordinate system har sitt djup i z led, höjd i y led och vänster/höger i x led. Ett objekt i en 3D scen kallas för mesh. En mesh består av flera vertexpunkter, normaler och textur koordinater. Dessa 3 kombinerat skapar en virtuell objekt i en 3D värld som exempelvis en pansarvagn i battlefield 3. När man ritar ut en mesh i 3D scenen(renderar), så har man alla vertex punkter lagrade i en så kallad vertex buffer. Dessa vertex punkter skickas från CPU till grafikkortet. Man skickar också eventuellt med Normaler och textur koordinater (ifall man vill lägga på en textur eller skapa ljus eller andra effekter. Att skicka bara med vertex punkter, kan man skapa de virtuella 3D objekten, fast utan någon som helst effekt. Bara en simpel modell). Man kan programmera hur grafikkortet ska hantera dessa vertexpunkter,normaler och textur koordinater. Språket man programmerar i kallas för HLSL (DirectX). OpenGL använder GLSL. För att rendera stora miljöer med mycket objekt, krävs det att man optimerar renderingen. Tänk dig själv att rendra miljoners polygoner varje tick. I 3D måste man också optimera 3D miljön, genom att klippa bort (culling) det som inte behöver renderas. Vi behöver bara rendera det vi ser och det finns en del tekniker för detta, vissa enklare än andra svårare. Om du vill lära mer hur själva renderings processen fungerar. Sök på "Rendering Pipeline". 3D är mycket komplicerat. Jag uppmanar dig att lära linjär algebra först och sen köp en 3D bok och lär dig 3D pipelinen och de olika begreppen. Förstå sig på hur 3D världen fungerar. 3D lär man sig INTE på en dag. Det är mycket matte och mycket tänk. Speciellt om du vill programmera det i diretcX och det är skillnad på att programmera i dx9,dx10 och dx11. Senast redigerad av ediz 2012-06-12 klockan 11:08.
__________________
OS: Win7 x64, GPU: Geforce Gigabyte GTX580 SOC CPU: Intel i5 2500k (4.5gHz), MB: Asus P8P65 PRO Rev(3.1), PSU: XFX 750w (modular), RAM: 2x Crosair Vengence 1600mz 4024mb Cooling: CoolIT ECO A.L.C CPU COOLER Chassi: Raven rv03 |
|
|
| 2012-06-12, 12:13 | #17 |
Alex87Medlem Plats: Falun Registrerad: feb 2010 |
Ett skelett består egentligen av en Array med matriser. Matriserna animeras i ett modelleringsprogram, tex 3dsmax. En grafiker "binder" olika vertexer av en mesh till olika matriser i skelettet och ger dom ett float-tal mellan 0.0 och 1.0, detta tal kallas "vertex weight" och det talar om för motorn hur mycket en vertex ska påverkas av skelett-matrisens transformation.
När modellen är riggad och klar, och skelettet och dess animation är exporterat, då behöver bara vertex-shadern multiplicera in vertexerna i rätt matris innan rendering, och det var kort och gott hur det funkar Skickades från m.sweclockers.com |
|
|
Redaktionens senaste nyhetsrubriker
Prylar säljes, köpes, bytes och skänkes