PDA

Voir la version complète : Effacer les polygones du milieu



kald01
09/10/2006, 14h25
Salut tous le monde,
Vous nêtes pas sans savoir que quand on modélise avec un objet symétrie, à chaque extrusions, des polygones se crééent au milieu. Des polygones dont tous les points ont une valeur de 0 dans l'axe X. Ces polygones font des plis et trous tout vilain dans l'hyper nurbs.

Dans la dernière version de blender, il y a une option dans l'objet symétrie qui empèche ces polygones de se former pendant les extrusions.

Alors je me suis que ce serait tout simple de faire un coffee qui se chargerai de supprimer ces polygones. de ce fait je télécharge le sdk, je lis les 3 premières pages...et là je constate que mon cerveau n'est pas adapté à cet écosystème... :oops:

Aussi, je me demandai si des personnes au QI supérieur ne pourrai pas faire un script du genre:

SI des polygones dans l'objet sur lequel ce tag coffe est placé, ont tous leurs points dont les coordonnées en X = 0 ALORS, supprimer ces polygones.

Voilà, alors sur le concept ça à l'air tout simple, mais en pratique :coup:

shtl
09/10/2006, 14h51
+1

c'est pas énnorme à supprimer à chaque fois, mais multiplié par 1000 ça devient une pertes de temps.

:prie:

kald01
09/10/2006, 21h13
Bon, je crois que je vais essayer de faire ça moi même :mrgreen: ça me permettra de me mettre le nez dans le coffee.

Après m'être replongé dans le SDK, j'en suis arrivé à la conclusion que je devais utiliser une structure ce type:



main(doc,op)
{
if (expression)
doStuff();
else
doSomethingElse();

}

le but du jeu ça va être de remplacer "expression" par un truc qui veux dire: Si un polygone a tous ces points (ou arrêtes, j'en sais rien...) dont les coordonnées en X sont égales à zéro, alors il faut le supprimer ce qui doit correspondre au "DoStuff();"

Je sais que je dois avoir l'ai débile, mais j'aimerais au moins savoir si je suis sur la bonne voie?

Je retourne essayer de traduire tout ça en Coffee :art: :coup:

tarlack
09/10/2006, 21h22
un algo de base, ie sans lien avec le SDK (donc ne pas se fier aux noms de fonctions donnés ici) mais qui est une solution possible, ressemble à quelque chose comme ca :



main(doc,op)
{
var nbPolys = doc->objetSelectionne->nbPolys;
for (var i = 0; i < nbPolys; i ++) {
var poly = (doc->objetSelectionne->polys[i];
var polyASuppr = true;
for (var j = 0; j < poly->nbVertex; j++) {
if ((GlobalToLocal (poly->vertex[j]))->x != 0) {
polyASuppr = false;
}
}
if (polyASuppr == true) {
doc->objetSelectionne->supprimerPoly(i);
}
}
}


ca n'a aucune vocation d'etre optimale niveau ressources et temps d'execution (genre on pourrait mettre un while à la place du for interieur, mais ici mon but etait pas de faire de l'efficace, mais du lisible)

reste plus qu'à voir avec les pros du coffee comment ca se traduit, ou s'ils ont une meilleure idée pour le faire ;)

kald01
09/10/2006, 21h28
Merci Tarlack, je vais essyer de décrypter le langage codé que tu viens d'envoyer :bounce: J'ai copié ton script dans mon coffee, reste à voir si j'arrive à le faire fonctionner :lol:

tarlack
09/10/2006, 21h34
comme je te l'ai dit, là comme ca va pas faire grand chose ;)
en fait, ici tu dois trouver
1/comment acceder en coffee à l'objet sur lequel le tag coffee est
2/comment acceder aux polys de l'objet
3/comment acceder aux vertex d'un poly
4/comment supprimer un poly

pour le reste ca devrait etre bon, il ne manque que ses élements, qui sont très liés au sdk. bonne chance ;)

paspas
11/10/2006, 12h55
salut* kald

pour repondre au point 1 - 2 - 3*



1/comment acceder en coffee à l'objet sur lequel le tag coffee est
2/comment acceder aux polys de l'objet
3/comment acceder aux vertex d'un poly


y une façon simple et un peu detournne

je m' explique* plutot que un cofee seul utilise xpresso et le noeud cofee

- tu glisse l'objet polygone dans l' expresso et tu m' est ce noeud en postion reference relatif plutot plutot que absolu ( du coup si tu change d' objet polygone c est luiqui serra referencer* dans l xpersso ) pour info : http://www.frenchcinema4d.com/forum/index.php?topic=16373.0
- tu cree un port lien dans le noeud cofee*
-
doc->objetSelectionne du code de tarlak devient le noms du port que tu a mis pour ce lien


4/comment supprimer un poly

la je sais pas* *:arg:


paspas

kald01
11/10/2006, 14h08
Merci pour des vos répones Tarlack et Paspas, je regarderai tout ça au clair ce soir, parceque j'avoue que plus je regarde le sdk, moins j'ai l'impression de vivre dans un univers logique :coup:

kald01
27/12/2006, 17h21
honnêtement, j'ai essayé de comprendre, mais mon cerveau n'avait pas les connexions necessaires aussi, quelle ne fut pas surprise en voyant qu'un certain MrBraun, modérateur du site italien c4dhotline: http://www.computergrafica3d.com/c4dhotline/homepage.php avait réalisé mon souhait: http://forums.cgsociety.org/showthread.php?t=443122