Vai al contenuto

70MadMax

Members
  • Portfolio

    Portfolio
  • Numero messaggi

    528
  • Registrato

  • Ultima Visita

  • Days Won

    4

70MadMax last won the day on September 5 2010

70MadMax had the most liked content!

Info su 70MadMax

  • Rango
    Treddiano

Informazioni professionali

  • Sito Web
    http://

Ospiti che hanno visualizzato il profilo

8411 lo hanno visualizzato
  1. 70MadMax

    Script di copia UV

    Ciao...lieto che ancora qualcosa di mio sia di interesse oltretutto neanche ricordavo più di averlo scritto, tanto che tempo fa avevo trovato questa più che valida alternativa: https://gabnation.wordpress.com/2010/02/09/how-to-transfer-uvs-after-rigging/ comunque, visto che il sito è down, copio lo script qui, ti basta fare un copia e incolla: global string $gMainProgressBar; // This is defined on maya startup string $saObject[] = `ls -sl`; max_CopyUV($gMainProgressBar, $saObject[0], $saObject[1]); proc max_CopyUV(string $gMainProgressBar, string $sMainObject, string $sSecondObject) { int $iEdges = getMeshEdges($sSecondObject); polyMapCut ($sSecondObject + ".e[0:" + $iEdges + "]"); int $iFaces = getMeshFaces($sMainObject); progressBar -edit -beginProgress -isInterruptable false -status "Copying UVs ..." -maxValue $iFaces $gMainProgressBar; int $iCounter = 0; int $i; for($i = 0; $i < $iFaces; $i++) { copyUV_proc($sMainObject, $sSecondObject, $i); $iCounter++; if($iCounter < 10) continue; $iCounter = 0; progressBar -edit -step 10 $gMainProgressBar; } progressBar -edit -endProgress $gMainProgressBar; progressBar -edit -beginProgress -isInterruptable false -status "Sewing Edges..." -maxValue $iFaces $gMainProgressBar; $iCounter = 0; for($i = 0; $i < $iFaces; $i++) { copyUV_mainFace_proc($sMainObject, $sSecondObject, $i); $iCounter++; if($iCounter < 10) continue; $iCounter = 0; progressBar -edit -step 10 $gMainProgressBar; } progressBar -edit -endProgress $gMainProgressBar; } proc copyUV_proc(string $sMainObject, string $sSecondObject, int $iFace) { int $iaVertices[] = getVerticesFromFace(($sMainObject + ".f[" + $iFace + "]")); int $iVertices = size($iaVertices); int $i; for($i = 0; $i < $iVertices; $i++) { int $iUV = getUVFromVertexFace($sMainObject, $iFace, $iaVertices[$i]); float $faUVPos[] = getUVPosFromUV(($sMainObject + ".map[" + $iUV + "]"), 4); $iUV = getUVFromVertexFace($sSecondObject, $iFace, $iaVertices[$i]); polyEditUV -r false -u $faUVPos[0] -v $faUVPos[1] ($sSecondObject + ".map[" + $iUV + "]"); } } proc copyUV_mainFace_proc(string $sMainObject, string $sSecondObject, int $iFace) { int $iaFaceEdges[] = getEdgesFromFace(($sMainObject + ".f[" + $iFace + "]")); int $iFaceEdges = size($iaFaceEdges); int $i; for($i = 0; $i < $iFaceEdges; $i++) { copyUV_mainFaceEdge_proc($sMainObject, $sSecondObject, $iaFaceEdges[$i]); } } proc copyUV_mainFaceEdge_proc(string $sMainObject, string $sSecondObject, int $iaFaceEdges) { int $iaFaces[] = getFacesFromEdge(($sMainObject + ".e[" + $iaFaceEdges + "]")); if(1 == size($iaFaces)) return; int $iaVertices[] = getVerticesFromEdge(($sMainObject + ".e[" + $iaFaceEdges + "]")); int $iUV0 = getUVFromVertexFace($sMainObject, $iaFaces[0], $iaVertices[0]); int $iUV1 = getUVFromVertexFace($sMainObject, $iaFaces[0], $iaVertices[1]); int $iUV2 = getUVFromVertexFace($sMainObject, $iaFaces[1], $iaVertices[0]); int $iUV3 = getUVFromVertexFace($sMainObject, $iaFaces[1], $iaVertices[1]); if(($iUV0 != $iUV2) || ($iUV1 != $iUV3)) return; polyMapSew ($sSecondObject + ".e[" + $iaFaceEdges + "]"); } // ******************************************************************************** // ************************************ //DATO UN UV, RITORNA LA SUA POSIZIONE* // ************************************ proc float[] getUVPosFromUV(string $sUV,int $iPrecision) { float $faUVPos[] = `polyEditUV -q $sUV`; $faUVPos[0] = RoundOff($faUVPos[0],$iPrecision); $faUVPos[1] = RoundOff($faUVPos[1],$iPrecision); return $faUVPos; } // **************************************************** //DATA UNA FACCIA E UN VERTICE, RITORNA L'UV ASSOCIATO* // **************************************************** proc int getUVFromVertexFace(string $sObject, int $iFace, int $iVertex){ string $saUV[] = `polyListComponentConversion -fvf -tuv ($sObject + ".vtxFace[" + $iVertex + "][" + $iFace + "]")`; int $iaUVs[] = componentRange($saUV[0]); return $iaUVs[0]; } // ********************************** // DATA UNA FACCIA RITORNA I VERTICI* // ********************************** proc int[] getVerticesFromFace(string $sFace) { string $saVertices[] = `polyListComponentConversion -ff -tv $sFace`; int $iaVertices[] = componentRangeExpanded($saVertices); return $iaVertices; } // ***************************************** //DATA UNA MESH, RITORNA IL NUMERO DI EDGES* // ***************************************** proc int getMeshEdges(string $sObject) { int $iaEdges[] = `polyEvaluate -e $sObject`; return $iaEdges[0]; } // ***************************************** //DATA UNA MESH, RITORNA IL NUMERO DI FACCE* // ***************************************** proc int getMeshFaces(string $sObject) { int $iafcs[] = `polyEvaluate -f $sObject`; return $iafcs[0]; } // ********************************** // DATA UNA FACCIA RITORNA GLI EDGES* // ********************************** proc int[] getEdgesFromFace(string $sFace) { string $sEdges[] = `polyListComponentConversion -ff -te $sFace`; int $iaEdges[] = componentRangeExpanded($sEdges); return $iaEdges; } // ****************************** //DATO UN EDGE RITORNA I VERTICI* // ****************************** proc int[] getVerticesFromEdge(string $sEdge) { string $saVertices[] = `polyListComponentConversion -fe -tv $sEdge`; int $iaVertices[] = componentRangeExpanded($saVertices); return $iaVertices; } // **************************************** // DATO UN EDGE RITORNA LE FACCE ASSOCIATE* // **************************************** proc int[] getFacesFromEdge(string $sEdge) { string $saFaces[] = `polyListComponentConversion -fe -tf $sEdge`; int $iaFaces[] = componentRangeExpanded($saFaces); return $iaFaces; } // ********************************************************************** // *************************** //ARROTONDA UN NUMERO 'FLOAT'* // *************************** proc float RoundOff(float $Number, int $Precision) { if($Precision > 0) { float $roundscale = pow(10,$Precision); if($Number > 0) return (((float)(int)($Number*$roundscale + 0.5)) /$roundscale); else return (((float)(int)($Number*$roundscale - 0.5)) /$roundscale); } else { float $roundscale = pow(10,-$Precision); if($Number > 0) return (((float)(int)($Number/$roundscale + 0.5)) *$roundscale); else return (((float)(int)($Number/$roundscale - 0.5)) *$roundscale); } } // ************************************************** //dato ad esempio pSphere1.vtx[0:25] ritorna { 0, 25}* //dato ad esempio pSphere1.vtx[0] ritorna { 0, 0} * // ************************************************** proc int[] componentRange(string $select) { string $buffer[]; int $i, $tokens; int $elements[2] = { 0, 0 }; $tokens = `tokenize $select "[:]" $buffer`; $elements[0] = $elements[1] = int($buffer[1]); if($tokens > 2) $elements[1] = int($buffer[2]); return $elements; } // ************************************************************************** //dato ad esempio pSphere1.vtx[0:5] ritorna { 0, 1, 2, 3, 4, 5} * //dato ad esempio pSphere1.vtx[0] ritorna { 0 } * //dato ad esempio pSphere1.vtx[0] E pSphere1.vtx[3:5] ritorna { 0, 3, 4, 5} * // ************************************************************************** proc int[] componentRangeExpanded(string $saSelection[]) { int $iSelection = size($saSelection); int $iaRes[]; clear $iaRes; int $iCounter = 0; int $i; for($i = 0; $i < $iSelection; $i++) { int $iaTemp[] = componentRange($saSelection[$i]); if($iaTemp[0] == $iaTemp[1]) { $iaRes[$iCounter] = $iaTemp[0]; $iCounter++; continue; } int $i2; for($i2 = $iaTemp[0]; $i2 < $iaTemp[1]; $i2++) { $iaRes[$iCounter] = $i2; $iCounter++; } $iaRes[$iCounter] = $i2; $iCounter++; } return $iaRes; }
  2. 70MadMax

    Qualche script per Maya

    Ciao a tutti, ho fatto un paio di script per Maya, ma siccome il mio software è un po' datato (2011 su un xp a 32bit) mi chiedevo se qualcuno interessato mi poteva dire se giravano bene anche su versioni più recenti. Poi se vi piacciono, e magari avete qualche miglioria da proporre...mi ci divertirò sopra un po'... Vi allego i link per scaricare il funzionamento degli script, poi, se volete, vi mando lo script vero e proprio (solo mel script, nessun codice "oscuro"). 1) una versione rivisitata e migliorata di un mio vecchio script, che consente di "disegnare" curve su di una mesh in Maya (nurbs, bezier, le classiche curve di Maya) per poi riportarle automaticamente su Photoshop o Illustrator per crearci una texture: https://mega.nz/#!Q1ZyAKYC!V4t8rtXwGiBarz2ccUhT4iGj5ePlWx3aXbqKxdZRF_Q 2) Uno "stupidissimo" script che prende una mesh già "unwrappata" e la restituisce con un doppio smooth e con le uv sistemate in modo da poter applicare una texture senza distorsione https://mega.nz/#!NsIyQYRC!Ngyzsw0VlKetzJBuZ2WY7xu8FP1fK09WddR-6aTx0Gc 3) Uno script un po' meno stupido per la creazione di capelli, guidati da una NurbsSurface modificabile interattivamente vedendo il risultato, con inoltre la possibilità di convertire i capelli in proxy ecc...ecc.... qui la documentazione https://mega.nz/#!Vt5m1SJT!o1ZLrl89LelPW4uPoGQw4o1-GFBKEFx88BhcMx6tS44 qui un esempio di utilizzo https://mega.nz/#!o0YRFQQZ!sQCbdFlyaijAyNhqGn_4bjwdoa08RveNA2qHqJIGUwg se vi va... grazie ragazzi. Max
  3. Oddio....ho 45 anni, sono di origini marchigiane....aspetta che controllo i superpoteri.... L'accento marchigiano rende abbastanza, e il tutto è davvero notevole. (p.s. ... per le ferie ho scelto Madrid, ma sto pensando di cambiare il biglietto per Mosca).
  4. ti ringrazio, lo script non è completo, ma se riesco in questi giorni gli do' una "bottarella" e lo posto, felice che ti sia piaciuto.
  5. 70MadMax

    Piccolo script di retopology in Maya

    Ciao a tutti, ogni tanto... volevo condividere con voi la "gioia" di un mini algoritmo per il retopology in Maya, mi è sempre piaciuto uno dei metodi di 3dCoat e ZBrush dove con delle "strokes" poi si potevano generare poligoni, non l'ho mai trovato applicato in Maya e, se non c'è...tocca farlo a me (forse ho cercato male, comunque una piccola soddisfazione c'è). Lo script non è completo e, se mi basta quello che fa, mai lo sarà, ma nel suo piccolo...funziona. Ciao a tutti. [media=]
  6. Ti ringrazio yogurt...spero ti sia utile
  7. 70MadMax

    Creatore di UI per Maya : maxUIBuilder

    Ciao a tutti, vi presento il mio ultimo lavoro, un creatore di UI per Maya, interamente fatto in Maya... Uno script che con pochi click rende automatico un lavoro a volte lungo e noioso(senza parlare degli errori). Fatemi sapere se vi può piacere. qui trovate l'help per farvi un'idea di come funziona (il primo link...New : maxUIBuilder on-line help) e subito sotto (sempre nella mia home page perennemente in costruzione) il link per scaricarlo. Avevo provato ad inserire l'help anche nel download, ma dopo 10 minuti che caricava mi sono stancato, ora potete scaricare solo il programma, ma non è difficile da usare. Lo cercavo inutilmente da tempo e avevo trovato solo cose o incomplete o che non erano esattamente come le volevo, con questo script potete vedere in tempo reale cosa state 'combinando' e passare più tempo a codificare (potete farlo anche dal programma) e meno a scrvellarvi tra i layouts. http://70madmax.vndv.com/ grazie a tutti per l'attenzione e alla prossima, ho già pronto un floorGenerator per Maya che è diventato un generatore di pavimenti, muri, piastrelle e non so cos'altro...a risentirci
  8. Ciao a tutti, sto approfittando di una piccola frattura per studiarmi qualcosa e sono arrivato agli shaders "personalizzati"... So programmare in c++, ma non voglio addentrarmi in un plugin di quel tipo, e allora ho sbirciato un po' il "mentalRay Phenomenon". Naturalmente, come sempre, lo strumento in Maya non fa tutto quello che vorrei(leggi : utilizzare gli shaders e utilities di maya e non solo i mia_ ecc....), e quindi...li scrivo da me. Trovando in rete un solo tutorial di tal genere (e con un errore alla fine, fortunatamente facile da individuare), ho iniziato a scrivermi uno shader personalizzato per il toon shading, utilizzando utilities di maya e non di mental tipo surfaceLuminance, multiplyDivide ecc...e allo stesso modo un bel lambert...fin qui tutto bene(leggi : funziona!!!!), ma sto impazzendo cercando di trovare il modo di andare ad agire sui "contorni". Lo shaderEngine del lambert (tanto per capirci...LamberSG) ha dei piccoli settaggi per la generazione del contorno (miContourEnable e compagnia bella....), ho trovato la definizione di questa parte nel file mayabase, ma non mi riesce di trovare un qualsiasi modo per agganciarlo al "mio" SG (quello cho ho definito nel mio file .mi) per poterlo controllare poi da interfaccia... Qualcuno può darmi una risposta? Naturalmente per favore Grazie a tutti.
  9. Ciao... fondamentalmente la prima che hai detto... Proverò a spiegarmi meglio(sono confusionario, lo so ) Prendo una mesh, apro...che so..zbrush e...disegno qualcosa...un cerchio, una curva, un quadrato...un qualcosa con contorni precisi, ma, tra la mano che proprio ferma ferma non è, l'antialiasing, quello che è...i contorni della figura non sono mai precisi come ad esempio in un cartone animato (o fumetto, che dir si voglia)...parlo di texture... O ho delle uv molto 'comode' che mi permettono magari in photoshop di disegnare con un tracciato, dove mi sistemo bene le linee e poi gliele faccio contornare, o sono costretto a disegnare sulla mesh direttamente in 3D con i problemi descritti prima... Il mio script bene o male mi permette di ottenere quello che sto cercando, ma dipendo molto dalle UV (niente seams - ancora - e facce tutte ben collegate). Ho visto in 3Dcoat, con le sue splines qualcosa di simile a quello che sto cercando, ma mi chiedevo se esistesse qualcosa di meglio...più mirato magari...
  10. 70MadMax

    Texturing "preciso", quasi parametrico

    Ciao a tutti, girando in rete ho visionato softwares per il texturing dove si dava importanza alla 'colorazione' a mano libera (body paint, deep3D, gli stessi Maya e Zbrush, photoshop ecc...), a me serviva sapere se ci fosse un qualcosa che mi permetteva di inserire figure meno 'a mano libera', tipo linee, curve magari dove potevo intervenire anche sulle coordinate dei singoli punti... Mi spiego, ho fatto uno script che in Maya di permette di disegnare una spline su una mesh e trasformarla in un tracciato su photoshop in base alle UV del modello... Lo script è ancora banale in quanto non tiene conto del problema dei seams e quindi ha bisogno che la spline cada in facce 'uvizzate' in modo che siano attaccate l'una all'altra (quindi senza seams). Devo per forza migliorare il mio script o esiste già qualcosa che possa fare in questa maniera? Ho dato una occhiata alle splines di 3dCoat, una roba del genere magari... Grazie...
  11. Sta migliorando direi...
  12. Si, è ancora un po' macchinoso...diciamo che prima di perderci davvero tempo e creare una finestra, snellire qualche passaggio, automatizzarne altri ecc...ecc... volevo vedere sia se potesse essere valida come cosa sia, sottoponendolo alla vostra attenzione, essere sicuro che non esistesse già qualcosa di simile... Intanto ti ringrazio per i complimenti e cercherò di migliorarlo al massimo
  13. 70MadMax

    Script per uv di modelli semplici

    Ciao a tutti, a volte ritorno Vi propongo una stupidaggine che ho fatto, ditemi se ho solo perso tempo (poco) o se vi può essere utile... A volte capita di dover creare le uv di modelli molto semplici ma che mi fanno perdere tempo con proiezioni, qui, incolla lì ecc... Detto così alla buona, con un minimo di 'preparazione' lo script calcola gli angoli tra le facce del modello e lo 'appiattisce' permettendo così una semplice planar projection, nei pochi test che sto facendo non rilevo distorsioni, in parole povere...sembra funzionare. Ho preparato un piccolo orribile video dimostrativo, se vi interessa condividerò lo script con istruzioni più che decenti Fatemi sapere, magari già c'è qualcosa di meglio, magari no... [media=]
  14. 70MadMax

    Mel Class e Mel Tree

    Ciao a tutti, eccomi di nuovo... Sto facendo un GUI builder direttamente in MEL, e ho visto che una bella classe o una struttura ad albero come in C++ proprio mi sarebbero servite... Solo che in MEL non ci sono, allora...ho trovato un modo per farmele. Sfruttando gli oggetti di Maya (in questo caso dei semplici locators), li ho fatti diventare i membri della mia classe, e con un po' di codice ho creato una lista e una struttura ad albero formata da membri dinamicamente modificabili(nel senso che possono avere un numero ed un tipo di attributi diversi un membro dall'altro) collegati uno all'altro sia in senso ascendente che discendente. Più che le parole parla il...codice... Eccolo, spero sia utile anche a qualcuno di voi... Mel Class Mel Tree
×