Fenêtre avec transparence : double texture ?

Répondre
Partager Rechercher
Bonjour...

Voilà mon problème est simple, je souhaite créer des fenêtre avec plusieurs vitres dans un châssis, et pouvoir agir sur la transparence des vitres.

Pour l'instant, je superpose deux prims, une qui supporte le châssis de la fenêtre, les vitres apparaîssant transparentes et l'autre, qui est juste une prim dont je fait varier la transparence par un script...

Cela fonctionne plutôt bien mais je me dit qu'il doit bien y avoir un moyen de faire ça en plaquant une seule texture sur une seule prim ?

Je dispose de Photoshop CS2...

D'avance, merci de vos conseils !

Tu peux dessiner quelques textures avec des transparences différentes et changer la texture avec llSetPrimitiveParams, la nouvelle doit être contenue dans la vitre.
Tu peux aussi mettre toutes tes transparences sur une même texture et faire un décalage, ce qui évitera le temps de chargement dû à un changement de texture.
je crois que ce qu'elle veut dire c'est que tu fais des textures "completes" pour ta fenetre, une opaque et une transparente par exemple, ou avec divers niveaux de transparence (1 par image donc)

tu places ces images dans le prim qui te sers de fenetre, et tu inseres un script qui permet de changer la texture quand tu lui demandes.

En tout cas c'est ce que j'ai cru comprendre mdr
Ok...

Ta traduction m'éclaire, Calamity ! Merci !!!

ça y est je viens de comprendre !

Alors maintenant, supposons que je veuille alterner 4 textures pour 4 niveaux de transparence différents...

Y a t il une bonne âme pour me glisser le morceau de script ?

Car moi, il parait que je suis assez bon en construction, mais en script... heuuuu, NUL !!!

D'avance, merci...
Glisse les textures dans le prim et met y ce script, puis touche pour alterner les textures. Elles changent dans l'ordre alphabétique.

Code:
integer p = 0;
default
{
    touch_start(integer total_number)
    {
        if (++p >= llGetInventoryNumber(INVENTORY_TEXTURE))
            p = 0;
            
        llSetTexture(llGetInventoryName(INVENTORY_TEXTURE,p),
            ALL_SIDES);
    }
}
Un effet de va et vient ou un contrôle d'accès sont laissés en exercice.
Merci, Narita !

Mais, là, je sent que je vais vous énerver un peu lol

J'aimerais bien conserver le mode de fonctionnement que j'ai actuellement dans la maison avec mon système et qui pilote toutes les fenêtres ensembles :

Dans chaque prim destinée à jouer la transparence, j'ai le script suivant :

default
{
state_entry()
{
llListen( -37641, "", NULL_KEY, "" );
}

listen( integer channel, string name, key id, string message )
{
if ( message == "100" )
{
llSetAlpha(1.0, 2);
}
else if ( message == "80" )
{
llSetAlpha(0.8, 2);
}
else if ( message == "60" )
{
llSetAlpha(0.6, 2);
}
else if ( message == "40" )
{
llSetAlpha(0.4, 2);
}
else if ( message == "20" )
{
llSetAlpha(0.2, 2);
}
else if ( message == "0" )
{
llSetAlpha(0.0, 2);
}
}
}

Et, planqué dans le tapis j'ai ce script qui ouvre un menu qui donne le choix entre différents niveaux de transparence :

integer menu_handler;
integer menu_channel;
menu(key user,string title,list buttons)
{
menu_channel = -37641 ;

menu_handler = llListen(menu_channel,"","","");
llDialog(user,title,buttons,menu_channel);
llSetTimerEvent(5.0);
}

default
{
touch_start(integer t)
{
menu(llDetectedKey(0),"Window Tinting System",["100","80","60","40","20","0"]);
}
timer()
{
llSetTimerEvent(0.0);
llListenRemove(menu_handler);
}
listen(integer channel,string name,key id,string message)
{
if (channel == menu_channel)
{
llSetTimerEvent(0.0);
llListenRemove(menu_handler);
if(message == "100")
{
llSay(menu_channel,"100");
}
else if(message == "80")
{
llSay(menu_channel,"80");
}
else if(message == "60")
{
llSay(menu_channel,"60");
}
else if(message == "40")
{
llSay(menu_channel,"40");
}
else if(message == "20")
{
llSay(menu_channel,"20");
}
else if(message == "0")
{
llSay(menu_channel,"0");
}

}
}
}

Y a t il moyen d'adapter le script que tu viens de me donner gentiment à ce mode de fonctionnement ?

Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés