guzikk
Members-
Liczba zawartości
17 -
Rejestracja
-
Ostatnia wizyta
Miasto (opcjonalne)
-
Miasto
Warszawa
guzikk's Achievements
Newbie (1/14)
10
Reputacja
-
zasadniczo to skrót 'z' od zawsze był tak samo traktowany jak ctrl+z. Jesli chcesz zmienic jakiekolwiek ustawienia w skrótach to window>setting/preferences>hotkey editor
-
Hmm...możesz też stworzyć curve [np okrąg] i podpiąć do niego kamerke poprzez attach to motion path i jest git. Do tego możesz albo ustawić kąt kamery na sztywno [i wtedy camera będzie na przykład zawsze poruszać się prostopadle do linii prawym bokiem do przodu] albo stworzyć locator, podpiąć camerkę aim constraintem pod ten locator i wtedy camerka zawsze bedzie na niego patrzyła niezależnie od tego jaka będzie jej trasa [bo przecież można trochę zmodyfikować owy okrąg]. Mam nadzieję że pomogłem, pozdrawiam.
-
Coś chyba zły link do galerii bo mi przynajmniej nie chce się ona otworzyć. Zaś samo autokey polega na tym że zmieniając dowolne współrzędne obiektu w danej klatce są one automatycznie keyowane więc może po prostu niechcący przesuwasz obiekt w przestrzeni w innej klatce.
-
Wybaczcie że się wtrącam ale mam pytanie do Krisa - a gdybym chciał uzyskać podobną funkcjonalność skrzydła tyle że pod Mayą to co byś polecał użyć do tego by było to zarówno efektowne jak i efektywne? Od razu powiem że nigdy wcześniej nie robiłem rigu skrzydła i pierwsze co mi przyszło do głowy do jakiś skrypt napisać a w szczególnych przypadkach wykorzystać blendshape'y.
-
W zasadzie nie dużo wiem o animacji ale może to Ci pomoże: jeśli chodzi o drugie pytanie to otwórz graph editora i tam się baw. Ad edit2: jak wyżej. Jeśli chcesz to tylko zapętlić to zrób curves->pre-infinity->cycle with offset
-
"Chyba Viste wywale i przejde na 7." = Chyba wywalę martwą rybę i kupię sobie żywą. Jasne że się przerzucaj. Btw - też jestem z wawy. Zupełnie nie ciągnie mnie do modelowania, za to od pewnego czasu rigguje i poszukuję modeli do rigu. Zarówno postaci jak i maszyn. Może chciałbyś mi podesłać pare swoich modeli? :) Ponadto bardzo chętnie wymienię się doświadczeniami z riggowania. Jakbyś był chętny to wal: [email protected]
-
wyczerpująco i jasno, dzięki. O to mi dokładnie chodziło : )
-
Z góry przepraszam, że tyle pytań zadaje, ale nie wszystko jest do znalezienia w sieci : P. Otóż chciałem się dowiedzieć na czym polega mechanizm działania node'a. Dlaczego jest on szybszy od expression skoro, i to, i to, jak mi się zdaje, wykonuje działania w każdym framesie? Innymi słowy na czym polega ta cudowna różnica między tymi dwoma elementami? W jakich przypadkach lepiej użyć Node'a, a w jakich Expression [to chyba poniekąd wyniknie samo z odpowiedzi na pierwsze pytanie :)]? Pozdrawiam
-
Czy są jakieś sposoby na on/off expression? Narazie poradziłem sobie z problemem robiąc atrybut typu boolean i wsadziłem całe expression do warunku if [if zależny od owego atrybutu]. Ale mam dziwne przeczucie że istnieje przynajmniej jeszcze jedna metoda stworzenia takiego switcha.
-
z tego co wiem nic się nie zmieniło. Jakiś czas temu podjąłem się próby pisania w pythonie pod mayą i zrezygnowałem po tym jak się okazało że i tak i tak sprowadza się to do operowania na MELu. A - tak jak mówisz - przydałoby się móc pisać w innym języku niż MEL. Wręcz możnaby się pokusić o aplikację typu Eclipse albo NetBeans dla Mayi. To by dopiero było. Wygodniejsze skryptowanie i tworzenie GUI. Ehh...
-
Oto działający kod: if(`window -exists "addFKControl"`) deleteUI "addFKControl"; if(`windowPref -exists "addFKControl"`) windowPref -r "addFKControl"; window -rtf true -title "Add FK Controller" addFKControl; columnLayout -rowSpacing 5 addFKControlColumn1; intSliderGrp -label "Number of sides" -field true -minValue 3 -maxValue 32 -value 4 FKnumber; intSliderGrp -label "Height divisions" -field true -minValue 1 -maxValue 32 -value 1 FKheight; floatSliderGrp -label "Radius" -field true -minValue .0001 -maxValue 2 -value 1 FKradius; text -label "Controller Orientation"; separator -ann "Controller Orientation" -w 250; radioCollection addFKRadioGrp1; rowLayout -numberOfColumns 3 addFKControlRow1; radioButton -label "+X" posX; radioButton -label "+Y" posY; radioButton -label "+Z" posZ; setParent ..; rowLayout -numberOfColumns 3 addFKControlRow2; radioButton -label "-X" negX; radioButton -label "-Y" negY; radioButton -label "-Z" negZ; setParent ..; separator -w 250; button -c "addFKControlPrep" -label "Create"; setParent ..; showWindow addFKControl; radioCollection -e -sl posX addFKRadioGrp1; // Preparation phase global proc addFKControlPrep(){ $sel = `ls -sl`; string $a; float $length; // See if we have anything selected if (size($sel) == 0){ error "Select a target"; } // Recurence trough selection for($a in $sel){ $child = `listRelatives -c $a`; if (size($child) > 0 && nodeType($child[0]) == "joint"){ // If the target is a joint calculate the length float $componentX = `getAttr ($child[0] + ".tx")`; float $componentY = `getAttr ($child[0] + ".ty")`; float $componentZ = `getAttr ($child[0] + ".tz")`; $length = `mag (>)`; } else { // If not - set length to 1 $length = 1; } int $nGon = `intSliderGrp -q -value "FKnumber"`; // Read values int $height = `intSliderGrp -q -value "FKheight"`; float $rad = `floatSliderGrp -q -value "FKradius"`; string $orient = `radioCollection -q -sl addFKRadioGrp1`; addFKControl( $nGon, $height, $length, $rad, $a, $orient); // Make the main function } } global proc string addFKControl ( int $nGon, int $height, float $len , float $radius, string $targetName, string $orient) { string $name = $targetName + "_FK_control"; float $vertCoords[] = {}; string $command = "curve -d 1 "; float $step = 360/$nGon; float $angle = 0 - ($step/2); string $endcommand = " "; for ($a = 0; $a $angle +=$step; float $resultX = (`cos (deg_to_rad($angle))`) * $radius; float $resultY = (`sin (deg_to_rad($angle))`) * $radius; $vertCoords[($a*2)] = $resultX; $vertCoords[($a*2) + 1] = $resultY; } $vertCoords[$nGon*2] = $vertCoords[0]; $vertCoords[($nGon*2)+1] = $vertCoords[1]; for ($n = 0; $n float $div = 1.0; float $flHeight = ($height/$len) * 1.0; int $count = 0; for ($a = 0; $a float $div = `floor($n/$nGon)`; $command += "-p " + $vertCoords[($a*2)] + " " + ($n/$flHeight) + " " + $vertCoords[($a*2) + 1] + " "; $command += "-p " + $vertCoords[(($a+1)*2)] + " " + ($n/$flHeight) + " " + $vertCoords[(($a+1)*2) + 1] + " "; $command += "-p " + $vertCoords[(($a+1)*2)] + " " + (($n+1)/$flHeight) + " " + $vertCoords[(($a+1)*2) + 1] + " "; $command += "-p " + $vertCoords[($a*2)] + " " + (($n+1)/$flHeight) + " " + $vertCoords[($a*2) + 1] + " "; $command += "-p " + $vertCoords[($a*2)] + " " + ($n/$flHeight) + " " + $vertCoords[($a*2) + 1] + " "; $count = $a; } $command += "-p " + $vertCoords[($count*2)] + " " + (($n + 1)/$flHeight) + " " + $vertCoords[($count*2) + 1] + " "; } $command += $endcommand; $command += " -n "; $command += $name; $curveNode = `eval ($command)`; $curveNodeShape = `listRelatives -c $curveNode`; rename $curveNodeShape ($curveNode + "Shape"); if ($orient == "posX"){ setAttr ($curveNode + ".rotateZ") -90; makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $curveNode; } if ($orient == "negX"){ setAttr ($curveNode + ".rotateZ") 90; makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $curveNode; } if ($orient == "negY"){ setAttr ($curveNode + ".rotateZ") 180; makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $curveNode; } if ($orient == "posZ"){ setAttr ($curveNode + ".rotateX") 90; makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $curveNode; } if ($orient == "negZ"){ setAttr ($curveNode + ".rotateZ") -90; makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $curveNode; } $controlOrient = `group -em -n ($targetName + "_FK_control_orient")`; setAttr ($controlOrient + ".scalePivotX") ($radius / 10); setAttr ($controlOrient + ".scalePivotY") ($radius / 10); setAttr ($controlOrient + ".scalePivotZ") ($radius / 10); parent $curveNode $controlOrient; copyMatrixAddFK ($targetName, $controlOrient, 1); // Set proper rotation order. setAttr ($curveNode + ".rotateOrder") (`getAttr ($targetName + ".rotateOrder")`); return $curveNode; } global proc copyMatrixAddFK( string $sourceObj, string $targetObj, int $worldSpace){ string $command; float $sourceMatrix[]; if($worldSpace == 1){ $sourceMatrix = `xform -q -ws -m $sourceObj`; $command = "xform -ws -m "; } else { $sourceMatrix = `xform -q -os -m $sourceObj`; $command = "xform -os -m "; } string $matrix; string $a; for($a in $sourceMatrix){ $matrix += $a; $matrix += " "; } $command += $matrix; $command += $targetObj; eval($command); }; Wszystko pięknie bangla. Istny miodek. Big Thx Kroopson za skrypt.
-
dobra, znalazłem błąd. w 4 linii kodu if(`windowPref -exists "addFKControl") brakowało gravisa przed nawiasem zamykającym if(`windowPref -exists "addFKControl"`) EDIT oho, widzę tu więcej błędów. Prawdopodobnie przez to że zmieniły się flagi metod. Postaram się to poprawić i przesłać wersję działającą na aktualnym oprogramowaniu.
-
Co do skryptu: wyrzuca mi syntax error. Mój ulubiony error z czasów pisania w C ;P. I szukaj tu teraz błędu składni. To ja już wolę Jave ;] Przejżę ten kod i jak znajdę przyczynę erroru to dam znać. Serdeczne dzięki za wyjaśnienie problemu - zdecydowanie przyda mi się ta wiedza. Poświęcę jej niebawem więcej uwagi by dokładnie przeanalizować i zrozumieć zagadnienie interakcji constrainta na obiekt constraintowany na tyle dobrze by umieć wytłumaczyć komuś innemu.
-
Tu jednak chodzi chyba faktycznie o to na co wskazuje Kroopson. Zrobiłem parę doświadczeń i faktycznie wyszło że to nie zależy od mirrora tylko od fragmentu przestrzeni na której działam. a zatem Kroopson móglbyś konkretniej wyjaśnić co masz na myśli?
-
tylko dlaczego w po jednej stronie osi globalnej wszystko działa a po drugiej już nie. Nie jest coś spaprane z mirror jointem?