Skocz do zawartości

[MEL] Drobne pytania


Destroyer

Rekomendowane odpowiedzi

Hej przepraszam, że zakłócam spokój ale mam maleńkie pytanko i nigdzie nie mogę znaleźć na nie odpowiedzi

Otóż przy tworzeniu GUI chcę zrobić textField i obok niego slider zupełnie tak samo jak przy użyciu sliderGrp ale jako oddzielne obiekty bo tylko wtedy będe miał kontrolę nad szerokością tych obiektów a w slidergrp niestety co by nie wpisywać text field zostaje stały

czy więc da się połączyć textfield ze sliderem czy też jestem skazany na slidergrp?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 80
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Oj men niestety nie używam MEL'a już dobre pół roku ale spróbuj się zainteresować layoutami.

Jak sobie zrobisz:

 

columnLayout;

textField;

slider;

setParent ..;

 

to powinny się poustawiać obok siebie. Piszę niestety z pamięci ale generalnie tak to powinno wyglądać. (Ofkors może się okazać że to nie był columLayout tylko rowLayout ale niestety trochę za dużo ostatnio siedziałem w wxWidgets i PyQt i nie pamiętam MEL'a :(

 

Mam nadzieję że pomoże

 

PS. Tak to chyba bardziej rowLayout tu się nada. od razu ci powiem że musisz mu określić z góry ilość kolumn i pamiętaj o ustawieniu rodzica dla tego layouta przez setParent ..;

Odnośnik do komentarza
Udostępnij na innych stronach

dzięki Kroopson za szybka odpowiedź, ale nie o to chodziło :) nie mam problemu z ułożeniem GUI i layoutami tylko szukam sposobu innego niż uzycie floatSliderGrp na to żeby floatField i Slider były ze sobą połączone i miały wspólną wartość a rowLayout z setParent ..; takiej funkcjonalności nie ma :/

Odnośnik do komentarza
Udostępnij na innych stronach

Lamerskie pytanie:

Ściągłem sobie en trial do Maya i chce zrobić swoje pierwsze w życiu coś :P. Obejrzałem parę tutków, ale żaden nie odpowiada na moje pytanie :(.

 

Otóż stworzyłem krzywą za pomocą CV Curve Tool, następnie wykonałem jej duplikat, przesunąłem nieco do góry. Połączyłem obydwie za pomocą Surfaces > Loft. Teraz następuje problem (:P): jak sprawić, ażeby ta moja krzywa, która jest, powiedzmy, zamkniętym kołem, była wypełniona w środku? Na razie mam tylko "ścianki". Czy CV Curve Tool się w ogóle do tego nadaje?

Odnośnik do komentarza
Udostępnij na innych stronach

Gość User190

Jak wybadać w scenie najmniejszą i największą odległość obiektu/ów od kamery? Potrzebuję jakby dynamicznego ZDeptha, w dwóch wariantach - jeden, który będzie wraz z animacją obiektu zmieniał sobie do niego skalę i drugi, który zmierzy odległości wszystkch obiektów na scenie na początku i końcu animacji i względem tego dobierze wartości wyjściowe dla ZDeptha. Pytanie jak takie dwa pomiary przeprowadzić?

Mam skrypcik w którym ręcznie mogę podać odległość min i max, ale chciałbym go bardziej zautomatyzować i przystosować do dwóch wariantów pracy - statycznej i dynamicznej. Z góry dzięki za pomoc i sory za lamerskie pytanie - przesiadam się z maxa i chcę to zrobić możliwie bezboleśnie w jak najkrótszym czasie ;)

Edytowane przez User190
Odnośnik do komentarza
Udostępnij na innych stronach

Właściwie wcale nie musisz tego robić skryptem.

Maya jest na tyle cudowna, że nie znając żadnego mela można bardzo dużo zdziałać łącząc ze sobą praktycznie wszystko.

Zrób sobie measure tool, czyli dwa lokatory z odległościomierzem, jeden przyparentuj

(albo lepiej użyj point constraint) do aktywnej kamery, a drugi do najdalszego obiektu.

Wyjście z pomiarem odległości przekieruj do old maximum w węzłach szadera głębokości.

Osobiście wolę jednak liczyć głębokość tak jak jest z automatu, a w postprodukcji

ustawiam jej autolevele. Szybko i bez dodatkowego grzebania.

 

Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość User190

Ale to i tak wymaga jakiegoś wstępnego ustawienia measure tool i przypinania. Taki wariant już stosowałem i przy dużej ilości plików jest męczący. Chciałbym to możliwie maksymalnie zautomatyzować tak, żeby obiekt w najgorszym wypadku tylko zaznaczyć i wszystko liczyło się samo. Jak to mawiają, czas to pieniądz ;)

Trzeba by napisać skrypcik tworzący measure tool, czy jest jakiś automat do tego?

Odnośnik do komentarza
Udostępnij na innych stronach

Generanie measure tool to takie dość proste narzędzie jest i można je sobie samemu napisać ... przykład measure tool od kamery persp do pSphere1 obiektu:

 

vector $pointA=`getAttr persp.translate`;

vector $pointB=`getAttr pSphere1.translate`;

vector $wektor=$pointA-$pointB;

$distance = mag($wektor);

 

nie ma co za bardzo kombinować programistycznie, a raczej matmy więcej używać :)

Odnośnik do komentarza
Udostępnij na innych stronach

Beny wszystko pięknie ale teraz pobierasz translacje tylko w przestrzeni lokalnej tych obiektów, czyli jak będziesz miał je sparentowane do czegokolwiek to już się nie będzie wynik zgadzał :)

