[AIDE]Rez d'un mesh + le lié via un script

Répondre
Partager Rechercher
Bonjour/bonsoir

Je suis créateur, scripteur de véhicules auto sur SL depuis un petit moment maintenant.

Je suis en plein nouveau projet et j'ai eu l'idée d'un nouveau système, mais j'aimerais savoir si c'est tout d'abord possible.

L'idée c'est d'avoir un véhicule ( 100% mesh je precise, mis a part le Root), et de pouvoir remplacer une partie/un prim de la voiture via un script, exemple j'ai un volant A, je vais dans le menu du véhicule, je fais "changer Volant A en Volant B", ca délie le volant A et le supprime, et rez le volant B, le positionne, et le lie.

Serait-ce scriptablement probable ?

EDIT: C'est le seul systeme que je trouve utile dans le sens où, avant j'utilisais le systeme des pieces transparente, je fais disparaitre une et fais apparaitre l'autre, mais l'impact en prims des vehicules etait elevé, alors que le systeme que j'ai en vu, comme il delie et supprime l'ancienne piece, ne rajoute pas en impact prims (enfin tout depend l'impact prim du prim qui va remplacer l'ancien bien entendu)

merci d'avance.

Dernière modification par Rems57 ; 01/08/2013 à 15h53.
Oui, c'est possible.

- le script détache le volant en utilisant la fonction llBreakLink, un script dans le volant détruit ce dernier
- la voiture rez un nouveau volant
- on l'attache grâce à llCreateLink.

Pour que ça puisse marcher, il faut que:
- le propriétaire ait le droit de rezzer
- le volant et la voiture soient modifiables
Il n'y a pas besoin de le déplacer. La position (en coordonnées globales) et la rotation sont des paramètres de la fonction llRezAtRoot.

Il suffit de :
- coder en dur les position et rotation du volant, relativement à la voiture
- avant le rez, traduire les position et rotation en valeurs globales
- renseigner les paramètres dans la fonction llRezAtRoot.
N'est-ce pas plus simple (notamment par le fait de ne pas avoir à demander de permissions) de transformer/texturer une (ou plusieurs) prims qui seraient (et resteraient) liées à l'ensemble du build ?

Tu peux par exemple stocker chaque volant différent comme une liste de paramètres pour llSetLinkPrimitiveParamsFast() (une par prim constituant le volant). Passer d'un volant à l'autre consiste alors simplement à lancer les commandes correspondantes. Dans ce cas pas besoin de rezzer, de demander des permissions, de créer un lien, de transformer des coordonnées locales en globales...
Rems , si ton souci était uniquement ton land impact pour qu il soit inférieur au maximum pour les physiques autorisé , tu n as pas besoin de mettre ton volant en CONVEX_HULL . ( physics shape type dans l onglet features de la fenetre de build edition de la prim )
Tu peux très bien changer le modèle physique du volant à NONE.
En mettant une prim à NONE , un tiers objet peut traverser cette prim , ( comme si elle était phantom en fait ) mais , cette prim n est pas comptabilisée dans le land impact
Idem pour pas mal de parties de ta voiture .
Certaines parties auront besoin d etre CONVEX_HULL pour pouvoir gèrer les collisions ( que ce soit avec le terrain ou avac des objets ) , ainsi que la prim ROOT .
Par exemple les roues pour éviter que ton véhicule s enfonce dans le sol , éventuellement le chassis de la voiture pour que les autres voitures ne traversent pas ta voiture .
Mais les sièges , les volants, intérieurs de moteurs , frein à mein , coffre etc sont inutiles à comptabiliser dans le modèle physique et peuvent être raisonnablement mis à NONE

Dernière modification par redpurple ; 02/08/2013 à 18h52.
Citation :
N'est-ce pas plus simple (notamment par le fait de ne pas avoir à demander de permissions) de transformer/texturer une (ou plusieurs) prims qui seraient (et resteraient) liées à l'ensemble du build ?

Tu peux par exemple stocker chaque volant différent comme une liste de paramètres pour llSetLinkPrimitiveParamsFast() (une par prim constituant le volant). Passer d'un volant à l'autre consiste alors simplement à lancer les commandes correspondantes. Dans ce cas pas besoin de rezzer, de demander des permissions, de créer un lien, de transformer des coordonnées locales en globales...
Avec les sculptes on peut transformer le sculpt avec la texture du sculptie, mais les mesh c'est different, et je ne peux pas simplement changer de texture, je vais pas seulement faire ca avec le volant, avec un capot par exemple, j'ai un capot normal et un capot avec prise d'air découpée ...

