Max-lattice i Maya? =)

Moderatorer: Super Moderatorer, Admins


Trådstarter
danielodland
Innlegg: 985
Registrert: tor 21 mai, 2009

Max-lattice i Maya? =)

Legg innav danielodland » fre 28 jan, 2011

Hallais.

Finnes det et verktøy for å gjøre følgende i Maya:

Vil kunne gjøre alle eller noen av edgene i et objekt om til isolert
geometri, altså å hente ut edgene og gjøre de om til geometri som kan
modelleres videre på eller rendres som den er.

Dere som kan Max vet at dette heter Lattice i Max. Alle googleresultatene jeg leste gjennom
bar preg av misforståelser knyttet til at Lattice i Mayaland betyr noe annet (samme prinsippet
som FFD i Max).

Så det er ikke Maya sin Lattice jeg ser etter =)

Jeg prøvde Modify>Convert>Polygon edges to Curves

Dette gjorde noe som lignet på det jeg prøver på men jeg fikk ikke til å hente ut alle edgene.
Er dette rett funksjon, bortsett fra at jeg bare ikke skjønner den? Må MEL på banen?

Her er screenshots fra max som viser det jeg snakker om.

Bilde
Bilde

Takker på forhånd!

Brukeravatar

Gal_ape
Innlegg: 420
Registrert: ons 28 nov, 2007
Sted: Tønsberg

Legg innav Gal_ape » fre 28 jan, 2011

Hmm

Prøvde litt selv:

1.Lag en cylinder med ønsket oppdeling.
2.Slett alle facene på topp og bunn
3.Marker alle de resterende facene
4.Trykk extrude, i channelboxen skrur du av "keep faces together".
5.Hold nede ctrl mens du dytter den blå pila innover til du har en ønsket størrelse
6. Slett de markerte facene
7.Velg så resterende faces og extrude en gang til, dra utover med den blå pila.
8.Profit??

Bilde


Trådstarter
danielodland
Innlegg: 985
Registrert: tor 21 mai, 2009

Legg innav danielodland » fre 28 jan, 2011

Haha! Ser helt supert ut.

Har ikke mulighet å teste nå men det ser ut til å
fungere helt flott! Takker for kreativ og god løsning.

Brukeravatar

shcmack
Innlegg: 224
Registrert: søn 16 aug, 2009
Kontakt:

Legg innav shcmack » lør 29 jan, 2011

Anbefaller å bruke localScale istedenfor, om du f.eks. skal gjøre dette på en pSphere så slipper du at den flytter på facene.

Kastet sammen et kjapt script for å gjøre dette, du bare velger de objektene som skal gjøres om til polyWire, deretter kjører du scriptet.

Kode: Velg alt

//Get the selected object
string $selObj[] = `ls -sl`;
//Define the thickness for the wire
float $t = 0.8;
//For each selected object
for($obj in $selObj)
{
  select $obj; 
  //Convert the current selection to faces
  PolySelectConvert 1;
  //Extrude and scale the faces
  string $extrude[] = `polyExtrudeFacet -ch 1 -kft 0 -d 1 -taper 1 -off 0`;
  setAttr ($extrude[0] + ".localScale") -type double3 $t $t $t;
  //Delete the extruded faces
  doDelete;
}

Man kan endre hvor tykke kanter man skal ha ved å endre verdien i $t -variabelen, den beholder også historien slik at du kan endre divisions osv etterpå :)


Trådstarter
danielodland
Innlegg: 985
Registrert: tor 21 mai, 2009

Legg innav danielodland » søn 30 jan, 2011

Ok har testet begge forslag.

Gal_ape: funker finfint! Takker!

shcmack: Kult! Takker for scriptet! Eneste er jo at det blir kun planes (etter hva jeg kan se iaffal). Hadde vært konge om "spilene" eller hva jeg skal kalle det får tykkelse.

Konge, fikk to løsninger på ett problem. Takker, folkens.

