inheritance basato su vicinanza

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderatori: Arkimed, natas, visualtricks, cappellaiomatto

Rispondi
  • Advertising
visionaria
Messaggi: 10
Iscritto il: ven giu 15, 2012 5:07 pm

inheritance basato su vicinanza

Messaggio da visionaria »

Ciao a tutti,
sto affrontando un problema che non riesco proprio a risolvere e a trovare gli strumenti adatti, mi spiego
ho un cloner con X cloni e un matrix con lo stesso numero di X oggetti (non importa la forma dell'uno e dell'altro, l'importante e che siano diversi ovviamente, per trasformare da uno all'altro).
Il problema è che inheritance sposta basandosi sull'index dei punti, cioè il punto 0 del clone prende il posto del punto 0 del matrix che è il target, invece ho bisogno che ogni punto del primo clone prenda il posto del punto più vicino, in modo che ogni punto compia lo spostamento minore.

Sono giorni che cerco ma a parte il proximity shader, che nn saprei come usare in questo caso, non trovo niente che possa far lavorare sulla vicinanza.

Grazie per ogni aiuto!
Avatar utente
masterzone
Site Admin
Messaggi: 10352
Iscritto il: ven set 17, 2004 5:34 pm
Località: Verona

Re: inheritance basato su vicinanza

Messaggio da masterzone »

In pratica vorresti trasferire il clone A verso il B ma dove l'indicizzazione dei punti non sia letta dall'indice del vertice ma in altro modo?
mmmm...su due piedi non mi viene alcun metodo in mente... :?
visionaria
Messaggi: 10
Iscritto il: ven giu 15, 2012 5:07 pm

Re: inheritance basato su vicinanza

Messaggio da visionaria »

forse ricreare l'index dei vertici di B è esattamente quello che mi serve! ho capito meglio che quello che devo realizzare mi sembra molto semplice, anche se non so ancora come realizzarlo... :?
dato che si devono spostare da A al target B nel minor tempo possibile e tutte hanno la stessa velocità massima, forse bisognerebbe partire calcolando la distanza per tutti i vertici di A a ogni vertice di B; a questo punto se ho per esempio 20 vertici in A (e quindi anche in B) e per ognuno una lista con le 20 distanze, scelgo sempre il vertice con la minore distanza e gli altri li cancello. Tutti questi vertici con queste minori distanze le metto in ordine descrescente, e partendo da quella quindi più lontana in assoluto, accoppio gli index di A con gli index di B. Nel senso di creare un index di B basato sull'index di A a cui ha fornito la minor distanza!!
Così dovrei raggiungere lo scopo, ma forse si può vedere e risolvere anche in altri modi secondo voi?

Non so se mi son spiegato o sembra contorto, ma come operazioni matematiche mi sembra semplicissimo no? secondo voi si può fare con cinema? con xpresso??

Grazie
Avatar utente
cappellaiomatto
Moderatore
Messaggi: 1571
Iscritto il: lun mag 07, 2012 5:12 pm

Re: inheritance basato su vicinanza

Messaggio da cappellaiomatto »

visionaria ha scritto:Ciao a tutti,
sto affrontando un problema che non riesco proprio a risolvere e a trovare gli strumenti adatti, mi spiego
ho un cloner con X cloni e un matrix con lo stesso numero di X oggetti (non importa la forma dell'uno e dell'altro, l'importante e che siano diversi ovviamente, per trasformare da uno all'altro).
Il problema è che inheritance sposta basandosi sull'index dei punti, cioè il punto 0 del clone prende il posto del punto 0 del matrix che è il target, invece ho bisogno che ogni punto del primo clone prenda il posto del punto più vicino, in modo che ogni punto compia lo spostamento minore.

Sono giorni che cerco ma a parte il proximity shader, che nn saprei come usare in questo caso, non trovo niente che possa far lavorare sulla vicinanza.

Grazie per ogni aiuto!
Ciao
hai una referenza video o qualche fotogramma di quello che vuoi realizzare.....spiegato così si fa veramente fatica a capire cosa vuoi ottenere.

Se mi fai capire cosa vuoi ottenere ti do volentieri una mano a scriptare la cosa in xpresso (sempre che sia realizzabile con xpresso)
visionaria
Messaggi: 10
Iscritto il: ven giu 15, 2012 5:07 pm

Re: inheritance basato su vicinanza

Messaggio da visionaria »

Ciao cappellaiomatto, grazie mille per l'aiuto!

in allegato un esempio che spero chiarisca,
c'è una scena A e una scena B. i vertici di A devono andare a prendere il posto di quelli di B, in modo che le traittorie compiute siano il più piccole possibili, in particolare sarebbe da ottimizzare partendo dalle traittorie più lunghe. Per esempio il vertice 0 della scena A non dovrebbe andare all'attuale vertice 0 della scena B(che sta quasi dalla parte opposta), ma probabilmente al 6 o 5 o7 o limitrofi della scena B.

E' più comprensibile ora ?
Grazie mille
Allegati
esempio inheritance da A a B.zip
(62.56 KiB) Scaricato 99 volte
Avatar utente
cappellaiomatto
Moderatore
Messaggi: 1571
Iscritto il: lun mag 07, 2012 5:12 pm

Re: inheritance basato su vicinanza

Messaggio da cappellaiomatto »

appena ho 5 min di tranquillità guardo le referenze e ti dico :)
Avatar utente
cappellaiomatto
Moderatore
Messaggi: 1571
Iscritto il: lun mag 07, 2012 5:12 pm

Re: inheritance basato su vicinanza

Messaggio da cappellaiomatto »

Ok ora è chiaro cosa vuoi fare....l'unico modo sensato è creare un python effector, ma non è roba da 5 min soprattutto se uno è a digiuno di programmazione. (non so te come sei messo)

ci sono parecchi problemi a cui trovare una soluzione.

1) cercare il punto più vicino alla struttura di destinazione
2) calcolare la trasformazione
3) farlo in maniera ottimizzata e non alla "carlona"......i tempi di calcolo se non ottimizzati potrebbero rendere l'effector pesante come un macigno

:shock:

ti do il mio consiglio....è un po certosino ma risolvi senza grossi sforzi

se la matrice di destinazione non ha un numero esagerato di punti come nell'esempio che mi hai allegato
esplodi l'icoesadro o quello che è
cancella tutti i poligoni e tieni solo i vertici
a questo punto dalla finestra di struttura dei punti cambia l'ordine dei vertici tenendo premuto su un vertice e spostandolo su e giù per la tabella.

In pratica sposti il vertice più vicino sull'indice 0 a mano.....poi fai la stessa cosa con il vertice 1 etc etc etc

Non è il massimo della vita ma è comunque una soluzione
Allegati
1.jpg
  • Advertising
Rispondi