Vai al contenuto
  • Annunci

    • D@ve

      Visita la nuova Home Page di Treddi.com   19/02/2018

      E' finalmente on-line la nuova home page di Treddi.com. Da oggi tutti i contenuti del portale saranno facilmente accessibili e visibili direttamente dall'home page dove avrete la possibilità di dare i vostri like a contenuti, immagini e progetti. Ogni giorno potrete trovare nuovi contenuti e news relative al mondo della computer grafica e seguire le numerose attività del portale.  Fate il login e fateci avere i vostri feedback!  https://www.treddi.com/
Piro1

Lunghezza Segmenti In Maya

Recommended Posts

Ciao,

una domandina: se io voglio tracciare delle linee in maya (linee spezzate, cioè composte da segmenti retti) è possibile avere un'indicazione della lunghezza rispetto al vertice precedente, piuttosto che avere le coordinate totali <_<

non mi sono spiegato bene

Intendevo: invece di avere x y e z per ogni punto, vorei avere la lunghezza del segmento rispetto all'ultimo punto, magari anche in tempo reale, senza dovere isurare.

E' posibile inoltre visualizzare la lunghezza di questo segmento direttamente sulla viewport mentre si traccia?

Eh eh, voglio troppo eh?

grazie

Piro

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Magari ci fosse un modo, ma Maya non è un CAD, e se devi fare cose molto precise, ti merita farlle su un CAD e poi importarle in Maya...comunque se trovi il modo, magari un Plugin faccelo sapere che intteresserebbe anche a me! :P

Pensavo che forse si potrebbe far funzionare il Measure Tool allo scopo, connettendolo allo strumento curva in qualche modo nel connection editor???! :blink2: mah, chi lo sa?!

Cià. :hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Trascina questo script su una shelf:

$selection = `ls -selection`;

$measureFrom = `pointOnCurve -top 1 -pr 0 -p $selection[0]`;

$measureTo = `pointOnCurve -top 1 -pr 1 -p $selection[0]`;

distanceDimension -sp $measureFrom[0] $measureFrom[1] $measureFrom[2]

	 -ep $measureTo[0] $measureTo[1] $measureTo[2];

Selezioni la curva premi il pulsante sulla shelf e ti piazza direttamente il measure tool all'inizio e alla fine della curva. Non è esattamente quello che cerchi, ma almeno rende un po' meno tedioso l'uso del measure tool.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

azz... fighissimo.

funziona benissimo e funziona anche con gli edge dei poligoni (che poi per maya sono sempre delle curve)

E' utilissimo. grazie mille chick

a buon rendere

Piro

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Umh... scusate non vorrei dire una cavolata ma non ti conviene usare il measure tool e basta? Mi spiego. Siccome una retta passa da due punti, questi sono i due locator del measure. Clicchi, primo locator, clicchi ,secondo locatr e la parte di piano compreso tra i due punti è il primo pezzo della tua linea. Clicchi ancora e ancora, prendi il primo (o il secondo locator) e te lo snappi al secondo della prima operazione e via dicendo. Quando hai finito, Create/Curve ti crei una curva di livello 1 mediante gli EP invece che i CV e sei a posto, no (ovviamente sneppando sui Locator con Ctrl+V)???? :blink2:

Ciaciaaaaaaaaaaaaaaaaaa

Gabba

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

So che questo thread e' vecchio,

ma visto che avevo un po' di tempo libero oltre

al fatto di essere una cosa utile per tanti motivi,

ho fatto questo script.

Draggatelo all' interno di una Shelf:

string $crvSel[] = `ls -selection`;


int $crvDegree = `getAttr ($crvSel[0] + ".degree")`;

int $crvSpans = `getAttr ($crvSel[0] + ".spans")`;

int $crvPnt = $crvDegree + $crvSpans;


float $coord[] = `getAttr ($crvSel[0] + ".cv[0:" + ($crvPnt-1) + "]")`;

int $sCoord = size($coord);


int $i = 0;

int $p = 0;

int $e = 0;


for($i=0;$i<$sCoord;$i++)

	{


		$i = $e;


		string $cmd = ("distanceDimension -sp");

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i] + " -ep");

		$i++;


		$e = $i;



		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i] + ";");


		eval($cmd);


		if($p<$crvPnt)

			{

			string $pntSel2 = ("select " + $crvSel[0] + ".cv[" + $p + "];newCluster \" -envelope 1\";");

			eval($pntSel2);

			$p++;


			if($p<$crvPnt)

				{

					string $pntSel2 = ("select " + $crvSel[0] + ".cv[" + $p + "];newCluster \" -envelope 1\";");

					eval($pntSel2);

					$p++;

				}

			}


		if($i==$sCoord-1)

			{

				int $c = 0;

				string $cluster[] = `ls -type transform "cluster*"`;

				string $locator[] = `ls -type transform "locator*"`;


				for($c=0;$c<size($locator);$c++)

					{

						string $pCmd = ("parent " + $cluster[$c] + " " + $locator[$c] + ";");

						eval($pCmd);

					}


				string $selGD = ("select -r \"distance*\";group -n G_dDimension; xform -os -piv 0 0 0;");

				string $selGL = ("select -r \"locator*\";group -n G_Locator; xform -os -piv 0 0 0;");

				string $hideC = ("hide \"cluster*Handle*\";");

				eval($selGD);

				eval($selGL);

				eval($hideC);

			}

	}

Adesso create una linea spezzata (potrebbe essere la planimetria di una casa o qualsiasi altra cosa..)

e con la linea appena creata selezionata eseguite lo script clicckando l'icona nella shelf.

Verranno creati dei Measure ("distanceDimension" come li chiama Maya internamente)

