Napisano 30 Październik 200816 l 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?
Napisano 30 Październik 200816 l 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; }
Napisano 31 Październik 200816 l Autor 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
Napisano 31 Październik 200816 l 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.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto