|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
XSI script - cap holes
Sto studiando xsi 4.2 che mi sta davvero illuminando (al punto che ho messo pure l'avatar
) anche se, come ogni suo concorrente, ha qualche neo, uno di questi è la mancanza di un comando per riempire automaticamente i "buchi" negli oggetti poligonali, funzione che si può però realizzare in pochi secondi con uno scriptino:dopo avere selezionato gli edges costituenti il bordo: - duplicarli - passare alla selezione dei punti facenti capo agli edges - collassarli - dissolvere il punto risultante Fortunatamente quelle sopra elencate sono tutte funzioni embeeded in xsi e possono essere tradotte in un vbscript come questo: Function capHoles( ) dim localVar set localVar=getvalue("selectionlist") 'copia edges DuplicateMeshComponent localVar, siPersistentOperation 'selezione vertici appartenenti agli edges selectAdjacent, "point", false set localVar=getvalue("selectionlist") 'saldatura vertici nell'average point WeldPoints localVar set localVar=getvalue("selectionlist") 'dissoluzione vertice risultante ApplyTopoOp "DissolveComponent", localVar, siUnspecified, siPersistentOperation DeselectAll End Function L'ho immesso come custom command e l'ho bindato ad un tasto (shift/c) Però quando lo lancio risulta esserci un errore alla linea selectAdjacent... e la cosa curiosa è che sintatticamente è corretto perche se lo immetto passo-passo nel command box non mi da nessun errore ed il risultato è quello che mi aspetto; altresì non da errori e tutto procede liscio se lo spezzo in due scripts divisi appena sopra la linea incriminata (sai che pizza e che bruttura dovere immettere due comandi in successione per una semplice funzione...). Non mi sembra ci siano molti utenti xsi qui ma tentar non nuoce Ultima modifica di la_piaga : 24-02-2005 alle 13:21. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Parigi (magari!)
Messaggi: 1963
|
In lightwave , basta selezionare i punti di contorno del buco, poi premi "p" per creare un poligono di chiusura (lo saprai) , però la selezione dei punti deve essere tassativamente fatta in maniera sequenziale partendo da un punto(o oraria o antioraria) , per cui nel tuo script magari passando da edges a punti non viene tenuto in considerazine l'ordine di selezione dei punti?
Può essere?
__________________
ciao ciao |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
Da quanto mi dici i principi di funzionamento sono differenti: lw genera come hai detto un poligono "tappo" utilizzando i vertici indicati perciò bisogna utilizzare la regola della mano destra (vertici collegawti in senso antiorario, dal palmo alle dita -> normale uscente, dal palmo al pollice).
Lo script qui sopra invece fisicamente genera a partire dai bordi del buco un "orlo" di qudrilateri mediante la copia dei bordi stessi (che si può intendere come un'estrusione a spessore 0) poi prende i vertici più interni e semplicemente li collassa nel punto medio ottenendo una serie di triangoli (che poi andranno dissolti), per questo non importa l'ordine. Comunque grazie lo stesso |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2004
Città: Ferrara
Messaggi: 531
|
Gli script non ho ancora avuto modo di studiarli, ma in teoria il tuo procedimento non fa una piega.
Ad ogni modo ho trovato una discussione sul forum di XSI Base che potrebbe interessarti: http://www.xsibase.com/netview_forum...threadid=12531 |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2004
Città: Ferrara
Messaggi: 531
|
Sì, ma gli RCTools sembrano funzionare bene. Io ho cappato i poligoni nell'immagine allegata senza problemi.
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
Quote:
Curiosità: usi la selezione dei components stile windows od extended stile softimage|3d? Io personalmente sto tentando la strada extended (ovviamente bindando il "deselect all" su di un tasto più accessibile di shift+ctrl+a |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Parigi (magari!)
Messaggi: 1963
|
Queso lo conoscevi già? (però lo script è stato fatto per la v1.5 , non sò se funzioni anche per la 4.2)
http://www.edharriss.com/tutorials/t...mage%20XSI.htm Si in effetti il "bridge tool" (se funzia come in LW8) non vedo come possa essere utilizzato! (ah............ forse ho capito! , ma lo scriptino non serve!)
__________________
ciao ciao |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
Ah, buono a sapersi, il dissolve prima fonde poi elimina i components, non c'è bisogno di effettuare il welding preventivo.
Comunque stessa storia, si comporta allo steso modo |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2002
Città: Parigi (magari!)
Messaggi: 1963
|
Quote:
__________________
ciao ciao |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
Non è tanto il modo di realizzare la cosa (in fin dei conti anche usando il metodo dello script però manualmente ci si impiega un attimo, poi non è che debba tappare buchi tutto il tempo...
Poi avrei un altro paio di scripts da realizzare per rendere xsi perfetto per le mie esigenze di modellazione, ma se non riesco a fare funzionare questo, che è di gran lunga il più semplice, figuriamoci gli altri! |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 722
|
Ce l'ho fatta!
E' proprio una strana faccenda questa, che peraltro ho risolto in modo decisamente poco elegante, ma funziona e non fa casino, questo è l'importante. Probabilmente xsi non aggiorna istantaneamente le componenti adiacenti ed accedervi subito dopo la duplicazione lo mandava in bestia; quindi ho messo una traslazione nulla subito dopo la generazione del duplicato e così funziona a dovere. Inoltre a differenza di ciò che suggerisce il tizio del sito segnalatomi da luca72.lws ho anche lasciato la saldatura dei vertici prima della dissoluzione perchè in assenza di essa si creano fastidiose inversioni di normali quando si lavora su buchi "complessi". Per chiunque sia interessato questo è il sorgente funzionante (in attesa di trovare qualcosa di più elegante di una traslazione perdi tempo...) del capHoles per xsi 4.2 have fun! Function capHoles( ) dim localVar set localVar=getvalue("selectionlist") DuplicateMeshComponent localVar Translate localVar, 0, 0, 0 SelectAdjacent,"point" set localVar=getvalue("selectionlist") WeldPoints localVar set localVar=getvalue("selectionlist") ApplyTopoOp "DissolveComponent", localVar, siUnspecified, siPersistentOperation DeselectAll ActivateRaycastEdgeSelTool End Function |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:30.










) anche se, come ogni suo concorrente, ha qualche neo, uno di questi è la mancanza di un comando per riempire automaticamente i "buchi" negli oggetti poligonali, funzione che si può però realizzare in pochi secondi con uno scriptino:








