Character Setup   |   Downloads   |   Tutorials   |   Animations   |   Contact
Noder i Maya av Kjetil H Kulander

Noder i Maya av Kjetil H Kulander

I Maya kan man lage koblinger mellom de fleste attributter av samme type. Lager man direkte koblinger fra en attributt til en annen, vil verdien til attributten man kobler til være den samme som attributten man kobler fra. Ved å bruke noder kan man forandre disse verdiene:

Noder i Maya er "motorer" som driver dependency graph'en.

En node har forskjellige informasjons plugger; Input og Output plugger. I Maya fremstilles disse pluggene som input og output attributter.

Data sendes inn i nodens input plugger. Noden utfører forskjellige operasjoner, og ny data sendes så ut ouput pluggen.

Alt i Maya er bygd opp av noder. All informasjon i scenen er lagret i forskjellige typer noder. Bare noen få av nodene som er tilgjengelig i Maya kan lages fra Maya brukergrensesnitt. Alle noder kan lages med MEL kommandoen "createNode" etterfulgt av navnet på noden. Hvis man skal lage en multiplyDivide node skriver man "createNode multiplyDivide".

Å bruker noder til rigging kan sammenliknes med å bruke expressions. I stedet for å skrive expression, kan man bruke en node som gjøre den samme operasjonen. Når man bruker expression, bruker man faktisk en node da også; Uttrykket man skriver blir lagret i en expression node. Ved å kombinere flere noder kan man ofte gjøre det samme som man kan med expression. Hvis man har mulighet til å bruke noder isteden for expression så er det en stor fordel. Operasjonen i en node kjøres ca. 10 ganger raskere en samme operasjon med MEL. Med Maya-Api og C++ kan man også lage sine egene noder.

Nedenfor er en liste med viktige noder innen rigging:

multiplyDivide
plusMinusAverage
clamp
condition
setRange
blendTwoAttr
distanceBetween
angleBetween
pointOnSurfaceInfo
pointOnCurveInfo
curveInfo

 multiplyDivide

inputs:

input1

input2

output:

output

Denne noden brukes til å multiplisere, dividere eller finne potensen av to tall. Med attributten ".operation" kan man velge mellom Multiply, Divide eller Power.

input1 multipliseres eller divideres med input2. Input verdiene kan enten være koblinger fra andre attributter, eller du kan skrive inn dine egene verdier.

Velger du Power finner du potensen; input1 blir multiplisert med seg selv antall ganger som input2. Hvis input1 er 2 og input2 er 4. Output vil da være 2 * 2 * 2 * 2 = 16.

 plusMinusAverage

inputs:

input1D[n]

input2D[n]

input3D[n]

outputs:

output1D

output2D

output3D

Denne noden summerer, subtraherer eller finner gjennomsnittet. Med attributten ".operation" kan man velge mellom Sum, Subtract eller Average.


Multi-attributter

Inputs attributtene i denne noden skiller seg fra vanlige attributter i Maya. Attributtene er multi-attributter. I en vanlig float-attributt kan man kun lagre én verdi. I en float-multi-attributt kan man lagre så mange verdier man vil. Verdiene lagres i en liste, og posisjonen i listen beskrives med [n] bak navnet på attributten. Listens første verdi er posisjon nr [0].

Noden summerer alle verdiene i input attributtenes lister. input1D summeres ikke med input2D, men alle verdiene i input1D summeres, etc.

Noden har ingen input oppføringer når den lages. Det ikke er noen grense på hvor mange oppføringer man kan ha. Men noden kan jo ikke lages med en uendelig lang liste! Man er nødt til å lage disse oppføringene når man trenger dem. I Attribute Editor har man derfor ingen felter der du kan skrive inn verdier.

Oppføringene kan få sine verdier enten med koblinger fra andre attributter, eller man kan gi dem verdier med en enkel MEL kommando.


MEL

For å gi verdier med MEL kommando merker du først noden og skriver:

setAttr ".input1D[n]" 2;

"setAttr" er kommandoen for å gi verdi til en attributt.

"".input1D[n]"" er navnet på attributten. Siden noden er markert slipper man å skrive navnet på noden.

"[n]" er plasseringen i listen. n bytter du ut med nr for plasseringen i listen. Den første oppføringen skal være nr. 0.

"2" Er verdien som attributten skal få.


Koblinger

