texture mapping
texture
texture("pname param")
Appelle la fonction glTexParamater d´OpenGLles avec les paramètres pname et param:
GL_TEXTURE_MIN_FILTER
GL_NEAREST
GL_LINEAR
GL_NEAREST_MIPMAP_NEAREST
GL_LINEAR_MIPMAP_NEAREST
GL_NEAREST_MIPMAP_LINEAR
GL_LINEAR_MIPMAP_LINEAR
GL_TEXTURE_MAG_FILTER
GL_LINEAR
GL_NEAREST
GL_TEXTURE_WRAP_S
GL_CLAMP
GL_REPEAT
GL_TEXTURE_WRAP_T
GL_TEXTURE_BORDER_COLOR
GL_TEXTURE_PRIORITY
Par défaut les mappes sont initialisées à ("GL_TEXTURE_MIN_FILTER GL_NEAREST").
texture brush
texture brush(id1)
Returns the identifier of the image associated with the
brush id1 of type texture.
texture brush(id1)=id2
Changes this identifier.
Note:
When displayed at the point (x,y) the brush id1 will be filled
with the window (x,y,x+nx-1,y+ny-1) of image id2 (with
(nx,ny = radius brush(id1).
texture directory
texture directory("dir")
Construit texture name=dir/*.ima et retourne le nombre de ces fichiers.
Remarque:
si dir contient des directorys dir1, dir2, .. contenant des fichiers *.ima les
noms de ces fichiers sont arrangés dans des objets texture directories name diri,
voir edit texture
Options:
Options:
dim(nx,ny): modifie la taille des fichiers *.ima.
memory: les fichiers sont chargés en mémoire.
NP(nd): seulement nd dossiers sont chargés,
la valeur par défaut est le nombre de dossiers en mode memory et 3 en mode no memory
(les autres sont dynamiquement lus).
read(num): charge les fichiers dans les images [num,num+1,...] (obligatoire).
texture directory NP
Retourne le nombre des directorys chargés de texture directory
Options:
disk: retourne le nombre de tous les dossiers de texture directory
texture fac
texture fac(f) vol(id)
Retourne le numéro de la texture associée à la facette f du volume id.
texture fac(f) vol(id)=num
Modifie ce numéro.
Remarque: texture vol et texture fac vol sont incompatibles, l'une détruisant l´autre.
texture generate
texture generate vol(id)
Retourne la propriété texture generate property of vol id
automatiquement générée par la commande
image dim texture
texture image
texture image(id)
Retourne le numéro de la texture associée à l´image id.
texture image(id)=num
Modifie ce numéro.
texture image NP
Retourne le nombre de fichiers *.ima lus par texture directory.
texture interpol
texture interpol obj(id)=ni
Construit la propriété texture interpol de l´objet obj id
(obj peut être vol ou image):
cpt
ni: nombre d´ images interpolées
debug
bit1, inc_bit1, number1, nz1
bit2, inc_bit2, number2, nz2
law
fbit1, fbit2
speed
type1, type2
numéro du directory
nb_limit, limit
Si obj=vol permet d´animer des textures sur des grilles à partir d´mages 3D.
Voir un exemple simple dans basic1_texture._interpolfunc
Si obj=image permet d´animer des images.
texeture interpol bitmap obj(id)
Retourne (bit1,bit2)
texture interpol debug(d)obj(id)
fait texture interpol debug obj(id)=d.
si(d==1): mode debug, imprime des informations.
texture interpol directory obj(id)
Retourne directory
texture interpol directory(d)obj(id): modifie directory in [1,texture NP[
Permet de limiter les images à celles de ce directory.
texture interpol law obj(id)
Retourne law
texture interpol law(x1,y1,0, x2,y2,0, ...)obj(id)
Modifie law.
texture interpol limit obj(id)
Retourne limit.
texture interpol limit obj(id)=d1,d2,...,dn
Restreint les directoriys à di.
type obj(id)=0 || 1: directorys périodiques ou aléatoires.
texture interpol name obj(id)
Retourne le nom du cirectorry courant du volume id.
Options:
image(num): retourne le nom de l´image num du cirectorry courant du volume id.
texture interpol number obj(id)
Retourne number1,number2.
texture interpol number(number1,number2)obj(id)
texture obj(id) est number1,number2 en boucle.
texture interpol number(number2)obj(id)
Modifie seulement number2 en préservant number1 permet de dé:marrer
une seconde couche de texture.
(continuement avec l´option law).
texture interpol secz obj(id)
Retourne (nz1,nz2)
texture interpol speed obj(id)
Retourne speed de bitmaps.
interpol texture speed vol(id)=s
Modifie cette vitesse.
texture interpol type obj(id)
Retourne type
texture interpol type(s)obj(t) ou
type texture interpol type obj(t) : modifie type
type(-2): inchangé, changé par:
texture interpol number(num)obj(id)
type(-1): periode
type(0): random
Options:
directory(d): relative to the layer d of
directories
dans [1,texture directory NP].
texture interpol var obj(id)
Retourne 1 (directory constant), 0 (directory variable)
texture interpol var obj(id)=v
Modifie var.
edit texture interpol vol(id)
imprime ces paramètres.
texture brush
texture brush(id1)
Retourne l´ identificateur de l´image associée avec le
pinceau id1 de type texture.
texture brush(id1)=id2
Change cet identificateur.
Remarque:
Lorsque le pinceau id1 est affiché au point (x,y) il sera rempli
avec la fenêtre (x,y,x+nx-1,y+ny-1) de l´image id2 (avec
(n,ny = radiusr brush(id1).
texture validate vol
Animation de texture.
Animation de textures.
Principe
Des multi niveaux de textures sont définies sure une grille id par:
texture vol(id)=n1,n2,... et
transp texture vol(id)=t1,t2,....
Une variation automatique des transparences et des validations des volumes
permet d´animer ces textures.
Propriété par défaut texture validate du volume vol(id):
flag 0
number > 0
image = 0
period = 0
interpol = 0
val = image 3D associé à la texture
bit = 0, inc_bit = 1 (float) bit = 0.0
speed = 1
nz = nombre de bitmaps
inc = incrément d´image
loi de transparence
type = "period puls rand"
Principle
Multi layers texture are defining on a grid by:
texture vol(id)=n1,n2,... and
transp texture vol(id)=t1,t2,....
An automatic variation of transparencies and validations of volumes
allow animate those textures.
texture(num)directory("dir")vol(id)
Les images sont dnas le directory dir
Options:
read(num): charge les fichiers dans les images (num,num+1,...).
texture(num)validate exec(e)vol(id)
exec(0): inhibe texture num.
exec(1): active texture num.
texture(num)validate image(ima)vol(id)
Fait de l´image associée au niveau num d´être:
validate(ind): l´image d´index ind dans la liste validate name.
validate("nnn.ima"): toute image de nom nnn.ima.
texture(num)validate image(ima)vol(id)
ima est l´image associée àla texture de niveau num.
texture validate interpol(ni)
ni = nombre d´images interpolant deux niveaux de textures.
texture(num)validate law(w)vol(id)
Modifie le paramètre law de la propriété num.
texture(num)name("n1.ima n2.ima ...")vol(id)
Les images are n1.ima n2.ima ...
Options:
read(num): load files in images (num,num+1,...).
read(num): charge les fichiers dans les images (num,num+1,...).
texture validate period(p)vol(id)
period(0): stop animation (default).
period(1): im,im+1,...,im+nb-1,im,im+1,...
period(-1): im,im+1,...,im+nb-1,im,im+nb-2,...,im,im+1,....
texture(num)validate speed(s)vol(id)
Modifie le paramètre speed de la propriété num.
texture(num)validate type("t")vol(id)
avec l´option interpol:
type("period"): numéros des images = (0,1,...,nb-1,0,1,...)
type("rand"): numéros des images = rand(nb)
texture(num)validate(v)vol(id)
Fait de l´image associée au niveau num:
validate(ind): l´image d´index ind dans la liste validate name.
validate("nnn.ima"): toute image de nom nnn.ima.
Voir aussi
example
Example
Construire une grille:
grid(1)dim(800,600);
Construire une base de données d´images (101,102,...) (*.ima in directory dir):
texture directory("dir")read(101);
Rendre les textures 1 et 2 animables:
texture(0)validate(0)image(-1)period(-1)vol(1);
texture(0)validate(1)image(-2)period(-1)speed(.5)vol(1);
Construire une loi de variation:
texture(2)validate law(0,1,0, .5,0,0, 1,1,0)vol(1);
ACtiver l´illumination et les textures:
yes illum texture;
Mode interaction:
interaction;
texture vol
texture vol(id)
Retourne le numéro de la texture associée au volume id.
Remarques:
1) une texture ne peut être définie que sur un volume ayant des
secx et des secy (ball, geod, grid, prism, pipe, rev).
Pour tout autre volume utiliser texture fac.
2) texture vol et texture fac vol sont incompatibles, l'une détruisant l´autre.
texture vol(id)=t
Modifie ce numéro.
Transparence
Pour plusieurs textures texture vol(id)=t1,t2,..., il faut définir des
transparences par: transp texture vol(id)=tt1,tt2,...
Pour des images 3D,
bitmap vol(id) est construite automatiquement.
Utilisation:
1) Construire une image id
Soit par:
read image(id)name("nn.ext")dim(nx,ny)
ou par:
generate(2)image(id)poi(x,y)dim(nx,ny).
nx et ny doivent être des puissances de 2 (2, 4, 8, 16, 32, ...).
2) Construire des volumes affectés de texture
texture vol(id)=num.
3) Afficher
Activer yes illum et yes texture.
Afficher: displ vol.
Remarques
1) Les mappes ne sont implémentées que sur des surfaces isomorphes à des grilles (ouvertes ou fermées):
ball
geod
grid
rev
pipe
2) Les mappes sur des facettes ne sont implémentérs que pour des facettes quadrilatères.
texture name
Retourne la liste des frichiers construite par texture directory("dir")
opu par:
texture name("n1.ima n2.ima ...")
Construit la liste ("n1.ima n2.ima ...")
Options:
read(num): charge ces fichiers dans les images number num,num+1,... (num = 1 par défaut).
texture NP
Retourne nombre des fichiers chargés de texture directory read NP.
Options:
disk: retourne nombre de tous les fichiers de texture name.
texture
texture
rota
vol
Voir_aussi
texture rota
texture(x,y,z,v) rota
Retourne une turbulence de paramètres: (x,y,z) = point de l´espace
et v contrôle la turbulence
texture vol
vol
poles
turbulance
interpol
bump
procédurale
programmée
texture vol
texture vol num
Retourne les paramètres de texture 3D du volume num
texture vol num=code,datas
Le type de la texture dépend de la valeur de code
Poles de couleurs
code = 1:
datas = D1,D2,...
Di = (r1,r2,r3,r4,r5,v1,v2,v3,v4,v5,b1,b2,b3,b4,b5)
r1,v1,b1 = amplitudes
r2,v2,b2 = fréquences
(r3,r4,r5), (v3,v4,v5) et (b3,b4,b5) = centres
La couleur au point (x,y,z) est calculée par:
r = SIGMA(de 1 à np) (r1 * sin(2*PI*r2*distance((x,y,z),(r3,r4,r5))))
v = SIGMA(de 1 à np) (v1 * sin(2*PI*r2*distance((x,y,z),(v3,v4,v5))))
b = SIGMA(de 1 à np) (b1 * sin(2*PI*r2*distance((x,y,z),(b3,b4,b5))))
Turbulance
code = 2:
Turbulence
datas=r,v,b: entre .000001 et 1
code = 3:
Interpolation de textures
datas = n1,z1,n2,z2
ni = numéro d´une image
zi = profondeur (par rapport à l´eye) de l´image ni
La couleur au point (x,y,z) est calculée par interpolation, sur les z,
des couleurs en (x,y) des images n1 et n2
Bump mapping
code = 4
datas=dx,dy,dz
La normal est bruitée de (dx,dy,dz)
Bump mapping aléatoire
code = 5
datas = dx,dy,dz
La normal est bruitée d´une quantité aléatoire d´amplitude (dx,dy,dz)
Procédurale
En langage anyflo)
texture vol num="name"
Affecte la fonction de texture "name" au volume num. Lors d´un affichage
(si yes texture est actif) la fonction "name" sera exécutée à chaque
affichage de pixel dont la couleur sera prise égale à la valeur retournée
par la fonction col.
Remarque:
Une telle fonction peut utiliser les fonctions suivantes:
poi: Qui retourne les coordonnées du point 3D actuellement affiché
col: Qui retourne la couleur de ce point
normal: Qui retourne la normal em ce point
col(r,v,b): Qui affecte une nouvelle couleur en ce point (définit une
TEXTURE3D)
normal(nx,ny,nz): Qui affecte une nouvelle normal en ce point
(définit un BUMP-MAPPING)
Exemple:
name()
{
w=poi;x=w[0];y=w[1];z=w[2]:
r=cos(x/10):v=sin(y/10):b=cos(z/10):
col r,v,b:
}
Programmée
En langage C)
code < 0:
datas = ...
La couleur au point (x,y,z) est calculée par la fonction
texture3d_utilisateur(code, pd, cont, p_col) du fichier utilb.c
code = 20: Texture 3D (animée sur le disque)
datas = x1,y1,z1,x2,y2,z2,i1,i2
La texture suivante doit être un name de fichier image .raw
Exemple:
texture(0)vol(1)=20,-200,-200,-500,200,200,1000,1,1000;
texture(0)vol(1)="A";
Chaque point(xa,ya,za) du volume(1) prend la couleur du pixel(x,y)
de l´image Azzz.raw de dimensions (dimx,dimy).
x varie entre 0 et dimx quand xa varie entre x1 et x2.
y varie entre 0 et dimxy quand ya varie entre y1 et y2.
z varie entre i1 et i2 quand za varie entre z1 et z2.
Remarques:
1) code < 0: Permet de définir plusieurs types de textures
pd est un pointeur vers les datas
cont est un pointeur de type struct Contour vers le point
cont->xa, cont->ya, cont->za sont les coordonnées absolues
cont->nx, cont->ny et cont->nz est la normal
cont->r, cont->v et cont->b est la couleur
2) Il est nécessaire, pour utiliser cette variante, de modifier le fichier
utilb.c et de relinker anyflo (les fichiers utilb.c, les objets et makefile
se trouvent dans le directory de l´environnement)
Voir aussi:
generate texture vol
no texture
yes texture
Voir aussi: