Skocz do zawartości

Rekomendowane odpowiedzi

Napisano

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?

  • Odpowiedzi 80
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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 ..;

Napisano

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 :/

Napisano

Sorry, że odpisuję dopiero teraz ale wcięło mnie po drodze :)

 

-cc działa bez problemów, że też sam na to nie wpadłem :) chyba liczyłem na prostsze połączenie right of the box :)

 

anyway dzięki za pomoc! :)

Napisano

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?

Napisano (edytowane)

@Marten: nie, chcę zrobić pełną bryłę.

 

2tbeztytuufvnjbeztytuufvn.th.jpg

2tbeztytuufvnj

Takie coś. Tylko, że w ten sposób tworzę jedynie "ścianki", a chcę, żeby środek był wypełniony.

 

Ups, zły topic. Przepraszam.

Edytowane przez Soviet666
Gość User190
Napisano (edytowane)

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
Napisano

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.

Gość User190
Napisano

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?

Napisano

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ć :)

Napisano

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ć :)

Napisano

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

Gość User190
Napisano

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

Napisano

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 ;)

Napisano (edytowane)

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
Napisano

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ć :)

Napisano (edytowane)

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
Napisano

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.

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