dijous, 16 de febrer de 2012

Notes sobre Blender (2.61) i Python (Part I)

Útil per poder fer exportadors:

bpy.context.object #objecte actualment seleccionat


En general, per exportar un mesh, necessitem la següent informació:


  • Vertexos
    • Posició
    • Normals
    • Coordenades de textura
    • Pesos (d'animació)
  • Cares
    • Apuntadors a 3 vertexos
Per poder construir, hem de donar unes quantes voltes a les dades de Blender, ja que no estan en l'ordre que ens agradaria.

*------------------------------------------------*
|               Objecte                          |
+------------------------------------------------+
| - data:                                        |
|   *------------------------------------------* |
|   |                   Mesh                   | |
|   +------------------------------------------+ |
|   | - faces: Array de:                       | | 
|   |   *------------------------------------* | | 
|   |   |             MeshFace               | | |
|   |   +------------------------------------+ | |
|   |   | - vertices: Array de 3 o 4 ints    | | |
|   |   |   que indiquen els vertexos        | | |
|   |   |   corresponents                    | | |
|   |   |                                    | | |
|   |   | - material_index: index al material| | |
|   |   |   de la cara.                      | | |
|   |   |                                    | | |
|   |   | - normal: normal a la cara         | | |
|   |   *------------------------------------* | |
|   |                                          | |
|   | - vertices: Array de:                    | |
|   |   *------------------------------------* | |
|   |   |          MeshVertex                | | |
|   |   +------------------------------------+ | |
|   |   | - co: Array de 3 floats indicant   | | |
|   |   |   les coordenades                  | | |
|   |   |                                    | | |
|   |   | - groups: Array de:                | | |
|   |   |   *------------------------------* | | |
|   |   |   |     VertexGroupElement       | | | |
|   |   |   +------------------------------+ | | |
|   |   |   | - weight: pes de l'os        | | | |
|   |   |   |                              | | | |
|   |   |   | - group: index del grup      | | | |
|   |   |   *------------------------------* | | |
|   |   |                                    | | |
|   |   *------------------------------------* | |
|   |                                          | |
|   | - uv_textures: Mapa de                   | |
|   |   *------------------------------------* | |
|   |   |       MeshTextureFaceLayer         | | |
|   |   +------------------------------------+ | |
|   |   | - name                             | | |
|   |   |                                    | | |
|   |   | - data: Array on cada element      | | |
|   |   |   correspon a una cara             | | |
|   |   |   *------------------------------* | | |
|   |   |   |      MeshTextureFace         | | | |
|   |   |   +------------------------------+ | | |
|   |   |   | - uv1: coordenades del 1r    | | | |
|   |   |   |   vertex                     | | | |
|   |   |   |                              | | | |
|   |   |   | - uv2: coordenades del 2n    | | | |
|   |   |   |   vertex                     | | | |
|   |   |   |                              | | | |
|   |   |   | - uv3: coordenades del 3r    | | | |
|   |   |   |   vertex                     | | | |
|   |   |   |                              | | | |
|   |   |   | - uv4: coordenades del 4rt   | | | |
|   |   |   |   vertex                     | | | |
|   |   |   *------------------------------* | | |
|   |   |                                    | | |
|   |   *------------------------------------* | |
|   |                                          | |
|   | - materials: array de materials (dades   | |
|   |   apuntades per separat)                 | |
|   *------------------------------------------* |
|                                                |
| - vertex_groups: Array de:                     |
|   *------------------------------------------* |
|   |            VertexGroup                   | |
|   +------------------------------------------+ |
|   | - name: nom del grup (de l'ós que        | |
|   |   influencia)                            | |
|   *------------------------------------------* |
|                                                |
*------------------------------------------------*

Ara que ja tenim informació de les malles, per definir el material necessitem:
  • Paràmetres d'especular
  • Paràmetres de paral·lax
  • Alpha blended
  • Textures
    • Nom
    • Tipus

*------------------------------------------------*
|                  Material                      |
+------------------------------------------------+
| - specular_intensity                           |
|                                                |
| - specular_hardness: (potència especular)      |
|                                                |
| - texture_slots: Mapa de:                      |
|   *------------------------------------------* |
|   |          MaterialTextureSlot             | |
|   +------------------------------------------+ |
|   | - use_map_alpha: si utilitza l'alpha     | |
|   |                                          | |
|   | - use_map_color_diffuse: textura         | |
|   |   d'albedo (color)                       | |
|   |                                          | |
|   | - use_map_normal: mapa de normals        | |
|   |                                          | |
|   | - use_map_displacement: mapa d'alçades   | |
|   |                                          | |
|   | - texture.image: (la textura ha de tenir | |
|   |   el tipus correcte)                     | |
|   |   *------------------------------------* | |
|   |   |               Image                | | |
|   |   +------------------------------------+ | |
|   |   | - name                             | | |
|   |   |                                    | | |
|   |   | - filepath_raw: fitxer on es       | | |
|   |   |   guarda la imatge                 | | |
|   |   |                                    | | |
|   |   | - save(): guarda la imatge         | | |
|   |   *------------------------------------* | |
|   |                                          | |
|   *------------------------------------------* |
|                                                |
*------------------------------------------------*

dijous, 9 de febrer de 2012

Per què, oh, per què piratejo ("il·legalment").

Bé, fa cosa d'un any i mig, em vaig comprar un joc, el Fallout 3, a l'Steam (una botiga on-line de jocs). En aquell temps, jo era a Alemanya, d'Erasmus. Entre una cosa i l'altre, no vaig obrir el joc fins fa ben poc i, oh sorpresa, estava en Alemany i no se li podia canviar d'idioma.

Per què? Doncs per què a Alemanya es censuren jocs (sorprenent? Australia és pitjor) per la seva violència. I resulta que la versió "censurada" només està en Alemany (i no són pocs els alemanys que es queixen per que volen una "versió original" ja que no els hi agrada la traducció, encara que estigui igualment censurada). Malgrat és força obvi que no estic a Alemanya, i que no he jugat al joc, ni Valve (l'amo d'Steam), ni Bethesda (editors del Fallout 3) em volen canviar el joc, per un d'igual, sencer.

Així que hi tornem a ser. Creia que Steam havia aconseguit eliminar, en bona part, aquest problema, però ara em trobo, que per jugar bé a un joc que m'he comprat, necessito piratejar-lo. Un altre cop, la versió piratejada és millor que la oficial. I aquesta és la raó, senyors, per que existeix la pirateria. I em toca els nassos enormement que companyies del tamany de Bethesda (no culpo a Valve, en aquest cas, ja que em va ajudar moltíssim amb un problema que vaig tenir amb el Batman: Arkham City) es neguin a veure-ho. Mentre el servei que proporcionin els pirates sigui millor que el servei que ells proporcionen, no tenen res a pelar.

Així que passarà una temporada fins que em torni a plantejar comprar un joc que dugui el nom de Bethesda en alguna banda, if you know what I mean.

dimecres, 8 de febrer de 2012

Anacronismes de lateralitat política.

Aqui apunto la resposta que vaig escriure a un amic meu respecte a la demanda de la meva afirmació de "Parlar d'esquerres i dretes avui dia és un anacronisme."


------------------------------------------------------------------------------------------------------------------------------------------------------------




"Dretes" i "Esquerres" són denominacions difuses que ja poca gent sap què vol dir. En un principi haurien de demarcar diferències econòmiques de l'estil "capitalisme radical" (dretes) o "pseudocomunisme" (esquerres). La veritat és que molta gent associa les dretes a gent franquista, nacionalistes espanyols, i altres conceptes que poc tenen a veure amb el "neoliberalisme", i que en tot cas avui dia són compartits per un partit teòricament d'esquerres com el PSOE.

El resultat és, parlar de dretes i esquerres és simplificar la política a un sol eix, quan la política és una discusió multi-dimensional, on pot existir un tio neo-liberal nacionalista català (CiU), que si tira més cap a independentista té problemes per trobar-se un partit ja que no n'hi ha cap que s'avingui a les seves opinions econòmiques (els partits "independentistes" prioritzen ser "d'esquerres").

L'altre tema, amb el fracàs del comunisme i altres alternatives al capitalisme brut, les esquerres s'han quedat sense discurs, i avui dia es resumeix en "el contrari del que digui la dreta". O bé es construeixen un discurs propi i coherent, o bé desapareixen per manca d'arguments.

------------------------------------------------------------------------------------------------------------------------------------------------------------
I fins aqui el tema principal. Una mica de publicitat.

Per mi, un dels grans encerts del partit pirata català (no, no l'anomenaré "pirates de catalunya" encara que s'hi digui, per que no em dona la gana) i del moviment pirata en general, és la aposta per una democràcia directa, on jo puc escollir un partit per un seguit d'ideals coincidents, però no lligar-me a aquest per la resta de lligams "en pack".

La meva idea idílica de la política (que pot encaixar dintre de pirata.cat, però encara no hi és) és la d'una democràcia representativa-participativa. No somio en que tothom participi activament de totes les decisions de govern/parlament, ja que ho trobo impossible, no per mitjans (crec que de poder-se fer, es pot fer) sinó per que molta gent no està implicada en política, no en vol estar, i obligar-los seria un error.

És per això que mantindria el sistema de representants amb un matís: Cada ciutadà individual podria, puntualment, substreure el seu vot del seu representant i votar diferent.

En aquest món idílic, el polític perdria el seu paper de "persona de poder" i guanyaria un paper on hauria de complir 2 feines: proposar idees i defensar-les.

Fi de totxopost.