Brukeravatar

shcmack
Innlegg: 224
Registrert: søn 16 aug, 2009
Kontakt:

Legg innav shcmack » søn 30 jan, 2011

danielodland skrev:Ok har testet begge forslag.

Gal_ape: funker finfint! Takker!

shcmack: Kult! Takker for scriptet! Eneste er jo at det blir kun planes (etter hva jeg kan se iaffal). Hadde vært konge om "spilene" eller hva jeg skal kalle det får tykkelse.

Konge, fikk to løsninger på ett problem. Takker, folkens.

Bare hyggelig, her er en ny versjon som du har mulighet til å legge til tykkelse på :)

Kode: Velg alt

//*************************************************************************************************************
// Title:      jh_polyWire.mel
// Author:      Jørn-Harald Paulsen
// Created:      January 30, 2011
// Last Update:      January 30, 2011
// Description:         Convert a polygon to a polyWire
//*************************************************************************************************************
global proc jh_polyWire()
{
  //Delete window if it already exists
  if (`window -q -ex jh_polyWire`) deleteUI jh_polyWire;
 
  //Main Window
  window
  -topEdge 30 -title "Convert a polygon to wire"
  -mxb false -s false -rtf false -mb false -mbv false -w 300 -h 440 jh_polyWire;
  //Window content
  columnLayout -adjustableColumn true;
  separator -w 240 -h 10;
  button -label "Convert" -c jh_convertPoly;
  floatSliderGrp -l "Grid Size:" -cw3 60 60 120 -cal 1 left -cal 2 left -cal 3 left -f true -pre 3 -min 0 -max 1 -v 0.800 gridSize;
  separator -w 240 -h 10;
  checkBox -label "Extrude" extrudeFaces;
  separator -w 240 -h 10;
  checkBox -label "Clean edges" cleanEdges;
  separator -w 240 -h 10;
  window -e -w 300 -h 440 jh_polyWire;
  showWindow jh_polyWire;
}

global proc jh_convertPoly()
{
  //Get the selected object
  string $selObj[] = `ls -sl`;
  //Get the value for the gridSize
  float $size = `floatSliderGrp -q -v gridSize`;
  //Get the value from the checkBoxes
  int $extrudeFaces = `checkBox -q -v extrudeFaces`;
  int $cleanEdges = `checkBox -q -v cleanEdges`;
  //For each selected object
  for($obj in $selObj)
  {
    //Select the current object
    select $obj;
    //Create a string for the edges
    string $edges[];
    //If "Clean edges" is turned on
    if($cleanEdges == 1)
    {
      //Convert the current selection to edges
      PolySelectConvert 2;
      //Put the selected edges in a string-array
      $edges = `ls -sl`;
      //Convert the current selection to faces
      PolySelectConvert 1;
      //Extrude and scale the faces
      string $extrude[] = `polyExtrudeFacet -ch 1 -keepFacesTogether 0 -divisions 1 -twist 0 -taper 1 -off 0`;
      setAttr ($extrude[0] + ".localScale") -type double3 $size $size $size;
      //Delete the extruded faces
      doDelete;
      //Delete the edges
      delete $edges;
    }
    //If "Clean edges" is turned off
    if($cleanEdges == 0)
    {
      //Convert the current selection to faces
      PolySelectConvert 1;
      //Extrude and scale the faces
      string $extrude[] = `polyExtrudeFacet -ch 1 -keepFacesTogether 0 -divisions 1 -twist 0 -taper 1 -off 0`;
      setAttr ($extrude[0] + ".localScale") -type double3 $size $size $size;
      //Delete the extruded faces
      doDelete;
    }
    //If "Extrude" is turned on
    if($extrudeFaces == 1)
    {
      //Select the current object
      select $obj;
      //Convert the current selection to faces
      PolySelectConvert 1;
      string $extrude[] = `polyExtrudeFacet -ch 1 -keepFacesTogether 1 -divisions 1 -twist 0 -taper 1 -off 0`;
      setAttr ($extrude[0] + ".localTranslate") -type double3 0 0 0.03;
    }
    //Select the object(s)
    select $selObj;
  }
}