Fra Connection Editor er kun én oppføring tilgjengelig før oppføringene er laget. Flere oppføringer kan lages ved å gi dem verdi 0, med MEL commando som forklart over. Når oppføringen har fått en verdi blir den tilgjengelig i Connection Editor og kan kobles til en annen attributt.

Hypergraph / Hypershade

Hvis du gjør koblingene i Hypergraph eller Hypershade "slipper" du å bruke MEL kommandoer for å koble til denne noden:

1. Høyreklikk på noden du skal koble fra og velg attributten som skal kobles til plusMinusAverage noden.

2. Høyreklikk på plusMinusAverage noden. I input listen vil du alltid ha tilgjenelig en tom oppføring nederst som du kan koble til.

 clamp

input:

input

output:

output

Clamp noden setter en spærre på hvor høy og lav verdi som kan sendes igjennom noden.

Output verdiene vil være samme som input, men ikke mer eller mindre en attributtene min og max. Hvis input verdien er 2, og max er 1, så vil output verdien være 1 siden det er den høyeste verdien noden kan sende ut.

 condition

input:

firstTerm

secondTerm

colorIfTrue

colorIfFalse

output:

outColor

Condition noden returnerer enten verdiene fra attributene colorIfTrue eller colorIfFalse basert på forholdet mellom verdiene i attributene firstTerm og secondTerm.

Attributten operation bestemmer hva slags forhold som skal kontrolleres. Man kan f.eks sjekke om firstTerm er større enn secondTerm. Hvis firstTerm ér større returneres verdiene fra colorIfTrue. Hvis den ikke er større returneres verdiene fra colorIfTrue.

 setRange

input:

value

output:

outValue

SetRange noden skalerer verdiene fra det du setter som oldMin og oldMax til verdiene du setter som min og max.

Hvis du har en rotasjons attributt med verdier fra 0 til 360, kan du skalere disse verdiene ned til mellom 0 og 1. Du setter da oldMin og oldMax til 0 og 360. Og min og max til 0 og 1.

 blendTwoAttr

input:

input[0]

input[1]

output:

output

Denne noden blander samme verdiene fra input[0] og input[1]. Den kan brukes som en "switch" mellom to attributter. Attributten "attributesBlender" bestemmer forholdet mellom input[0] og input[1]:

output = (1 - attributesBlender) * input(0) + attributesBlender * input(1)

input attributtene er multi-attributter. Se "plusMinusAverage" for forklaring på multi-attributter.

 distanceBetween

input:

point1

point2

inMatrix1

inMatrix2

output:

distance

Denne noden måler avstand mellom point1 og point2, eller inMatrix1 og inMatrix2.

Du kan koble translate fra to objekter til point attributtene for å finne lokal avstand innenfor en gruppe. Du kan da skalere gruppen uten at dette påvirker distance attributten.

Du kan koble worldMatrix fra to objekter til inMatrix attributtene for å finne objektenes avstand i world space. Hvis objektene ligger i forskjellige grupper som flyttes eller skaleres, så vil dette påvirke distance attributten selv om translate attributtene er det samme.

 angleBetween

input:

vector1

vector2

output:

axisAngle.angle

Denne noden finner vinkelen mellom to vector1 og vector2.

 pointOnSurfaceInfo

input:

inputSurface

output:

result

Ved å koble worldSpace fra en NURBSshape til InputSurface i pointOnSurfaceInfo noden returneres informasjon om et punkt på overflaten. Hvor på overflaten bestemmes med attributtene parameterU og parameterV.

Noden returnerer informasjon om punktets posisjon og overflatens normaler. Man kan blant annet bruke denne informasjonen til å feste andre objekter til overflaten.

 pointOnCurveInfo

input:

inputCurve

output:

result

Ved å koble worldSpace fra en NURBScurveShape til InputCurve i pointOnCurveInfo returneres informasjon om et punkt på kurven. Hvor på kurven bestemmes med attributten parameter.

Noden returnerer informasjon om punktets posisjon, normaler og krumming. Man kan blant annet bruke denne informasjonen til å feste andre objekter til kurven.

 curveInfo

input:

inputCurve

output:

arcLength

Ved å koble worldSpace fra en NURBScurveShape til InputCurve i CurveInfo noden returneres lengden på kurven i attributten arcLength.


Copyright 2005 Kjetil H Kulander
www.mrmotion.net