divendres, 26 de desembre del 2014

Espeleovideojoc (1) Projecte per al 2015

En aquesta entrada esbossaré un projecte per a fer al llarg del 2015.

La intenció és fer un petit videojoc interactiu amb Blender, amb un personatge que ha de completar una sèrie d'accions per tal d'arribar al final del joc.

La idea m'ha vingut després de veure els tutorials de Físico Molon, una pàgina molt interessant sobre el tema dels videojocs amb Blender.

La temàtica bàsica serà una espeleòloga que ha de trobar una sèrie d'objectes per arribar al fons d'un avenc i treure alguna informació oculta, arqueològica o paleontològica que hi pugui haver.

El joc requerirà els següents passos:

1) Modelar i texturitzar un personatge principal

2) Crear una sèrie d'accions que fa aquest personatge:

-Cicle de caminar
-Cicle de córrer
-Cicle de pujar per una corda
-Cicle de baixar per una corda
-Cicle d'arrossegar-se
-Cicle de repòs (respiració i observació)
-...

3) Modelar i texturitzar un entorn natural :

-Muntanyes
-Boscos
-Arbres i plantes
-Cova amb pous i galeries

4) Modelar i texturitzar personatges secundaris:

-Cabres
-Porcs senglars
-Ratpenats
-Arqueòlegs i/o paleontòlegs
 
5) Crear una sèrie d'accions que fan els personatges secundaris:

-Cicle de pasturar per a animals exteriors
-Cicle de fugir per a animals exteriors
-Cicle de caminar per a les persones
-Cicle d'explicar i parlar per a les persones

6) Modelar i texturitzar objectes que caldrà utilitzar:

-Aparells de progressió
-Sacs
-Casc
-...

7) Crear una interactivitat que permeti moure el personatge i la càmara

8) Crear una lògica que obligui el personatge a comportar-se de diferents maneres segons l'entorn:

-Caminar en pla o llocs de poca pendent
-Pujar per corda en pous
-Arrossegar-se en llocs de sostre baix
-...

9) Crear una intel·ligència artificial per als personatges secundaris per tal que reaccionin a la presència del personatge principal, fugint o interactuant amb ell.

10) Crear un comptador del progrés del joc, que registri com es van complint els objectius.

... I moltes altres coses que aniran apareixent a mesura que el projecte avanci...

No em fixo cap termini per acabar-lo, aniré fent sense pressa...

De moment, per agafar inspiració, només he fet una modificació del personatge anterior (Nina) per a posar-li un casc i una granota  d'espeleòloga:







dijous, 11 de desembre del 2014

Modelat i animació d'un personatge femení (Nina)

En aquesta entrada modelaré amb Blender i animaré un personatge femení, que he batejat amb el nom de Nina, que comparteix el doble significat de nom propi i de ninot, molt adequat per al que estic fent.

He partit de la malla del ninot d'en Libellule (Sargantana) que vaig modelar en una entrada anterior del blog.


Amb molta paciència, desplaçant vèrtexs i extruïnt algunes cares, li he anat canviant la forma fins a obtenir la d'un personatge femení nu. M'he recolzat en les imatges de vista frontal i de perfil que apareixen en aquest blog per a les proporcions. He fet servir principalment les ordres desplaça (grab), extrueix (extrude) i loop cut and slide


Un cop feta la malla, he creat les costures (seams) per a desplegar la superfície de la malla sobre una superfície plana. Aquest procés recorda el d'un caçador quan espella una bèstia, fins i tot les costures es marquen de color vermell, com si fossin talls de ganivet... La gracia està en fer els talls a zones que no es vegin gaire i que facilitin el procés de desplegat (unwrap).


Detall de les costures (o talls) fets a la malla

A continuació he aplicat l'ordre de desplegar (unwrap) per a obtenir els trossos de pell de la Nina sobre una superfície plana. He escalat i reorganitzat les parts per tal que quedin en una disposició pràctica. He exportat l'arxiu a una imatge .png

Detall del desplegat. He remarcat de vermell on ha anat a parar la costura en forma de "Y" del cap

A continuació, des del GIMP, he afegit una sèrie de capes de colors per tal de formar el vestit (més ben dit la "pintura corporal", ja que la malla representa un personatge nu, no hi ha cap volum de roba ) i també els detalls de la cara. Finalment he exportat la imatge en format .jpg


