mandi Napisano 30 Październik 2008 Napisano 30 Październik 2008 Witam, gdzie w Maya się włącza statystyki liczby wybranych punktów/ wszystkich punktów, lecz nie dla polygonów, a dla krzywych/nurbsów? Jak dotychczas stosowalem statystyki okna Component Editor jako obejście. Pozdrawiam Artur PS. Mam sporo doświadczenia z Rhino, i po migracji na Maya'e wydaje mi się, że NURBSy sąw niej mocno kulawe, że komendy do łączenia/dzielenia krzywych, tworzenia powierzchnii etc co prawda działają, ale są nieintuicyjne (antyintuicyjne nawet). Czy inni też tego doświadczyli tego? Czy jest jakiś plugin/ obejście, by moc efektywnie pracować z nurbsami w mayi?
ca mel Napisano 30 Październik 2008 Napisano 30 Październik 2008 Czesc, ja to sobie napisalem wlasny skrypt wyswietlajacy na ekranie kilka Hud'ow, jeden pokazuje ilosc zaznaczonych elementow (nie wazne czy to cv, obiekty swiatla czy cokolwiek) a drugi detaliczne informacje o swiatlach, cieniach, polygonach, nurbsach. Tu jest jego odchudzona wersja, pokazuje selekcje i info o nurbsach, wyswietla w miare inteligentnie, wykrywa rodzaj krzywej, jesli stopien jest inny niz 3 albo precyzja wyswietlania jest inna niz dla renderu to wyswietla dodatkowe informacje itp. Ma jednak wade - jak zaznaczy sie duzo wierzcholkow (tak wiecej niz 5-10tys) to bardzo zwalnia wyswietlanie w viewporcie. Dlatego da sie wylaczac glowna informacje (rozmiar zaznaczenia) za pomoca menu (tam gdzie reszta HUD'ow) i wtedy jest normalnie. Pozdrawiam! ///////////////////// headsUpDisplay -section 5 -block 1 -blockSize "small" -labelFontSize "small" -label "" -command "checkSelectionInfo" -attachToRefresh as_HUDMenuSelectionDetails; headsUpDisplay -section 3 -block 0 -blockSize "small" -label "Sel:" -labelFontSize "small" -dataFontSize "small" -command "checkSelection" -attachToRefresh as_HUDSelection; if (!`optionVar -ex as_HUDC`) { optionVar -intValue as_HUDC 1; } if (!`optionVar -ex as_HUDD`) { optionVar -intValue as_HUDD 1; } menuItem -parent $gHeadsUpDisplayMenu -checkBox (`optionVar -q as_HUDD`) -label "- Selection details" -command "optionVar -intValue as_HUDD `menuItem -q -cb as_HUDMenuSelectionDetails`; headsUpDisplay -e -vis `optionVar -q as_HUDD` as_HUDMenuSelectionDetails;" -annotation "Selection info: Toggle the display of selection informations" as_HUDMenuSelectionDetails; headsUpDisplay -e -vis `optionVar -q as_HUDD` as_HUDMenuSelectionDetails; menuItem -parent $gHeadsUpDisplayMenu -checkBox (`optionVar -q as_HUDC`) -label "- Selection" -command "optionVar -intValue as_HUDC `menuItem -q -cb as_HUDSelection`; headsUpDisplay -e -vis `optionVar -q as_HUDC` as_HUDSelection;" -annotation "Number of Selected objects" as_HUDSelection; headsUpDisplay -e -vis `optionVar -q as_HUDC` as_HUDSelection; ///////////////////////////////////// proc string checkSelection() { // string $selection[] = `ls -sl -fl`; if (`size $selection`) return (`size $selection`); else return "?"; } proc string checkSelectionInfo() { string $outTextRet = ""; string $lista_szejpow[]; string $lista_z_grupa; string $my_tokens_buffer[]; string $atrybutDoSprawdzenia; string $typ_nodu; string $dlugoscKrzywej; string $forma_krzywej = "", $forma_krzywejU = "", $forma_krzywejV = ""; int $myCurveForm, $myCurveFormU, $myCurveFormV; int $myTokensNum = 0; int $myLightDecay; int $ilosc_kropkowatych = 0; int $ilosc_szejpow = 0; /// string $selekcja_informacyjna[] = `ls -sl`; //if ( size($selekcja_informacyjna) for ($kolejny_informacyjny in $selekcja_informacyjna) { if (`gmatch $kolejny_informacyjny "*.*"`) { $ilosc_kropkowatych++; $myTokensNum = `tokenize $kolejny_informacyjny "." $my_tokens_buffer`; $kolejny_informacyjny = $my_tokens_buffer[0]; } $typ_nodu = `nodeType $kolejny_informacyjny`; if ($typ_nodu == "transform") { $lista_szejpow = `listRelatives -shapes $kolejny_informacyjny`; if ( size($lista_szejpow) ) { $lista_z_grupa = $kolejny_informacyjny + "|" + $lista_szejpow[0]; $typ_nodu = `nodeType $lista_z_grupa`; } else $typ_nodu = "grupkaToJest"; } //print $lista_szejpow switch ($typ_nodu) { case "nurbsCurve": $atrybutDoSprawdzenia = $kolejny_informacyjny + ".spans"; $myCurveSpans = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".degree"; $myCurveDegree = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".form"; $myCurveForm = `getAttr $atrybutDoSprawdzenia`; switch ($myCurveForm) { case 0: $forma_krzywej = "Open"; $myCvNumber = $myCurveSpans + $myCurveDegree; break; case 1: $forma_krzywej = "Closed"; $myCvNumber = $myCurveSpans; break; case 2: $forma_krzywej = "Periodic"; $myCvNumber = $myCurveSpans; break; default: $forma_krzywej = "Unknow"; break; } if ($myCurveDegree != 3) $outTextRet = $forma_krzywej + " (" + $myCurveDegree + "): CV " + $myCvNumber + " Span " + $myCurveSpans; else $outTextRet = $forma_krzywej + ": CV " + $myCvNumber + " Span " + $myCurveSpans; // $myCurveLenght = `arclen $kolejny_informacyjny`; // $dlugoscKrzywej = $myCurveLenght; // $dlugoscKrzywej = `substring $dlugoscKrzywej 1 7`; // $outTextRet += " L " + $dlugoscKrzywej; // if ($myTokensNum) $outTextRet += " " + $my_tokens_buffer[1]; if ($ilosc_kropkowatych == 1) { $outTextRet += " " + $my_tokens_buffer[1]; if ($myTokensNum == 3) $outTextRet += "." + $my_tokens_buffer[2]; } break; case "nurbsSurface": $atrybutDoSprawdzenia = $kolejny_informacyjny + ".spansU"; $myCurveSpansU = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".degreeU"; $myCurveDegreeU = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".formU"; $myCurveFormU = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".spansV"; $myCurveSpansV = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".degreeV"; $myCurveDegreeV = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".formV"; $myCurveFormV = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".curvePrecision"; $myCurvePrecision = `getAttr $atrybutDoSprawdzenia`; $atrybutDoSprawdzenia = $kolejny_informacyjny + ".curvePrecisionShaded"; $mycurvePrecisionShaded = `getAttr $atrybutDoSprawdzenia`; switch ($myCurveFormU) { case 0: $forma_krzywejU = "Open"; $myCvNumberU = $myCurveSpansU + $myCurveDegreeU; break; case 1: $forma_krzywejU = "Closed"; $myCvNumberU = $myCurveSpansU; break; case 2: $forma_krzywejU = "Periodic"; $myCvNumberU = $myCurveSpansU; break; default: $forma_krzywejU = "Unknow"; break; } switch ($myCurveFormV) { case 0: $forma_krzywejV = "Open"; $myCvNumberV = $myCurveSpansV + $myCurveDegreeV; break; case 1: $forma_krzywejV = "Closed"; $myCvNumberV = $myCurveSpansV; break; case 2: $forma_krzywejV = "Periodic"; $myCvNumberV = $myCurveSpansV; break; default: $forma_krzywejV = "Unknow"; break; } string $myCurvePrecisionsInfo = "P " + $myCurvePrecision; if ($myCurvePrecision != $mycurvePrecisionShaded) $myCurvePrecisionsInfo += "(s" + $mycurvePrecisionShaded + ")"; if (($myCurveDegreeU != 3) || ($myCurveDegreeV != 3)) $outTextRet = $forma_krzywejU + "(" + $myCurveDegreeU + ")" + "/" + $forma_krzywejV + "(" + $myCurveDegreeV + "):" + $myCurvePrecisionsInfo + " CV " + $myCvNumberU + "/" + $myCvNumberV + " Sp " + $myCurveSpansU + "/" + $myCurveSpansV; else $outTextRet = $forma_krzywejU + "/" + $forma_krzywejV + ": " + $myCurvePrecisionsInfo + " CV " + $myCvNumberU + "/" + $myCvNumberV + " Sp " + $myCurveSpansU + "/" + $myCurveSpansV; if ($ilosc_kropkowatych == 1) { $outTextRet += " " + $my_tokens_buffer[1]; if ($myTokensNum >= 3) $outTextRet += "." + $my_tokens_buffer[2]; if ($myTokensNum == 4) $outTextRet += "." + $my_tokens_buffer[3]; } break; case "grupkaToJest": $outTextRet = "Group: " + $kolejny_informacyjny; break; default: break; } if (( size($selekcja_informacyjna) > 1) && ($ilosc_kropkowatych > 1) ) break; } return $outTextRet; }
mandi Napisano 31 Październik 2008 Autor Napisano 31 Październik 2008 Ok wielkie dzięki, skrypt pokazuję liczbę spanów dla krzywych, więc to prawie jak liczba punktów, tylko -1 ;) Dzięki dzięki dzięki! Pozdro
ca mel Napisano 31 Październik 2008 Napisano 31 Październik 2008 Ale ilosc CV tez pozkazuje a to chyba najwazniejsza informacja, oblicza sobie sam na podstawie spanow i stopnia krzywej. No i tego czy jest otwarta czy zamknieta ;] Jesli potrzebujesz tez ilosci edit pointow to daj znac, zaden problem to dopisac. Zrobilem go tak zeby pokazywal najistotniejsze rzeczy i zajmowal jak najmniej miejsca w bo troche zasmieca widok na ekranie. Pozdr.
mandi Napisano 3 Listopad 2008 Autor Napisano 3 Listopad 2008 Skrypt jest w zupełności wystarczający. Dzięki dzięki dzięki!
Rekomendowane odpowiedzi
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ę