dissabte, 28 de novembre del 2015

Papiroflèxia - Ocell que mou les ales (2)

En aquesta entrada perfeccionaré el model i l'animació de l'ocell que mou les ales.

El model de l'entrada anterior tenia diversos defectes, la majoria provocats pel fet que no es tenia en compte el gruix dels plecs, de manera que les cares s'interferien entre elles en determinats moments de l'animació.

També tenia l'inconvenient que el paper es mostrava igual per les dues cares, mentre que els papers reals acostumen a tenir una cara blanca i una d'impresa.

En aquest nou model he intentat corregir aquestes mancances.

Paper amb dues cares diferents:

Per començar he preparat un nou material amb dues cares, Això ha estat possible gràcies al node geometry, que permet detectar quina cara del paper (la que està en el sentit de la normal o bé la que està en sentit oposat a la normal ) que està mirant a la càmera. El material mostra llavors un submaterial blanc o bé un submaterial amb el paper imprès.



La textura per al paper de papiroflèxia és el mateix de l'entrada anterior. l'he descarregat d'aquest enllaç:
http://thepapercraneorigami.com/wp-content/themes/paper-crane/images/n-jewelry-paper.jpg 


Primera aproximació (més realista ) als plecs:


En el plegat real, cada plec té una forma d'arc i una certa longitud, determinada per la distància entre les cares. La longitud de l'arc provoca que la mida de les cares planes vagi "disminuïnt" progressivament.

Tenir en compte de manera precisa aquest efecte requereix augmentar de manera exponencial la geometria.

Inicialment vaig  començar a modelar la geometria seguint aquest camí, però la complexitat que anava apareixent em va fer considerar opcions més senzilles.

Geometria inacabada amb el modelat del gruix dels plecs. Abandonada abans d'acabar-la.

Segona aproximació (més senzilla ) als plecs:

Després de l'abandonament de la opció anterior, he escollit fer servir una aproximació intermèdia que consisteix en imaginar que cada element de cara plana està unit als elements adjacents per una làmina elàstica.

Això té l'avantatge que permet treballar amb una geometria més simple, relativament fàcil de calcular gràcies a la trigonometria, que té en compte el canvi de textura del plec provocat per la deformació, i que per a plecs amb poca separació entre cares, no difereix gaire de la geometria real. A més a més donat que puc separar les dues cares del plec entre elles, desapareixen els fenòmens d'interferència mútua.

Plec "elàstic" (blanc)  entre les dues cares planes (blau)


En la imatge animada de sota es mostra el model geomètric en posició tancada i en posició expandida, per tal de visualitzar fàcilment les cares "elàstiques" dels plecs. Les cares elàstiques estan representades de color blanc, i les cares "rígides" amb la textura blavosa del paper.

Per tal de fer aquesta animació, he fet servir dues Shape keys diferents de la mateixa malla i una animació que mostra el trànsit entre elles.



Nova animació:

Un cop ha estat tot a punt he hagut de fer de nou l'animació del plegat, ja que els esquelets Armature que feien falta eren lleugerament diferents dels anteriors. En algunes etapes de l'animació s'han simplificat i en d'altres ha calgut posar un os Bone a cada aresta dels plecs.

He complementat l'animació amb dues càmeres diferents, la segona de les quals es mou, per a donar una visió més dinàmica i més detallada del model.

El so del cant de l'ocell (rossinyol dels aiguamolls de l'Empordà) l'he agafat, igual que en l'altra entrada, d'aquest vídeo.

I finalment aquest ha estat el resultat:


dijous, 12 de novembre del 2015

Primers passos amb Python

En aquesta entrada mostraré els meus primers passos amb el llenguatge de programació Python aplicat a Blender.

També faig aquesta entrada en solidaritat amb la meva seguidora més fidel, que està embolicada en llenguatges de programació i patint de valent amb ells, però  segur que se'n sortirà !!! Ànims !!!

Ja fa quasi un any em va regalar dos llibres sobre Blender.

El primer sobre modelatge i animació, que m'ha permès millorar força la creació i modificació d'elements.

El segon sobre el llenguatge Python. A aquest darrer no li havia pogut dedicar gaire atenció, però ara li ha arribat el moment !

Per començar, per no perdre les tradicions informàtiques, he après a escriure el text " Hola Món ! "

I tot seguit a fer petites operacions matemàtiques i a aplicar-les a Blender.

Aquí mostro el primer programa de prova, que escriu el text " Hola Món ! " i crea diverses esferes, els centres de les quals estan situats sobre una paràbola.