da un vertice al successivo, e verranno creati 2 gruppi:

G_dDimension -> conterra' tutti i "measure"

G_Locator -> conterra' tutti i locator dei"measure"

A questo punto, spostando i locators sposteremo anche i controlPoint della linea ad essi associati

e i "measure" si aggiuorneranno in tempo reale.

S.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Scusatemi,

ho corretto un bug che non permetteve di far funzionare lo script

eseguendolo piu' di una volta su linee/curve differenti perche'

il nome dei locator e dei measure era sequenziale (opzione di default di Maya).

Adesso funziona tutto perfettamente.

///////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////


string $crvSel[] = `ls -selection`;


int $crvDegree = `getAttr ($crvSel[0] + ".degree")`;

int $crvSpans = `getAttr ($crvSel[0] + ".spans")`;

int $crvPnt = $crvDegree + $crvSpans;


float $coord[] = `getAttr ($crvSel[0] + ".cv[0:" + ($crvPnt-1) + "]")`;

int $sCoord = size($coord);


int $i = 0;

int $p = 0;

int $e = 0;


for($i=0;$i<$sCoord;$i++)

	{

		$i = $e;


		string $cmd = ("distanceDimension -sp");

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i] + " -ep");

		$i++;


		$e = $i;


		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i] + ";");


		eval($cmd);


		if($p<$crvPnt)

			{

			string $pntSel2 = ("select " + $crvSel[0] + ".cv[" + $p + "];newCluster \" -envelope 1\";");

			eval($pntSel2);

			$p++;


			if($p<$crvPnt)

				{

					string $pntSel2 = ("select " + $crvSel[0] + ".cv[" + $p + "];newCluster \" -envelope 1\";");

					eval($pntSel2);

					$p++;

				}

			}


		if($i==$sCoord-1)

			{

				int $c = 0;

				string $cluster[] = `ls -type transform "cluster*"`;

				string $locator[] = `ls -type transform "locator*"`;


				for($c=0;$c<size($locator);$c++)

					{

						string $pCmd = ("parent " + $cluster[$c] + " " + $locator[$c] + ";");

						eval($pCmd);

					}


				string $selRGD = ("select -r \"distance*\";renameSelectionList(\"" + $crvSel[0] + "_distance\");group -n G_dDimension; xform -os -piv 0 0 0;");

				string $selRGL = ("select -r \"locator*\";renameSelectionList(\"" + $crvSel[0] + "_locator\");group -n G_Locator; xform -os -piv 0 0 0;");

				string $selRGC = ("select -r \"cluster*\";renameSelectionList(\"" + $crvSel[0] + "_cluster\");");

				string $hideC = ("hide \"cluster*Handle*\";");

				eval($selRGD);

				eval($selRGL);

				eval($selRGC);

				eval($hideC);

			}

	}


///////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////

S.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Adesso funziona tutto perfettamente.

No, adesso funziona tutto perfettamente.. :blush:

///////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////

{

string $crvSel[] = `ls -selection`;


int $crvDegree = `getAttr ($crvSel[0] + ".degree")`;

int $crvSpans = `getAttr ($crvSel[0] + ".spans")`; 

int $crvPnt = $crvDegree + $crvSpans;


float $coord[] = `getAttr ($crvSel[0] + ".cv[0:" + ($crvPnt-1) + "]")`;

int $sCoord = size($coord);


int $i = 0;

int $p = 0;

int $e = 0;


for($i=0;$i<$sCoord;$i++)

	{

		string $selRGD = {};

		string $selRGL = {};

		string $selRGC = {};

		string $hideC = {};


		$i = $e;


		string $cmd = ("distanceDimension -sp");

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i] + " -ep");

		$i++;


		$e = $i;


		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i]);

		$i++;

		$cmd += (" " + $coord[$i] + ";");


		eval($cmd);


		if($p<$crvPnt)

			{

			string $pntSel2 = ("select " + $crvSel[0] + ".cv[" + $p + "];newCluster \" -envelope 1\";");

			eval($pntSel2);

			$p++;


			if($p<$crvPnt)

				{

					string $pntSel2 = ("select " + $crvSel[0] + ".cv[" + $p + "];newCluster \" -envelope 1\";");

					eval($pntSel2);

					$p++;

				}

			}


		if($i==$sCoord-1)

			{


				int $c = 0;

				string $cluster[] = `ls -type transform "cluster*"`;

				string $locator[] = `ls -type transform "locator*"`;


				string $selRGD = ("select -r \"distance*\";string $selDist[] = `ls -sl -type transform`;select -r $selDist;renameSelectionList(\"" + $crvSel[0] + "_distance\");group -n " + $crvSel[0] + "_G_Dimension; xform -os -piv 0 0 0;select -cl;");

				string $selRGL = ("select -r \"locator*\";string $selLoc[] = `ls -sl -type transform`;select -r $selLoc;renameSelectionList(\"" + $crvSel[0] + "_locator\");group -n " + $crvSel[0] + "_G_Locator; xform -os -piv 0 0 0;select -cl;");

				string $selRGC = ("select -r \"cluster*\";string $selClu[] = `ls -sl -type transform`;select -r $selClu;renameSelectionList(\"" + $crvSel[0] + "_cluster\");select -cl;");

				string $hideC = ("hide \"" + $crvSel[0] + "_cluster*\";");


				for($c=0;$c<size($locator);$c++)

					{

						string $pCmd = ("parent " + $cluster[$c] + " " + $locator[$c] + ";");

						eval($pCmd);						

					}

				eval($selRGD);

				eval($selRGL);

				eval($selRGC);

				eval($hideC);

			}

	}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////

S.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora


  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×