Stap 9: De Software
Ik had enige ervaring met, en wist dat ik zou kunnen leiden tot een nauwkeurige bal vlucht in Irrlicht. Irrlicht is een cross-platform open source 3D-engine, en de mensen op het forum zijn absoluut geweldig op het helpen van gebruikers van newbies goeroes. Irrlicht past mijn behoeften, omdat:
- Het is open source en cross-platform, en ik nodig om te ontwikkelen voor Linux (mijn beneden mediacentrum is Mythbuntu)
- De mensen op het forum zijn ongelooflijk geduldig en behulpzaam
- Ik had ervaring met het
Het probleem dat ik had was het creëren van een volledig scherm video! Ik dacht dat ik zou maken een reeks van "Animated Billboards." Dit is een methode waarmee u een serie foto's worden geladen in het geheugen en het tarief waartegen ze spiegelen opgeven. Nou, blijkt het dat zelfs mijn snelste clip was gonna be van een paar honderd frames op 720p en het geanimeerde billboard-systeem niet ontworpen is voor dit. Ik werd geadviseerd tegen dit op het forum, maar ik probeerde toch. Nu kan ik zeker zeggen dat methode niet werkt.
Dus ging ik op de Irrlicht forums op zoek naar een oplossing. Wat ik vond was perfect: Irrlicht VideoMaster. Blijkt dat Bate, uit de Irrlicht forums, had geschreven een Irrlicht-implementatie van de Theora afspelen Library. Dit is een aardige stabiele manier Ogg Theora video afspelen. Dit betekende dat alle moest ik doen was mijn video (h.264) te converteren naar ogg, en ik kon spelen terug volledig scherm of elke grootte die ik kiezen - zelfs als een textuur! Sterker nog, ik kan meteen naar de periode (in 0.1 seconden) op de video, evenals afspelen, pauzeren, terugspoelen, enz.
Zoals u van de Irrlicht VideoMaster draad zien kunt, had ik weinig moeite het porten naar Linux. Ik gebruikte dan ffmpeg mijn video te converteren naar OGG. Vanaf daar was het gemakkelijk om in de voetbal die ik had gemodelleerd in stap 3, spelen sommige aangepaste spelgeluiden (scheidsrechter fluitjes, Vuvuzelas, een 'boot' geluid en menigte lawaai) en sommige standaard tekst op het scherm te instrueren, en de speler te informeren.
Alles wat die ik nodig naast dat was een methode voor de arduino en mijn aanvraag om te praten. Dus ik had het doel (ardiuno) Stuur een signaal wanneer de bal was deerde voor 1/2 seconde, en een ander signaal als de bal was unteed zonder het doel doordringt. Wanneer er een succesvolle kick, stuurt de arduino 3 bytes - x coördinaat, de y-coördinaat, en tijd van de vlucht.
Voor bal vlucht gebruikte ik in principe de Irrlicht (cartesische) coördinatensysteem te simuleren bal vlucht. Ik wist het richting dat de bal was op reis, en ik wist de snelheid. Alles wat ik moest doen was implementeren van zwaartekracht, simuleren van sommige draai gebaseerd op waar de bal werd geschopt en bieden een coëfficiënt van bounce, wanneer het de grond raken. Op gehanteerd tof! Alle broncode is beschikbaar op de laatste stap.
Ik een bug ontdekken-als een speler de bal schopte, en iemand stond IN het doel (een waarschijnlijke geval op het verjaardagsfeestje) de bal zou reizen met bijna oneindige snelheid en verdwijnen uit het universum. Alles nog werkte, gewoon de bal op scherm was onzichtbaar totdat u het spel opnieuw te starten. De bal was niet echt noodzakelijk voor spelen, maar het een koele factor toe te voegen. De kinderen vergeten niet. Ik heb een video van dit op de volgende stap.