Script de Blender

Resultat obtingut


A continuació m'he plantejat crear la paràbola com una successió de vèrtexs units per segments. Seguint les instruccions del llibre, les d'aquest lloc web i les d'aquest altre lloc web, he pogut aconseguir-ho.

El codi  crea primer dues matrius, una per als vèrtexs i una altra per als segments i després les omple de manera paramètrica.

A partir d'un paràmetre ii (que depèn del número de vèrtexs) es calculen les coordenades de cada vèrtex, i s'escriuen a cada lloc de la matriu de vèrtexs

La matriu de segments (que té un número de llocs igual al número de vèrtexs meny una unitat) s'omple amb els números de vèrtexs consecutius
(si la figura fos tancada hi hauria un segment més, que enllaçaria el vèrtexs número zero amb el darrer)

Finalment es crea la malla i després l'objecte que té com a geometria la malla anterior.

Descripció d'alguns vèrtexs i segments




 A continuació adjunto el codi en format text, per tal que es pugui copiar i enganxar.



# **************************************
# ****  Divagacions3D.blogspot.com  ****
# **************************************
# ****  Prova 002 - Paràbola ***********
# **************************************

# Capçalera
import bpy
import math

    
# Estableix el número de vèrtexs de la paràbola
numvertexs = 16

# crea les matrius de la malla
Verts = []
Edges = []

# omple la matriu de vèrtexs    
for i in range(numvertexs):
        ii=i-(numvertexs/2)
  
        x = 5 + (1*ii)
        y = 0
        z = -4 + (0.2*ii)+(0.2*(ii**2))
        Verts.append((x, y, z))
    
# omple la matriu de segments
for i in range(numvertexs-1):
        # afegeix la vora que uneix cada vèrtex amb el següent
        Edges.append([i, i+1])
    
# crea la malla "Parabolamalla"
malla = bpy.data.meshes.new("Parabolamalla")
malla.from_pydata(Verts, Edges, [])
malla.update()
    
# crea l'objecte  "Parabola"
objecte = bpy.data.objects.new("Parabola", malla)
objecte.data = malla
    
# selecciona l'objecte creat
escena = bpy.context.scene
escena  .objects.link(objecte)
objecte.select = True 

dissabte, 7 de novembre del 2015

Castell de Foix (i 2)

En aquesta entrada completaré el modelat amb Blender del castell de Foix.

He afegit les finestres que faltaven a les torres, mitjançant l'extrusió de cares.


He modelat també el castellet de l'entrada, que per si sol és una construcció prou interessant, ja que té finestres diferents de les del castell, permòdols, contraforts, etc..

 I també he modelat les rampes que faltaven per sota del castellet de l'entrada.




A continuació ha vingut una fase de perfeccionament de la manera com les textures es projectes sobre la geometria, per tal que l'escala fos més uniforme (en les etapes anteriors es podien veure murs formats per pedres gegantines al costat de murs formats per pedres minúscules)

I finalment una fase de perfeccionament dels materials, utilitzant textures més detallades (256 x 256 píxels) i amb les seves corresponents textures de mapa de relleu (Bumpmap) en escala de grisos.

A les torres quadrades, he substituït el material dels angles per un nou material més complexe en el qual es fa servir un arxiu .png amb canal alfa (transparència).

A les parts transparents es mostra  un material idèntic al mur de pedra, a través d'un mapa UV "general"

A les parts opaques es mostren les pedres cantoneres, a través d'un mapa UV "de cantonades" que m'ha permès poder donar un aspecte més interessant a aquests detalls.



 A continuació es mostren els nodes del material de les cantonades:


També he creat uns arbres senzills, a base de 6 plans i un cilindre. Als 6 plans es mostra una textura de la capçada amb transparències, de manera que simula els espais que queden entre les branques.




I finalment he fet una composició del paisatge llunyà que es veu des del castell, per tal de tenir un fons una mica semblant a la realitat. L'he projectat sobre una esfera de gran radi exterior al model.

A continuació mostro diverses imatges del model des de la perspectiva d'un visitant, i també una animació a vista d'ocell:

Rampes d'accés i arbres


Torre d'Arget i torre del mig

Torre del mig i torre rodona




I analitzant el  resultat: Les textures es noten massa diferents les unes de les altres, de manera que hi ha massa contrasts de colors, són punts que hauré d'anar perfeccionant. La textura del paisatge té massa poc detall, caldria un arxiu força més gran.

Però serà en algun altre projecte. El projecte del castell de Foix, de moment acaba aquí.