jh_polyWire


Trådstarter
danielodland
Innlegg: 985
Registrert: tor 21 mai, 2009

Legg innav danielodland » søn 30 jan, 2011

Haha neat! Takker! Skal sjekke ut når jeg får tid!

Brukeravatar

Saberril
Innlegg: 367
Registrert: tir 01 jun, 2010
Sted: Oslo

Legg innav Saberril » søn 30 jan, 2011

Kung :D mest awesome jørn!
Freelance 3d Artist


Trådstarter
danielodland
Innlegg: 985
Registrert: tor 21 mai, 2009

Legg innav danielodland » man 31 jan, 2011

Har fått testet. Sinnsykt bra tiltak, mann! Funker som bare det.
Takker for all innsats!!

Brukeravatar

shcmack
Innlegg: 224
Registrert: søn 16 aug, 2009
Kontakt:

Legg innav shcmack » man 31 jan, 2011

Bare hyggelig ;)

Brukeravatar

Gal_ape
Innlegg: 420
Registrert: ons 28 nov, 2007
Sted: Tønsberg

Legg innav Gal_ape » tir 01 feb, 2011

Supert script, jeez, må nesten prøve å lære meg noe selv.

Brukeravatar

Kelemvor
Innlegg: 1221
Registrert: man 19 jun, 2006
Sted: Tønsberg
Kontakt:

Legg innav Kelemvor » tir 01 feb, 2011

schmack: Også må du prøve å skrive det samme scriptet i python.. ;)

Brukeravatar

Saihtam
Innlegg: 375
Registrert: fre 17 apr, 2009
Sted: Sunde, Kvinnherad, Hordaland, Norway

Legg innav Saihtam » tir 01 feb, 2011

Kelemvor skrev:schmack: Også må du prøve å skrive det samme scriptet i python.. ;)


Hahah! Venta på det! :D
Mvh
Saihtam

Brukeravatar

Ezben
Innlegg: 621
Registrert: man 03 mar, 2008
Sted: En øy vest for Bergen

Legg innav Ezben » tir 01 feb, 2011

Kelemvor skrev:schmack: Også må du prøve å skrive det samme scriptet i python.. ;)


Hvor kan du bruke dette scriptet om han skriver det i pyton?
The road to success is always under construction.

Brukeravatar

Kelemvor
Innlegg: 1221
Registrert: man 19 jun, 2006
Sted: Tønsberg
Kontakt:

Legg innav Kelemvor » tir 01 feb, 2011

Maya.. Poenget er bare at MEL ikke er så veldig fleksibelt, og at man bør etterstrebe å lære seg Python. Å håndtere data i MEL er unødvendig vanskelig i motsetning til Python, i tillegg til at OOP er mye kraftigere enn funksjonsbasert programmering.

Et lite eksempel:

Kode: Velg alt

#Get the selected object
objs = pm.selected()
#Get the value for the gridSize
size = pm.floatSliderGrp('gridSize', q=True, v=True)
#Get the value from the checkBoxes
extrudeFaces = pm.checkBox('extrudeFaces', q=True, v=True)
cleanEdges = pm.checkBox('cleanEdges', q=True, v=True)

#For each selected object
for obj in objs:
  edges = obj.e #ikke sikker på denne når jeg ikke får testet i Maya
.
.
.
osv


Poenget er at man får mindre kode, mer lettlest kode og man får beholde objekter som objekter, og ikke som en string man må bruke for å gjøre en selection med.
Sist redigert av Kelemvor den tir 01 feb, 2011, redigert 1 gang totalt.


Gå tilbake til «Modellering»

Hvem er online

Brukere i dette forumet: Ingen registrerte brukere og 4 gjester

cron