Off piste simulator part 3

Off piste simulator part 3

Jag har några förbättringar för dig sedan sist! Nytt i den här versionen är terräng, en skidåkare och lite snöpartiklar. I denna demo, har jag försökt att kombinera olika värden för att se hur åkaren och snön påverkas. Alla parametrar är sammankopplade, så man kan få ganska coola resultat.

Terräng

Jag nämnde att jag kunde lägga till effekter till varje lager i höjdkartan/texturkomp. Jag har nu lagt till perlinbrus till basskiktet. Förskjutningen för varje oktav är densamma som spår-lager-rullning så de är synkroniserade med varandra. Genom att ändra storlek på y-skalan för bruset så fick terrängen ett mer utsträckt utseende, som åsar eller snödyner, skapade av vinden. Det är ett enkelt exempel på distorsion och fler parametrar och effekter kommer att läggas till för att skapa olika backar. Jag ökade också upp höjd-värdet vid snowboardåkarens position. Lägg märke till hur skidåkaren flyter ovanpå terrängen minus snödjupet och beroende på aktuellt tryck.

Skidåkaren

Killen är en fullt riggad modell importerad från 3d studio max. Jag har precis börjat testa stödet i Away3D, det är därför han ser ut som en rookie. För närvarande så kontrollerar jag bara ledrotationer, men senare ska jag försöka lägga till ben-animationer och poser, speciellt om jag lägger till hopp och trick. Jag försökte flytta lederna upp och ner, men jag kunde inte lösa det med rätt IK och utan att förstöra nätet. Jag är säker på att den metoden också skulle vara ganska CPU-intensiv med alla rekursiva översättningar som pågår i IK. Jag måste gräva djupare i det senare.

Bara för sakens skull, jag är faktiskt ingen skidåkare, så kanske rörelserna är helt fel eftersom jag aldrig ens provat en snowboard.

Partiklar

Jag lade också till en del snöpartiklar, eller animerade sprites för att vara mer specifik. Animationen är dynamisk beroende på hastighet och tryck. Om trycket ökar och snön är djup så kommer partikeln att flyga längre.

Jag antar att nästa gång ska jag försöka göra skidåkaren kontrollerbar.

Offpist-simulator

Dags för ytterligare ett steg i detta snöiga experiment. Jag kan inte låta bli att känna att jag har tappat känslan just nu med alla kickass 3D-demos för den kommande flash 3D API molehill. Naturligtvis så handlar det inte bara om mängden trianglar, utan också den kreativitet och kärlek som lagts ner i dem du har. Hur som helst, jag hoppas att du kommer att gilla det här stycket medan vi alla väntar på frälsningen.

För att nämna några av tilläggen till denna version så har jag lagt till collada-animationer, en bakgrundsvy, olika kameravinklar inklusive den typiska fisheye-linsen som ses i många snowboard-videor. Men huvudfunktionen är att du nu kan styra den och göra snygga bezier-kurvor i snön själv.

Du har tre olika alternativ att spela med:

Tangentbord

Styr med piltangenterna. Tryck på nedåtpilen för att böja knäna och pressa ner snön lite hårdare. Med denna metod så är det enkelt att hålla ett kontinuerligt tempo, men det känns lite statiskt.

Mus

Enligt mig ett lite mer dynamiskt sätt att få till mjukare svängar och mer kontroll. Tills du hittar ditt tempo så kan det se lite roligt ut, eftersom motorn behöver ett tidigare varv för att beräkna lutningsvinkeln. Försök att flytta musen fram och tillbaka som en båge över sluttningen för att få en balans mellan hastighet och tryck, som simulerar g-kraften när du surfar genom snön.

Webbkamera

Det här är ganska så roligt att leka med. Jag gillar tanken på att röra sin egen kropp för att kontrollera rörelsen. Algoritmen för ansiktsdetektering stjäl lite CPU, så det är kanske inte det bästa valet. Använd samma teknik som med musen. Y-axeln styr trycket. Kalibrera dig själv mot webbkamerans förhandsvisningsbild för att hitta en bra position.

Alternativa kontroller

 

Multi touch

Jag har ingen multi-touch-styrplatta, annars hade det varit coolt att styra varje fot med ett finger, som en fingerbräda. Eller en wacom-board, med olika trycknivåer.

Gyro

Skulle vara ännu coolare att styra kortet i 3D. Eller kanske koppla en wii-kontroll till den?

Off piste simulator part 3

Animering

För att få en naturlig och korrekt vändning så måste karaktären luta kroppen genom hela svängen, nästan innan svängen ens börjar. Så hur vet vi då vilken fas av svängen vi befinner oss i? Vi kunde ”spela in” positionen och interploatera och justera den efteråt, som en bezier-ritapplikation. Men jag vill inte ha den här förseningen eftersom det påverkar responsen och känslan av att åka i realtid. Jag kom på ett annat tillvägagångssätt. Jag har två markörer, xMin och xMax.

Varje gång en sväng når sin högsta eller lägsta position så uppdateras värdena. Jag har då en beräknad räckvidd för nästa sväng (om jag antar att nästa sväng blir lika lång). Den aktuella x-positionen jämförs sedan med estimatområdet och jag fick ett normaliserat värde mellan 0-1. Nu kan jag lätta på det värdet med en Sine.easeInOut-funktion. Det lättade värdet används sedan för lutningsvinkeln. Om du gör en kortare eller längre sväng än förväntat så kommer det förstås att se lite annorlunda ut, eller innan du hittar ditt tempo, men det ser fortfarande ok ut.

Offpistsimulator: Spår

Om du, som jag själv, gillar alpina vintersporter, så kommer denna lilla leksak att få dig på gott humör. Föreställ dig att du har klättrat hela vägen upp på berget, innan liftarna börjar fylla berget med människor. Du vill vara säker på att du får åktur på ny helt orörd snö hela vägen ner. Du står nu på toppen och ser solen gå upp bakom en närliggande topp. Det är du och berget… jag älskar den känslan!

Detta är den första delen av det här experimentet med att göra ett offpist-simulator/spel i Away3D. Det första steget är att skapa backen och skapa spår i snön.

Några noteringar; Jag börjar med en bitmapp fylld med färgvärdet 0x80000. Den fyllningen representerar mitten av förskjutningen. Jag ritar sedan spåret till en annan BitmapData som sträcker sig från svart till rött. För att göra rullningseffekten hittade jag en metod som jag aldrig har använt förut: BitmapData.scroll(x,y). De två lagren komprimeras till en enda bitmapp. En fördel med att använda lager är att jag kan lägga till brus, skuggor och andra effekter till varje lager.

Höjdkartan konverteras sedan till en normalkarta med NormalMapUtil och en textur med paletteMap. Nu har jag det jag behöver för att skapa ett snyggt phong-skuggat Pixelbender-material. Rutnätet har väldigt få trianglar (25×25 segment), jag måste spara lite cpu för karaktären och andra saker. Jag gör inga realtidstrianguleringar heller, så i vissa fall börjar hörnen hoppa runt. Jag måste acceptera det för tillfället.

Jag vet inte riktigt resultatet av alla framtida delar än, men nästa steg är att lägga till en karaktär och några kontroller.

Det var allt tills vidare. Tack för att du läser!

Lämna ett svar

Din e-postadress kommer inte publiceras.