Proponuję:

sel = `ls -sl`;
if sizeof(sel) == 1 {
$objA == "persp";
$objB == $sel[0];
} else {
$objA == $sel[0];
$objB == $sel[1];
}
vector $pointA=`xform -q -rp -ws $objA`;
vector $pointB=`xform -q -rp -ws $objB`;
vector $wektor=$pointA-$pointB;
$distance = mag($wektor);

Nie jestem pewien czy taka deklaracja zmiennej typu vector zadziała bo nie używam Maya już ponad pół roku, ale generalnie powinno hulać :)

Odnośnik do komentarza
Udostępnij na innych stronach

Masz 100% racji Czarny Bracie. Takież przeoczenie?? JA?? ... późno było, chory jestem i już od pół roku na emeryturze, więc musisz mi wybaczyć mą niekompetencję w temacie. Tak czy inaczej mam nadzieję, że idea została załapana przez słuchaczy :)

 

Z drugiej jednak strony twój kod też Maya by przyjęła z niesmakiem - a dokładnie pierwsze 2 linijki byś dostał syntax error :P

Odnośnik do komentarza
Udostępnij na innych stronach

Gość User190

Publika przyjęła przychylnie - jak tylko znajdzie chwilę czasu to przeparsuje i może plunie w stronę gawiedzi wersją kompletną i wszystko mającą ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Wszystko pięknie i wspaniale, ale zróbcie chłopcy zawodowcy jeszcze tylko automatyczne tworzenie melem nowej warstwy z przypisanym doń nowym shaderem w overridzie ktory to dostanie w set range wynik Waszych pomiarów :P

Mierzyć odległość to każdy potrafi ;)

Odnośnik do komentarza
Udostępnij na innych stronach

global proc setDistance()
{
    $sel = `ls -sl`;

    $maxScale = 20;

    vector $pointA=`getAttr persp.translate`;
    vector $pointB=`getAttr ($sel[0] + ".translate")`;
    vector $wektor=$pointA-$pointB;
    $distance = mag($wektor);

    $newMat = `shadingNode -asShader lambert`;
    $newRamp = `shadingNode -asTexture ramp`;

    removeMultiInstance -break true ($newRamp + ".colorEntryList[1]");
    removeMultiInstance -break true ($newRamp + ".colorEntryList[2]");

    connectAttr -force ($newRamp+".outColor") ($newMat + ".incandescence");
    setAttr ($newMat + ".color") -type double3 0 0 0 ;

    $valRemap = linstep(0,$maxScale,$distance);

    setAttr ($newRamp+".colorEntryList[0].color") -type double3 $valRemap $valRemap $valRemap ;
}

nameCommand -annotation "Set Distance" -command "setDistance()" setDistanceTool;
hotkey -k "u" -name "setDistanceTool";

Co robi powyższe - zaznaczasz obiekt na ktorego podstawie chcesz uzyskac "odcien szarosci", wciskasz "u" i tworzy Ci sie ramp w odcieniu szarosci zaleznie jak daleko jest ten obiekt. $maxScale daje Ci punkt referencyjny gdzie jest maks czyli od tego punktu jest "biało" (1.0 1.0 1.0). Mozesz sobie zrobic scriptJoba np. tak:

 

scriptJob -event "SelectionChanged" "setDistance";

i będzie Ci to robił za każdym razem jak zmieni Ci się selekcja. Nie wiem do czego to ma być bo z tego co rozumiem co chcesz zrobić to zupełnie bym inne podejście zrobił. Mój powyższy kod nie załatwi nikomu sprawy od ręki, ale ja tylko daję instrukcję co jak wykonać. Wierz mi, że wszystko da się zrobić i nie ma problemu, muszę wiedzieć DOKŁADNIE co ma robić narzędzie - spotykasz się wtedy z klientem i następnego dnia ma dostarczone.

 

Pozdrawiam,

Beny

Edytowane przez beny
Odnośnik do komentarza
Udostępnij na innych stronach

hmmmmm...

Ja to bym zrobił atrybut na każdym wagonie "timeoffset" i atrybut "kolys" który spiąłbym jakimś driven key'em z rotacją.

 

najłatwiej ci będzie na każdy wagon zaaplikować expression w takiej postaci że:

$wagon = "nazwawagonu" //np. wagon1_ctrl

$kolys = `getAttr -t (time - ($wagon + ".timeoffset")) "lokomotywa.kolys"`;

setAttr ($wagon + ".kolys") $kolys;

 

Ofkors to tylko ogólny opis zasady działania

 

aaa - i na lokomotywie też "kolys" musi być :)

Odnośnik do komentarza
Udostępnij na innych stronach

Cannot convert data of type float[] to type float taki errror mi wyskakuje po tym skrypcie.

float $upArmLength = 0;

float $lowArmLength = 0;

float $fullLength = 0;

string $driver = "arm_distShape.distance";

 

$upArmLength = `getAttr low_arm.tx`;

$lowArmLength = `getAttr hand.tx`;

$fullLength = $upArmLength + $lowArmLength;

 

Ktoś wie o co chodzi?

Edytowane przez bartolomeo
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli to oczywiste co napiszę - to przepraszam :)

 

Resetowałeś majkę?

 

Możliwe że zmienne już istnieją i zdefiniowane są jako arraye.

Jeśli to możliwe, to każdy skrypt bierz w klamry :) wtedy nie będzie pozostawiał po sobie syfów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności