Skocz do zawartości

Statystyki punktów dla krzywych


Rekomendowane odpowiedzi

Napisano

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?

  • Odpowiedzi 5
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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

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

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

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