Citation :
Rems , si ton souci était uniquement ton land impact pour qu il soit inférieur au maximum pour les physiques autorisé , tu n as pas besoin de mettre ton volant en CONVEX_HULL . ( physics shape type dans l onglet features de la fenetre de build edition de la prim )
Tu peux très bien changer le modèle physique du volant à NONE.
En mettant une prim à NONE , un tiers objet peut traverser cette prim , ( comme si elle était phantom en fait ) mais , cette prim n est pas comptabilisée dans le land impact
Idem pour pas mal de parties de ta voiture .
Certaines parties auront besoin d etre CONVEX_HULL pour pouvoir gèrer les collisions ( que ce soit avec le terrain ou avac des objets ) , ainsi que la prim ROOT .
Par exemple les roues pour éviter que ton véhicule s enfonce dans le sol , éventuellement le chassis de la voiture pour que les autres voitures ne traversent pas ta voiture .
Mais les sièges , les volants, intérieurs de moteurs , frein à mein , coffre etc sont inutiles à comptabiliser dans le modèle physique et peuvent être raisonnablement mis à NONE
Malheuresement faut, depuis toujours j'utilise cette methode pour autoriser la physique d'une objet de plus de 32 prims, mais en aucun cas cela n'affecte l'impact du prim, j'ai le root, mes roues et la carrosserie en prim ou convex, le reste en none, l'impact du vehicule est de 60, si je remet L'INTEGRALITE en prim ou convex, l'impact reste de 60

En clair je suis obligé d'utiliser cette methode.
Citation :
Publié par Rems57
Avec les sculptes on peut transformer le sculpt avec la texture du sculptie, mais les mesh c'est different, et je ne peux pas simplement changer de texture, je vais pas seulement faire ca avec le volant, avec un capot par exemple, j'ai un capot normal et un capot avec prise d'air découpée ...



Malheuresement faut, depuis toujours j'utilise cette methode pour autoriser la physique d'une objet de plus de 32 prims, mais en aucun cas cela n'affecte l'impact du prim, j'ai le root, mes roues et la carrosserie en prim ou convex, le reste en none, l'impact du vehicule est de 60, si je remet L'INTEGRALITE en prim ou convex, l'impact reste de 60

En clair je suis obligé d'utiliser cette methode.
Oui cela n'affecte que le physique, et permet d'avoir des véhicules de plus de 32 prims. Mais le land impact ce serait trop beau lol.
Si , si , cela affecte bien le land impact .

Ne te fies pas forcément au land impact qui est affiché dans la boite d édition .
La valeur affichée dedans n y est pas rafraîchie , au moins tant que le statut physique n a pas essayé d être changé

Voir par exemple :
Code PHP:

default
{
    
touch_start(integer total_number)
    {
        
llSetStatus(STATUS_PHYSICSTRUE);
        list 
llGetObjectDetails(llGetKey(), [ OBJECT_PRIM_EQUIVALENCEOBJECT_SERVER_COSTOBJECT_STREAMING_COSTOBJECT_PHYSICS_COST ]);
        
llOwnerSay(llList2CSV(
        [
        
"Land Impact",llList2Float(l,0), "\n",
        
"Cout serveur",llList2Float(l,1), "\n",
        
"Cout download",llList2Float(l,2), "\n",
        
"Cout Physique",llList2Float(l,3), "\n"
        
]
        ));
    }

Exemple :
65 prims en cube liées :
La fenêtre d édition affiche un Land impact de 65
Le script affiche :
Land Impact, 65.000000,
, Cout serveur, 32.749969,
, Cout download, 3.899997,
, Cout Physique, 65.000000,

Changer tout en convex hull
La fenêtre d édition affiche un Land impact de 65 Mais ce n est pas raffraichi.
Le script raffraichi affiche :
Land Impact, 33.000000,
, Cout serveur, 32.749969,
, Cout download, 3.899997,
, Cout Physique, 8.651649,
On voit bien que le land impact a été changé contrairement à la fenêtre d édition


Changer tout en None , sauf la prim root qui reste en convex hull
Le script affiche :
Land Impact, 33.000000,
, Cout serveur, 32.749969,
, Cout download, 3.899997,
, Cout Physique, 0.101000,
Dans ce dernier cas, le land impact a été planché par la valeur du cout serveur . Mais on voit que potentiellement on peut encore abaisser le land impact : le positionnement à none , abaisse le cout physique . Comme, pour les objets physiques , le land impact est le maximum entre le coup physique , le cout serveur et le cout download , il pourrait être descendu . Le cout physique est passé de 8.65 à 0.1 .

Citation :
Oui cela n'affecte que le physique, et permet d'avoir des véhicules de plus de 32 prims. Mais le land impact ce serait trop beau l
Cela peut affecter le land impact dans la mesure que le cout physique est abaissé , et que le land impact est le maximum entre les 3 couts

Autre exemple : prendre le vehicule Kart de la library fournie par Linden dans l inventaire ( donc d un véhicule , ce qui colle parfaitement à ton histoire ):
Le land impact est de 27 par défaut en prim .
Mettre en convex hull l intégralité . Le land impact descend à 16

Kart 1.0: Land Impact, 16.000000,
, Cout serveur, 16.499994,
, Cout download, 5.434214,
, Cout Physique, 13.438442,

Dernière modification par redpurple ; 03/08/2013 à 16h55.
Bizarre . Sauf si évidemment ton land impact est cappé par ton cout serveur ou ton cout téléchargement

Code PHP:

string primCountThisParcel(integer flag)
{
    
vector currentPosition llGetPos();
 
    return
        (string)
llGetParcelPrimCount(currentPositionflagFALSE);
}

default
{
    
touch_start(integer total_number)
    {
        
llSetStatus(STATUS_PHYSICSTRUE);
        list 
llGetObjectDetails(llGetKey(), [ OBJECT_PRIM_EQUIVALENCEOBJECT_SERVER_COSTOBJECT_STREAMING_COSTOBJECT_PHYSICS_COST ]);
        
llOwnerSay(llList2CSV(
        [
        
"Land Impact",llList2Float(l,0), "\n",
        
"Cout serveur",llList2Float(l,1), "\n",
        
"Cout download",llList2Float(l,2), "\n",
        
"Cout Physique",llList2Float(l,3), "\n"
        
]
        ));
        
llSay(PUBLIC_CHANNEL,
            
"There are " primCountThisParcel(PARCEL_COUNT_TOTAL) + " total prims on this parcel.");
 
        
llSay(PUBLIC_CHANNEL,
            
primCountThisParcel(PARCEL_COUNT_OWNER) + " prims are owned by the parcel owner.");
 
        
llSay(PUBLIC_CHANNEL,
            
primCountThisParcel(PARCEL_COUNT_GROUP) + " prims set to or owned by the parcel's group.");
 
        
llSay(PUBLIC_CHANNEL,
            
primCountThisParcel(PARCEL_COUNT_OTHER) + " prims that are not set to the parcel group or owned by the parcel owner.");
 
        
llSay(PUBLIC_CHANNEL,
            
primCountThisParcel(PARCEL_COUNT_SELECTED) + " prims are selected.");
 
        
llSay(PUBLIC_CHANNEL,
            
primCountThisParcel(PARCEL_COUNT_TEMP) + " prims are temp-on-rez.");        
    }

Avec Kart de rezzé en PRIM

Kart 1.0: Land Impact, 27.000000,
, Cout serveur, 16.499994,
, Cout download, 5.434214,
, Cout Physique, 27.000000,

Kart 1.0: There are 32 total prims on this parcel.
Kart 1.0: 0 prims are owned by the parcel owner.
Kart 1.0: 0 prims set to or owned by the parcel's group.
Kart 1.0: 32 prims that are not set to the parcel group or owned by the parcel owner.
Kart 1.0: 0 prims are selected.
Kart 1.0: 0 prims are temp-on-rez.


Avec Kart de rezzé en CONVEX HULL

Land Impact, 16.000000,
, Cout serveur, 16.499994,
, Cout download, 5.434214,
, Cout Physique, 13.438442,

Kart 1.0: There are 21 total prims on this parcel.
Kart 1.0: 0 prims are owned by the parcel owner.
Kart 1.0: 0 prims set to or owned by the parcel's group.
Kart 1.0: 21 prims that are not set to the parcel group or owned by the parcel owner.
Kart 1.0: 0 prims are selected.
Kart 1.0: 0 prims are temp-on-rez.


Il y avait 5 autres prims rezzées dans la sandbox . On a bien 27-16 ( Land Impact avant et après) = 32 - 21 ( Prims occupées dans le terrain avant et après )
ouai peut-être, je ne sais pas.

j'ai fait aussi des tests, convex, null, physique, pas physique ... toujours le meme impact, meme en raffraichissant, attendre quelques temps ...

m'enfin tanpis ca change rien, je vais quand meme faire mon petit systeme de rez-liaison etc
pour ton véhicule il te faut regarder ici sous "weights of selected" à coté de physics (19.8 ici):
http://community.secondlife.com/t5/image/serverpage/image-id/43823iE1F07CCE14A2DE17/image-size/original?v=mpbl-1&px=-1


c'est cette valeur qui est prise en compte pour les véhicules
quand tu passes de none, convex hull ou prims, c'est la valeur de "physics" qui change

le land impact c'est simplement la plus haute valeur des 3 (qui est fausse dans l'image que j'ai jointe qui aurais du être de 35 (peut être du fait qu'il ait sélectionné 2 objets)

tout est expliqué ici:
http://community.secondlife.com/t5/B...ms/ta-p/988257

Dernière modification par svorvas ; 04/08/2013 à 08h46.
Il y a un paradoxe :

D'une part, Rems et Elenia ont fait le constat suivant : les attributs physique prim/convex hull/none ne changent pas le land impact.
En triturant des véhicules en mesh, j'ai fait le même constat qu'eux.

D'autre part, Redpurple montre que ça peut changer le land impact.
Avec preuve à l'appui, à partir du kart de la librairie, qui est en prims de base, et non en mesh.

Citation :
Publié par Rems57
Oui mais les prims de mon terrain ne descendent pas lorsque je fait nimporte quel des manips, convex ou none ... met en raffraichissant etc ..
Citation :
Publié par redpurple
Bizarre . Sauf si évidemment ton land impact est cappé par ton cout serveur ou ton cout téléchargement
L'explication est très simple : le "sauf si" de Redpurple n'est pas l'exception, mais la règle, dans la pratique, pour les véhicules en mesh.
- les créateurs de véhicules en mesh cherchent à obtenir un côté visuel le plus réaliste et détaillé possible. Ce qui généralement entraîne un poids de chargement (download cost) supérieur à 32 (parfois très supérieur).
- le poids physique doit obligatoirement être inférieur à 32, pour un véhicule. Si ce n'est pas le cas, il faut faire en sorte que ça le devienne. En général, on met le degré de détail physique au minimum lors du chargement du mesh, et on privilégie les détails visuels.

avec un cout physique inférieur à 32 dès le départ, et un cout de chargement supérieur, ça sera toujours le cout de chargement qui fera le land impact, dans la pratique. Et triturer les attributs "physics shape" ne le réduira pas.

Citation :
Publié par Rems57
Malheuresement faut, depuis toujours j'utilise cette methode pour autoriser la physique d'une objet de plus de 32 prims, mais en aucun cas cela n'affecte l'impact du prim, j'ai le root, mes roues et la carrosserie en prim ou convex, le reste en none, l'impact du vehicule est de 60, si je remet L'INTEGRALITE en prim ou convex, l'impact reste de 60
Land impact de 60, poids physique inférieur à 32.
CQFD.


Citation :
Publié par redpurple
Rems , si ton souci était uniquement ton land impact pour qu il soit inférieur au maximum pour les physiques autorisé(...)
Le souci est plutôt d'ordre commercial, à savoir : garder un land impact dans des limites raisonnables, avec un aspect visuel soigné.
Entre deux voitures identiques par ailleurs, l'une avec un land impact de 50, une autre de 200, la question du choix ne se pose pas, même si la première est un peu plus chère.

Dernière modification par black cats ; 04/08/2013 à 18h09.
Après avoir buildé des tas de vehicules, je fais couramenr descendre le LI de 40-50 à 25-30 en mettant l 'attribut "none" à certaiins prims....le prim root devant rester en "prim".....ainsi que les pieces ayant un rôle "physique" roues...pare chocs, carosserie....Les scripts KCP donnent egalement la recette tout en recommandant de rester "raisonnable" les qualités routieres se degradant avec le nb de prims "none"
Sur mon avion Voisin, qui est entièrement en meshes, le fait de mettre une grande partie de éléments en "none" ne change pas le "Land Impact" en revanche le "Weight Physic" qui était à 37 est descendu à 12.

Ce que je fais pour baisser le "Land Impact" tout en conservant un bon visuel, c'est de découper l'engin en plein de petits morceaux. Bon c'est un peu la corvée pour ensuite, tout ré-assembler correctement, mais à ce petit jeu je suis passé de 157 au premier jet à 74 aujourd'hui et je pense arriver à descendre en dessous de 60 en réalisant d'autres découpages...
Répondre

Connectés sur ce fil

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