Tornat a Blender i creant el material i la textura amb la imatge anterior, ja tenim la Nina texturitzada, és a dir "vestida" amb pintura corporal.


El pas següent ha estat crear un esquelet (armature) per tal de poder moure el personatge. He descartat el que vaig fer per a en Libellule i n'he creat un de nou seguint un tutorial d'aparellatge (rigging) de l'Alimayo Arango. (Thank you Alimayo !)




A continuació he assignat la influència que té cada os en un determinat vèrtex de la malla, el procés anomenat skinning, he utilitzat el mètode de  la pintura de pesos (weight painting). Ara la Nina ja no és només una figura, sinó una marioneta articulada !


Influència de l'os del cúbit sobre la malla  (vermell 100% blau 0%)

Un cop acabat el procés i fetes unes quantes proves per comprovar que la malla es deforma més o menys com toca, he creat diverses postures corresponents a diferents fotogrames del cicle de caminar. M'he recolzat en les imatges d'aquest enllaç.

He pogut comprovar l'avantatge d'animar esquelets (armatures) davant de l'animació de parts individuals (com he fet amb l'AT-AT de les entrades anteriors...), sobretot a l'hora de copiar postures completes i d'ntercanviar la postura dels membres drets i esquerres (simetria respecte l'eix X ). No hi ha cap mena de dubte que hauria d'haver fet un esquelet per a l'AT-AT...


Finalment he exportat l'animació a un format de video .avi, i aquest ha estat el resultat:



Caldria perfeccionar la malla, sobretot la part de la cara, i vista l'animació, caldria millorar la deformació de la malla a les espatlles i al pit i donar un moviment més natural als braços, però això ja queda per a una altra entrada...

He fruït molt amb aquest treball, que incorpora una mica de tots els processos que he tocat fins ara.





dimecres, 3 de desembre del 2014

AT-AT (3) Animació del cap i el coll

En aquesta entrada modelaré amb més detall el cap i el coll i animaré algunes de les seves parts.

Per començar he anat dividint en cap amb l'ordre Loop cut and slide i desplaçant vèrtexs dins a obtenir el resultat de sota.



A continuació he modelat els canons. Els grossos que van penjats a la part inferior (a la "barbeta") i els petits que van als costats (a les "orelles"), fets a base d'extruir i escalar un cercle, principalment.

Per als canons penjats he col·locat una làmpada davant la boca del canó, per a fer l'efecte lluminós del tret.

Per tal que segueixin el moviment del cap, els he incorporat a la jerarquia com a "fills" del cap.


A continuació he fet l'animació del retrocés dels canons grans, que es mouen enrere després del tret i retornen a la seva posició de repòs.

Canó dret a la posició de repòs. Canó esquerre a la posició de màxim retrocés.

I també l'animació de la intensitat de la làmpada de llum vermella que simula l'esclat lluminós del tret a la boca del canó. Està a una intensitat zero tota l'estona, però puja a 100 en el temps corresponent a un fotograma i retorna a zero també en el temps d'un fotograma. És la primera vegada que animo una variable que no és una posició, rotació o escala.

A continuació es mostra el fotograma on es dispara el canó esquerre, amb la llum vermellosa que il·lumina la cara des de la boca del canó esquerre.


El següent pas ha estat modelar l'esquelet que permetrà que l'AT-AT pugui torçar el coll: He creat un esquelet format només per ossos consecutius (les "vèrtebres" del coll).

He creat un os fictici, que permetrà orientar el cap, com a punt de control de la cadena de cinemàtica inversa del conjunt coll+cap. A l'os gran del cap li he aplicat la constrait Inverse Kinematix

El cilindre que forma el coll l'he subdividit de manera que he pogut assignar un cercle de vèrtexs a cada vèrtebra.

A continuació es mostra el diagrama de pesos dels vèrtexs per a la vèrtebra tercera (100% de color vermell, 0% de color blau).



 I, a continuació el resultat. el coll es torça suaument i "arrossega" el cap. Es mostra també el diagrama de pesos dels vèrtexs per a la vèrtebra quarta (100% de color vermell, 0% de color blau).


I, finalment la seqüencia de vídeo que he generat.





dilluns, 24 de novembre del 2014

AT-AT (2) Element mòbils de les potes

En aquesta entrada he modelat força detalls de les potes, i he animat el moviment de les petites peces mòbils de les articulacions i de la "cuixa".

També he perfeccionat alguns punts del moviment general en el que hi havia defectes de moviment.

Com que ja tenia creada una jerarquia pare-fill i l'animació amb les peces "antigues", he decidit mantenir-les com a "esquelet" en una capa oculta i crear les noves i mes detallades, fent-les filles de les antigues.
Les noves les he creat amb duplicats enllaçats, de manera que modificant una sola "cuixa" es modifiquen les 4 a la vegada.

Les peces mòbils ( 1 i 2) que corren sobre guies a la "cuixa" es mouen per que tenen una restricció "transformation" que llegeix la rotació del tram inferior de la pota i la converteix en desplaçament en l'eix vertical local de la "cuixa".

Les peces del "genoll" (Peça 3) i de l' "espatlla" (Peça 4)  giren per que tenen una restricció "transformation" que llegeix la rotació del tram inferior de la pota i la converteix en rotació de la peça del genoll.




A continuació mostro el detall de la restricció "transformation" de la peça mòbil del "genoll" (peça 3) de la pota de darrera a la dreta, que gira sobre l'eix X entre 80 i -80 graus, multiplicant per 4  l'angle de la "tíbia" d'aquesta mateixa pota (que gira entre -20 i 20 graus).



No he aconseguit entendre la lògica del moviment i rotació d'aquestes peces, tot i que he analitzat diverses seqüències de la pel·lícula on apareixen. En fí, suposo que el més important és que es moguin.

He animat també el moviment de la càmera, de manera que va endavant i endarrera i he modificat la textura del terra, per tal que sigui múltiple de la longitud recorreguda en un cicle i no s'apreciï la transició entre cicles en la repetició.



En properes entrades milloraré els detalls del cap i del cos.

dijous, 20 de novembre del 2014

AT-AT (1) Cicle de caminar

En aquesta entrada animaré el cicle de caminar d'un vehicle quadrúpede AT-AT ( All Terrain Armored Transport ), de la pel·lícula "L'Imperi Contraataca" ( Star Wars Episode V: The Empire Strikes Back ) i per a fer-ho, el  modelaré amb Blender de manera molt bàsica.

Per començar he analitzat un video de youtube amb la sequència de la pel·lícula on apareixen aquests vehicles: Video

A partir d'aquí he fet un esquema dels moviments de les cames i de la durada de cada moviment, en temps i en fotogrames. Finalment he fixat un cicle de 150 fotogrames.

Feu clic amb el botó esquerre per ampliar la imatge








El vehicle aixeca només una pota cada vegada i les altres tres es van inclinant progressivament cap endavant, fent avançar el cos. Les articulacions giren contínuament per tal de mantenir l'angle de les potes horitzontal.

El moviment cap endavant del cos no és uniforme, sinó que es concentra principalment en els moments en que avancen les potes de davant, de manera que va fent batzegades. A més a més el cos rota lleugerament sobre l'eix transversal, de manera que va fent "capcinades".

Els peus tenen una mena d'"esmorteïdors", per absorbir les sotragades, de manera que el peu "puja i baixa" respecte la pota. I també té unes "ungles" que es pleguen una mica mentre el peu està aixecat.

La velocitat d'avanç l'he fixat en 3,5 metres per cada cicle. Aquesta dada cal tenir-la en compte per a poder col·locar correctament les potes a terra (longitud del pas)

Feta l'anàlisi del moviment he modelat de manera bàsica el vehicle. Em centraré en el moviment de caminar, de manera que no m'entretindré en els detalls del vehicle, que deixaré per una altra entrada.

Model de l'AT-AT



Com que l'AT-AT no té parts deformables (excepte el coll) no faré servir un esquelet sinó que amb la jerarquia pare-fill i la limitació dels girs de les parts ja en tindré prou.

i finalment he renderitzat una versió de prova de l'animació:



En properes entrades milloraré l'aspecte del vehicle i afegiré detalls.



diumenge, 2 de novembre del 2014

Avió Polikarpov I-16 (3)

En aquesta entrada em dedicaré a l'aparellatge (rigging) de l'avió.

L'aparellatge consisteix en crear una sèrie de peces mòbils, unides entre elles per articulacions. En el cas de personatges podem parlar d'ossos i esquelets, ja que reprodueixen els ossos reals de persones i animals. Crearem també  (de vegades)  manipuladors, elements que de vegades no existeixen en el món real, però que ens permeten moure els nostres personatges (de manera similar com els fils de les marionetes mouen la marioneta propiament dita). O bé que sí que existeixen com a controls (per exemple un volant de cotxe que fa girar les rodes, activa l'intermitent, etc...)

Un avió té una sèrie d'elements (superfícies de comandament) que permeten pilotar-lo. Les superfícies de comandament es mouen quan el pilot quan el pilot mou el volant o els pedals: en aquest enllaç s'explica el funcionament i els comandaments associats a cadascun.

En el cas de l'avió faré l'aparellatge dels següents elements:

 

Per començar he modelat els controls virtuals sobre l'avió. Estan tots en una capa a part per tal de poder-los amagar fàcilment i situats físicament sobre l'avio.


A continuació he limitat el moviment/rotació possible de les agulles de control, per evitar que "s'escapin" de la seva posició o que sobrepassin el rang de rotació que els pertoca. per això he fet servir la limitació (constraint) denominada limit rotation per a les agulles giratòries i limit location per a la que es desplaça.

L'agulla que controla el tren d'aterratge només es pot moure en l'eix Z entre Z=5.4 i Z=6.4

Després he associat el moviment o rotació de cada element al seu manipulador (agulla). Per a casos senzills he fet servir la limitació copy rotation i per a casos complexes (al tren d'aterratge) he fet servir la limitació transformation.

La barra principal que suporta la roda prendrà el valor de gir sobre l'eix Y -14º quan l'agulla de control estigui a la posició Z=5.4 m i prendrà el valor de gir sobre l'eix Y 41º quan l'agulla de control estigui a la posició Z=6.4 m

Per al cas del cable que estira el tren d'aterratge, he utilitzat un òs (bone) que varia la seva escala entre la mida original i zero, per tal de simular que el cable es va recollint.

Fetes aquestes operacions, l'avió és molt més fàcil d'animar, ja que enlloc de manipular les peces mòbils (algunes de mides petites, altres amagades dins el cos, altres amb moviments complexos, etc...) n'hi ha prou amb animar un gir o desplaçament del controlador oportú.

Finalment he creat un objecte buit (empty) per a controlar la posició de l'avió, mentre que la rotació es fa girant el cos de l'avió.

Ara ja he pogut preparar una animació més sofisticada amb un envol i un aterratge sobre un aeroport (Aeroport de Sabadell, imatges extretes de Google Maps), amb una vista des de darrera de l'avió per tal de poder veure com es mouen les superfícies de comandament i el tren d'aterratge. L'animació ha quedat una mica brusca, però la intenció era provar tots aquests comandaments.

diumenge, 5 d’octubre del 2014

Avió Polikarpov I-16 (2)

En aquesta entrada milloraré alguns detalls del model i de la textura, i animaré l'hèlix i el tren d'aterratge.

Pel que fa a les millores del model i la textura són les següents:

-He afegit el petit tren d'aterratge posterior.
-He modelat la part de la cabina del pilot
-He afegit a la textura alguns detalls del morro
-He ressaltat a la textura els alerons, flaps i timons
-He ajustat a la textur a la unió de línies en les costures, per dissimular les discontinuïtats que hi havia

I aquest ha estat el resultat:



A continuació he buscat informació sobre el funcionament del tren d'aterratge. 

M'ha sigut de molta ajuda l'apartat de models del lloc web d'en Segrelles on he trobat informació del mecanisme i una animació.

I també una entrada d'un fòrum polonès sobre modelat amb un model molt detallat:

El Polikarpov I-16 tenia un tren retràctil d'accionament manual format per tres barres. El pilot el recollia fent girar una manovella que estirava un cable unit a cada roda.

La pota principal està unida al cos amb una articulació doble (detall fletxa groga) que he modelat de forma bàsica però funcional. A més a més també està articulada la part inferior de la tapa (detall fletxa blava):


Detall de la vista anterior: es mostren els dos eixos de gir

 Les altres dues potes estan unides també al cos amb articulacions dobles, una de les quals és, a més lliscant.



I per acabar la roda i el cable de recollida.

Un cop he acabat el modelat del tren d'aterratge ja he pogut fer "aterrar" l'avió. Vet aquí la primera imatge de l'avió a terra.


El següent pas ha estat l'animació de l'hèlix, que comparat amb la del tren retràctil ha estat molt fàcil.

I finalment adjunto dues animacions:

- Una vista exterior del tren amb el moviment de recollida.
- Una vista de detall de les articulacions



dimarts, 30 de setembre del 2014

Avió Polikarpov I-16 (1)

En aquesta entrada modelaré amb Blender un avió de caça. Faré una versió amb poc detall i (potser) en entrades posteriors hi dedicaré més temps, animant el moviment de l'hèlix, el tren d'aterratge, els alerons, etc...

He triat el model Polikarpov I-16, que va ser el primer avió de caça monoplà amb tren d'aterratge retràctil.

El motiu d'haver triat aquest aparell és que n'he vist força informació al CIARGA de Santa Margarida i els Monjos, incloent models a escala.

Es va fer servir a la guerra civil espanyola, a les guerres ruso-japoneses de 1939 i al front oriental de la segona guerra mundial, entre d'altres.

Els plànols els he tret del lloc web: http://harrysite.net/hsrefs/index.php/aircraft/1933-I-16

El modelat del cos ha consistit en adaptar una forma inicial (un cilindre) fins a donar-li la forma del buc de l'avió, recolzant-me en les vistes de planta, alçat i perfil. Com que l'avió és simètric he fet servir el modificador de simetria (mirror)




A continuació he deformat la part superior del cos per tal de formar la cabina i l'estabilitzador vertical:


 Per a les ales he extruït algunes cares del buc cap a l'exterior.


I, de manera similar, per als estabilitzadors horitzontals.


L'hèlix l'he modelat com un element a part, a partir d'un con i d'un paral·lelepípede.


I, a la part inferior he marcat les parts mòbils que amaguen el tren d'aterratge retràctil. De moment segueixen formant part del fuselatge. Només estan diferenciades pel color.


I les parts mòbils: els alerons, els timons de profunditat i el timó de cua. De moment segueixen formant part del fuselatge. Només estan diferenciats pel color.

Aquí dono per acabada la fase de modelat, al nivell de detall que vull, ara per ara.


A continuació m'he dedicat a fer el mapejat UV, separant les cares del model en "illes". Aquesta configuració l'he exportat a GIMP per tal de poder donar-li els colors.


 Per als colors faré dues versions.

La primera correspon als colors dels avions de la República durant la guerra civil espanyola 1936-39:



 La segona correspon als colors dels avions de la Unió Soviètica (1941):


I finalment, aquí tenim el resultat:






diumenge, 21 de setembre del 2014

Animació d'una grua d'obra

En aquesta entrada passaré de les 3 a les 4 dimensions, incorporant el temps. És a dir no generaré amb Blender una imatge estàtica sinó un petit video.

Com que als blogs no es poden penjar videos directament, he hagut de seguir un procediment, que he agafat del blog del CEIP Pere Casasnovas de Ciutadella, i que utilitza l'eina BOX.

La meva intenció és modelar i animar una grua torre de ploma horitzontal (la típica grua d'obra ) movent caixes. En aquest cas només he fet un model molt elemental de la grua, i sense textures, per tal que els temps de renderitzats no sigui massa gran.

A continuació adjunto alguns detalls del modelat de l'escena.

Element de la torre

Extrem de la ploma



Contraploma i contrapesos

Carro mòbil i ganxo
Caixes per a moure

I finalment aquesta és la nostra escena, que ens servirà per fer la primera animació.



L'animació amb Blender consisteix em marcar fotogrames clau (keyframe) per als objectes i indicar-ne l'estat de les seves propietats (posició, rotació, escala, color, etc...) i les característiques de la transició entre dos fotogrames clau.

Exemple dels moviments de la caixa 3. La línia blava representa la coordenada Z



Per al moviment del cable he fet una mica de trampa, i no és moviment, sinó que el deformo, ampliant-lo en l'eix z per a simular el moviment de baixada del ganxo i el torno a deformar, reduint-lo en l'eix z per a simular el moviment de pujada del ganxo.

I finalment aquest és el resultat que he obtingut. Hauré de perfeccionar una pila de coses, però estic content del resultat, tenint en compte que és la meva primera animació amb Blender...