Vai al contenuto

Tanius

Members
  • Portfolio

    Portfolio
  • Numero messaggi

    50
  • Registrato

  • Ultima Visita

Info su Tanius

  • Rango
    Matricola

Informazioni professionali

  • Sito Web
    http://tanius.deviantart.com
  1. Ciao ragazzi, sto scrivendo un loader c++ opengl per modelli collada (v. 1.4.1) e sono in procinto di leggere lo scheletro. Caricata la struttura delle joints (ho scelto di fare un albero) necessito di renderne le coordinate assolute (tutte le joint in collada, eccetto la radice, hanno coordinate poste come traslazioni e rotazioni rispetto a quelle del padre padre) posto una parte dello scheletro come esempio: <node id="joint1" name="joint1" sid="joint1" type="JOINT"> <translate sid="translate">-0.01908503 -3.763652 -0.3057548</translate> <rotate sid="jointOrientZ">0 0 1 -20.52593</rotate> <rotate sid="jointOrientY">0 1 0 0</rotate> <rotate sid="jointOrientX">1 0 0 0</rotate> <node id="joint2" name="joint2" sid="joint2" type="JOINT"> <translate sid="translate">0.8095108 0 0</translate> <rotate sid="jointOrientZ">0 0 1 -61.76218</rotate> <rotate sid="jointOrientY">0 1 0 0</rotate> <rotate sid="jointOrientX">1 0 0 0</rotate> <rotate sid="rotateZ">0 0 1 0</rotate> <rotate sid="rotateY">0 1 0 0</rotate> <rotate sid="rotateX">1 0 0 0</rotate> <scale sid="scale">1 1 1</scale> <node id="joint3" name="joint3" sid="joint3" type="JOINT"> ... </node> </node> </node> riporto in seguito il modo in cui calcolo le coordinate (le parti non necessarie sono in pseudocodice): // n nodo del file necessario alla lettura; // dad, puntatore alla Joint padre // la funzione ricorsiva ritorna la radice dell'albero generato dal nodo n Skeletron* Bone::genera_scheletro_abs (XMLNode n, Skeletron *dad) { // Setto i dati della joint radice non relativi alle coordinate (qui omesso); ... // fine lettura dei dati non relativi alle coordinate // Leggo la traslazione della joint rispetto al padre, se sono presenti // (newtree è il puntatore alla nuova radice) if(n.nChildNode("translate")) sscanf(n.getChildNode("translate").getText(),"%f %f %f",&(newtree->X),&(newtree->Y),&(newtree->Z)); else newtree->X=newtree->Y=newtree->Z=0; // Calcolo l'effetto della rotazione del padre sulla traslazione del figlio // Rispetto ad X newtree->Y = newtree->Y*(dad->GonioOrient[_X_][COS]) - newtree->Z*(dad->GonioOrient[_X_][SEN]); newtree->Z = newtree->Y*(dad->GonioOrient[_X_][SEN]) + newtree->Z*(dad->GonioOrient[_X_][COS]); // Rispetto ad Y newtree->X = newtree->X*(dad->GonioOrient[_Y_][COS]) + newtree->Z*(dad->GonioOrient[_Y_][SEN]); newtree->Z = - newtree->X*(dad->GonioOrient[_Y_][SEN]) + newtree->Z*(dad->GonioOrient[_Y_][COS]); // Rispetto a Z newtree->X = newtree->X*(dad->GonioOrient[_Z_][COS]) - newtree->Y*(dad->GonioOrient[_Z_][SEN]); newtree->Y = newtree->X*(dad->GonioOrient[_Z_][SEN]) + newtree->Y*(dad->GonioOrient[_Z_][COS]); // Traslo rispetto al padre newtree->X+=dad->X; newtree->Y+=dad->Y; newtree->Z+=dad->Z; // Prendo le rotazioni del nuovo nodo n (serviranno a calcolare le coordiante dei suoi figli) if(n.nChildNode("rotate")) { float f; sscanf(n.getChildNode("rotate",0).getText(),"%f %f %f %f",&(f),&(f),&(f),&(newtree->OrientZ)); sscanf(n.getChildNode("rotate",1).getText(),"%f %f %f %f",&(f),&(f),&(f),&(newtree->OrientY)); sscanf(n.getChildNode("rotate",2).getText(),"%f %f %f %f",&(f),&(f),&(f),&(newtree->OrientX)); // Precalcolo Angoli dei Genitori più la loro goniometria newtree->OrientZ+=dad->OrientZ; newtree->OrientY+=dad->OrientY; newtree->OrientX+=dad->OrientX; // Precalcolo seni e coseni newtree->GonioOrient[_X_][SEN]=s(newtree->OrientX); newtree->GonioOrient[_X_][COS]=c(newtree->OrientX); newtree->GonioOrient[_Y_][SEN]=s(newtree->OrientY); newtree->GonioOrient[_Y_][COS]=c(newtree->OrientY); newtree->GonioOrient[_Z_][SEN]=s(newtree->OrientZ); newtree->GonioOrient[_Z_][COS]=c(newtree->OrientZ); if(n.nChildNode("rotate")>=4) { // prendo questi angoli, di cui non conosco l'utilità O_O sscanf(n.getChildNode("rotate",3).getText(),"%f %f %f %f",&(f),&(f),&(f),&(newtree->AngZ)); sscanf(n.getChildNode("rotate",4).getText(),"%f %f %f %f",&(f),&(f),&(f),&(newtree->AngY)); sscanf(n.getChildNode("rotate",5).getText(),"%f %f %f %f",&(f),&(f),&(f),&(newtree->AngX)); // Precalcolo Angoli dei Genitori più la loro goniometria newtree->AngZ+=dad->AngZ; newtree->AngY+=dad->AngY; newtree->AngX+=dad->AngX; newtree->GonioAngle[_X_][SEN]=s(newtree->AngX); newtree->GonioAngle[_X_][COS]=c(newtree->AngX); newtree->GonioAngle[_Y_][SEN]=s(newtree->AngY); newtree->GonioAngle[_Y_][COS]=c(newtree->AngY); newtree->GonioAngle[_Z_][SEN]=s(newtree->AngZ); newtree->GonioAngle[_Z_][COS]=c(newtree->AngZ); } else newtree->AngX=newtree->AngY=newtree->AngZ=0; } else { newtree->OrientX=newtree->OrientY=newtree->OrientZ=0; newtree->AngX=newtree->AngY=newtree->AngZ=0; } // Nel caso c'è un ridimensionamento (ma non nel mio caso, nel mio file son tutti a 1) leggo i valori if(n.nChildNode("scale")) sscanf(n.getChildNode("scale",0).getText(),"%f %f %f",&(newtree->ScaleX),&(newtree->ScaleY),&(newtree->ScaleZ)); else newtree->ScaleX=newtree->ScaleY=newtree->ScaleZ=1; // Gestione delle ricorsioni sui figli (omesse qui) ... // Fine chiamate ricorsive return newtree; } Infine, vi allego quello che vedo se provo a visuallizzare lo scheletro caricato secondo questo metodo... Le specifiche del file Collada 1.4.1 sono fatte prettamente di cacca, ho cercato un po' in rete ma non ho trovato nulla, nessun riferimento, soprattutto in merito alla spiegazione delle coordinate delle joint nel formato collada. Premetto che esporto il mio modello da maya. Ora, mi rendo conto che le cause possono essere tante, ma il tutto, secondo me, è capire se sbaglio a interpretare ciò che leggo dal file o se semplicemente è un problema di calcolo mio. Se qualcuno può aiutarmi gliene sarei eternamente grato... Saluti a tutti.
  2. Tanius

    Ciuffi Stile Manga

    Ma con la mirror geometry non li salda automaticamente? O_o
  3. Tanius

    Ciuffi Stile Manga

    Grazie a tutti, provo e vi fo sapere... Per il discorso della linea che mi vien fuori facendo mirror geometry? Tenete conto che era una sfera in principio, modellata per intero fino a fare quella forma, poi però l'ho tagliata a metà per sistemare dei vertici da un lato (senza toccare quelli centrali) e ho fatto mirror geometry.... Sembra che siano due mezze facce attaccate
  4. Tanius

    Ciuffi Stile Manga

    Salve a tutti, sto tentando (con poco successo) di modellare in maya dei ciuffi 3D stile manga... Partiamo dal presupposto che ho la testa poligonale pronta... Preciso: quello che particolarmente mi serve è come far aderire una curva sulla testa poligonale che ho appena fatto, in maniera tale da estruderla e ottenere un ciuffo sensato. Spero che la richiesta sia chiara, o che magari qualcuno possa suggerirmi anche una tecnica migliore. Premetto che tutto quello che so l'ho imparato da tutorial vari e da esercizio personale... (lo stile che cerco di avvicinare è questo: ) Grazie anticipatamente *_* [EDIT: Allego uno screen, così magari rendo più chiaro quello che mi serve: [EDIT2: Ah, già che ci sono, qualcuno mi sa dire perchè quando faccio Mirror Geometry della testa si vede quella linea netta al centro della mesh? C'è un modo per evitarlo?]
  5. guarda, era già impostato tutto così, purtroppo. Non posso renderizzare un frame alla volta e salvare, purtroppo. ;_; Praticamente renderizzare il singolo frame, ok, le proporzioni son quelle 640x480, ma se fo tramite batch fa le immagini schiacciate a 640x240. Rispettivamente se fo 320x240 lui nel batch le fa 320x120, esattamente la metà :| Vabè grazie comunque
  6. Grazie davvero^^ Tutto a posto^^ Solo che quando faccio batch render mi 'schiaccia' l'altezza dell'immagine, mentre con il rendere del frame corrente fa tutto bene...Come mai?
  7. Tanius

    Problemi Di Modellazione

    Credo volesse sapere come convertire le nurbs in poly da Edit -> Convert -> nurbs to polygons
  8. Tanius

    Gestione Camera In Render

    Salve gente, torno qui a chiedere aiuto: sto usando il maya software per renderizzare e vorrei riuscire a renderizzare la scena usando una Camera. Normalmente, la vado selezionando nel menu delle render options, ma o ogni volta che provo a renderizzare per vedere cosa sta riprendendo la telecamera mi renderizza utilizzando quella standard della prospettiva... Perchè? ;_;
  9. Tanius

    Gestione Grass, E Riflessi

    Si infatti sto usando quello standard. Purtroppo non so come 'attivare' il mental ray, ma per i riflessi farò come mi hai detto. Grazie mille davvero
  10. Tanius

    Gestione Grass, E Riflessi

    Avevo usato il fur.. Credo che passo al paint effect Mentre per l'ocean, volevo riflettere delle rocce poligonali e magari anche il paint effect delle piante... Ma sono abbastanza niubbo. Fra i parametri dell'attribute editor ho selezionato nel mental ray 'visibile nei riflessi' ma non penso sia così semplice e difatti non si vedono Comunque grazie
  11. Tanius

    Gestione Grass, E Riflessi

    Salve gente, ho provato e riprovato, ed anche cercato in rete ma non riesci a trovare molto di utile, quindi mi accingo a chiedere qui, sperando di non aver sbagliato come al solito titolo, sezione, bla bla bla... Comunque: 1 - Sto usando il grass per fare l'erba ma la cosa mi soddisfa pochissimo perchè i fili d'erba sono fin troppo sottili come fo a renderli 'più spessi'? 2 - Vorrei riuscire a mettere il riflesso su un ocean, ma non ho la più pallida idea di come si faccia... qualcuno mi può dare una dritta?
  12. Scusate il doppio posto, avrei preferito editare il mio post precedente... Comunque ho dato un'occhiata, ma si blocca comunque al terzo frame, senza completarlo, anche abbassando la qualità di rendering e tutto e non tenendo aperto nulla... Sicuro che possa essere solo la memoria? Nu perchè prima me lo faceva senza problemi, poi senza aver modificato nulla delle impostazioni di render ha smesso di vivere... Help me, non posso ridurmi a renderizzare manualmente ogni frame
  13. proverò a darci un'occhiata, grazie^^
  14. Tanius

    Pond: Applicarci Shader O Materiale

    Spero di non aver sbagliato sezione, e scusate la domanda da niubbone Comunque, l'obiettivo mio è riuscire a realizzare qualcosa di simile a una pozzanghera, dove cade una goccia. Nella dinamica e nella simulazione nessun problema. La mia domanda è come dare un effetto (trasparenza, colore, traslucenza... insomma come applicarci un bello shader) decente al pond dove ci sono le onde concentriche, e se possibile, come poter modificare la forma del pond stesso. Qualcuno mi da una zampa o una dritta? grazie in anticipo.
  15. Tanius

    Batch Render Interrotto

    Salve gente, son qui di ritorno per chiedere una vostra consulenza: praticamente, come da titolo mi si interrompe il batch render, quale che siano i frame di inizio e di fine impostati nelle Render Options... Non so per quale strano motivo ma renderizza sempre e solo i primi due frame della sequenza. Qualcuno sa essermi utile?
×