_MergeCrv vs _RebuildCrvNonUniform

ciao ragazzi,

giusto una curiosità di un rompiscatole, posto questo mio vecchio topic:

a questo punto, posso dire di essere stato accontentato :smile:

unica cosa, rileggendo la spiegazione di Giuseppe condivisa nel link postato all’inizio del topik,
che da quanto pare sottolineava un bel problemino, mi chiedo, se e come l’avranno superato?

ps ah dimenticavo l’argomento del titolo:
ho notato che anche se imposto entrambi i comandi con 0.001 di tolleranza, il risultato è diverso.

non mi pare di aver sottolineato alcun problema. Ho detto che non condivido la spiega del manuale.

esempio della foto:
2 curve singole
2 curve unite
2 curve merge

intendevo a questo:

da quel che vedo cambiano i punti di controllo, sia in numero che in posizione

risultato dopo il comando pipie e extrisocrv risulta intrecciata

magari il problema è proprio perchè le curve dell’esempio sono in G0

:thinking: io con tutti questi richiami a post di altri thread non ci capisco na mazza…

Pipie e Extrisocrv?? :flushed:

Ma alla fine, MergeCrv serve ad unire due curve fondendole insieme, RebuildCrvNonUniform serve per ricostruire la curva con un numero di punti di distanza non uniforme (in modo da infittire i punti dove serve e diradarli dove non serve).
Nell’immagine mi pare di vedere un pipe (ovviamente devo intuire perchè allegare un file non se ne parla eh, dopo Nmila volte che ti è stato detto…) da cui hai estratto un’isoparametrica che si autointerseca a causa del fatto che il pipe di partenza si autointerseca…
Zio billy è lunedì e già mi sta partendo il mal di testa… :grimacing:
Salvio, aiutati che il ciel ti aiuta!
Posta un file con le geometrie e le richieste in merito ai comandi che non funzionano o a quello che secondo te manca.

1 Mi Piace

Rhino 8.0
Fatto due curve grado 5
Lanciato comando MergeCrv
Sinistra opzione Roundness=1 e a Destra opzione Roundness=0


Praticamente se metto Roundness a zero mi fa l’unione delle curve mantenendo inalterata la curvatura.

1 Mi Piace

ok grazie Lucio :+1:

Qualora potesse essere utile:
Nel comando _MergeCrv il “roundness” non fa altro che gestire la parte “Non-Uniform” del vettore nodi. Esempio allegato e immagine che segue.
Roundness=0 vince facile. Crea un nodo a moltiplicità intera e festa fatta
Negli altri casi il rapporto di distanza fra il nodo che si trova a parametro indicato dalla freccia e i suoi vicini è dove il roundness gestisce la distanza parametrica fra il nodo indicato e i suoi vicini,
Il grafico di curvatura con la distanza fra le rette che “sorreggono” il grafico esplicita graficamente la cosa.

roundness.3dm (69,1 KB)

5 Mi Piace

Altra cosa interessante è che il merge lavora su selezione multipla di curve.

1 Mi Piace

sto approfondendo il discorso (da non usare con cerchi spezzati)

I cerchi spezzati sono curve razionali. In questo caso il comando continua a funzionare secondo quanto sopra esposto ma il risultato “estetico” cambia molto.

Non ha alcun senso applicare il merge con “smoothness” a curve Deg2 multispan, che sono solo C1.

Nel caso di cerchi spezzati io utilizzo il Fillet Corners così mi mette il raggio su tutti gli spigoli senza trasformarmi le curve.

1 Mi Piace

Scusa Giuseppe … non so se ho capito :blush:

Il comando cambia anche i nodi ‘interni’ della curva in questo caso ?
Cioe’ non solo quelli all’estremita’ interessata dal merge con la curva successiva ? :thinking:

2 Mi Piace

Si. Il senso è che smoothness lo associ a G2 che in concreto non soddisfi con curve Deg 2 che non hanno nemmeno internamente tale condizione.

2 Mi Piace

peccato che non ho tutte le nozioni per comprendere meglio il tutto. . .

con smoothness intendi un’opzione del comando MergeCrv?


scusa Giuseppe ma i valori che hai riportato li hai presi da Gh oppure c’é modo anche in Rh?

in questo caso quei valori numerici a Dx come li hai reperiti?

Ciao Salvio, in Rhino puoi usare il comando _List.
Puoi comunque reperire degli script per visualizzare il vettore dei nodi.
Per GH passo.
Occhio che, nell’esempio, Giuseppe ha normalizzato il vettore dei nodi, o la curva era già parametrizzata in forma canonica.

1 Mi Piace

A destra sono i pesi dei punti di controllo (curva razionale)

Non ho idea di come sia tradotto in italiano “smoothness” ma è l’ammorbidimento che si ottiene con valori maggiori di 0 nell’opzione di MergeCrv.

Il resto, come ha giustamente spiegato Fabio.

1 Mi Piace

ciao Fabio si ieri ci ero arrivato ai vettori dei nodi e come ricavarli in Gh

e avevo anche riparametrizzato la curva

ma non conoscevo il comando _List ottimo :+1:

peccato che il comando _List non riporti anche i valori del peso dei CV come output W in foto

Nella versione italiana è tradotto in " Curvatura " …

2 Mi Piace

La domanda nasce spontanea: A cosa ti servono i pesi? C’è un comando in cui puoi impostare il peso individualmente e ti legge il valore in essere.
Ovvero: da questa interessante discussione, l’utente che deve modellare, controllando la forma… magari non espertissimo… cosa ricava?
I due comandi messi in contrapposizione servono a fare cose diverse. Magari paragonare Rebuild e RebuildNonUniform ha più senso.
Un utente con il minimo sindacale di preparazione, non userà mai MergeCrv e il suo smoothness ma progetterà le curve in modo che siano G2, se serve, e in modo tale che la forma sia completamente controllata. Con approccio e tecnica TOTALMENTE diversi.

1 Mi Piace

se ho capito cosa intendi, è proprio quello che sto cercando di iniziare a fare
(mettendo in pratica il metodo da te consigliatomi tempo fa per avere una curva G2)
solo che ovviamente, nuovo metodo, nuovi intoppi e cerco solo di capire il perché di ciò
e come posso ovviare alle varie problematiche che si presentano in questo nuovo percorso.

infatti credo di aver capito il problema dove nasceva (per lo meno spero)
con alcune curve un lato mantenevo solo la tangenza quindi in G1
e questa cosa mi dava problemi, e pensavo di risolvere col MergeCrv

tutta qui la situazione, ma se come ho detto il problema era la tangenza, le farò tutte G2 :+1: