Desde ArchiCADero, un rincón de Diseñadero…

Bienvenidos otra vez a nuestro ArchiBLOG, apreciados lectores y usuarios de ArchiCAD. Venimos para hablar sobre un tema que no tiene demasiada documentación. El GDL y sus pasos de gigante hacen que se vayan creando dudas atrás sin que hayan muchas respuestas al respecto y haya que investigarse. No todos somos unos gurús del GDL o simplemente no tenemos el tiempo de investigación o motivación de indagar un terreno casi inexplorado como es el desarrollo del GDL. Venimos a hablar de una linea de código específica que ya la última vez hablé de lo importante que era y es la textura. Si, un Master GDL puede albergar materiales ordenador creados por nosotros mismos y solo tenemos que modificar este script si queremos modificar un material en específico sin tener que modificar todos los objetos que compartan dicho material. ¿Pero qué tiene esto que ver con las texturas? Cuando definimos un material, este material puede contener una textura e incluso una trama. Para ello definimos antes la textura. Si nos vamos a la guía de referencia de GDL nos dice que se hace tal que así:

DEFINE TEXTURE name expression, x, y, mask, angle

name: name of the texture.
expression: picture associated with the texture. A string expression means a file name, a numerical expression an index of a picture stored in the library part. A 0 index is a special value which refers to the preview picture of the library part.
x: logical width of the texture.
y: logical height of the texture.
mask: mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7 + 128*j8 + 256*j9, where each j can be 0 or 1.
Alpha channel controls (j1… j6):
j1: alpha channel changes the transparency of texture,
j2: Bump mapping or surface normal perturbation. Bump mapping uses the alpha channel to determine the amplitude of the surface normal,
j3: alpha channel changes the diffuse color of texture,
j4: alpha channel changes the specular color of texture,
j5: alpha channel changes the ambient color of texture,
j6: alpha channel changes the surface color of texture,
Connection controls (j7… j9): (If the value is zero, normal mode is selected.)
j7: the texture will be shifted randomly,
j8: mirroring in x direction,
j9: mirroring in y direction.
angle: angle of the rotation.

Quiero puntualizar en un dato de la Mask, el punto j7, si en el Mask ponemos 64 o un valor que contenga al 64 (65=64*j7+1*j1; 192=64*j7+128*j8; etc.) el material tendrá la propiedad de colocarse de manera aleatoria. ¿Para qué sirve esto? para hacer materiales como arena, hierba, etc. El objeto se coloca y se repite de manera aleatoria para evitar que el ojo humano detecte el patrón de la textura. Esto es fácilmente si leemos la guía de referencia. ¿Por qué hablo de esto? ¿Y qué tiene que ver con el CineRender? Voy al grano. Este parámetro lo entienden distinto tanto el motor interno de ArchiCAD como CineRender. El motor interno entiende que colocas la textura en un punto y luego repite aleatoriamente alrededor de él mismo, pero el motor de CineRender coloca esa textura inicial en un punto aleatorio. Por eso, cuando veía la textura con el motor interno lo tenía como yo quería y cuando hacia un render, este no aparecía igual debido a esa forma de interpretar el valor del Mask.

Espero haber solucionado algún problema similar que os estuviera dando dolores de cabeza.

Soy Javier Farratell, un saludo desde ArchiCADero