Vai al contenuto
ilmale

Mpxhardwareshader

Recommended Posts

Visto che qualcuno non si muove... :P mi sto facendo questo benedetto plug-in per il preview degli shader GLSL nel viewport di Maya.

Per gli shader hardware Maya ha due classi:

MPxHwShaderNode e MPxHardwareShader, il primo funziona tranquillamente, ci sono un sacco di esempi, il secondo è stato introdotto con Maya 2008 ma è pressoché sconosciuto, non ci sono esempi, nessuno ne parla, c'è giusto la guida che indica cosa fanno le funzioni. Ovviamente è molto più comodo, gestisce gli uniform in maniera automatica, quindi ho deciso di usare quello.

Ho fatto la mia classe, nel costruttore creo lo shader GLSL (semplicissimo), nella funzione render quando attivo lo shader si freeza la viewport, se non attivo lo shader funziona tutto (si vedono le geometrie bianche ma almeno non si freeza)

La cosa strana è che se attivo lo shader e poi non lo disattivo quando torno in visuale normale (quella senza texture o in wireframe) usa il mio shader e funziona bene...

Dove sto sbagliando?

Qualcuno ha provato ad usare quella classe con uno shader GLSL?

Non vorrei tornare ad usare la vecchia MPxHwShaderNode. :(


Modificato da ilmale

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Il problema principale è la guida di Maya. :D

Il secondo problema è il tempo.

La guida di Maya ogni tanto da informazioni o inutili o ancor peggio sbagliate (come quella sui triangoli) ma soprattutto poche... la parte che mi riesce meno è l'interfaccia con MEL, volevo fare una cosa abbastanza dinamica, sono già riuscito a fargli prendere uno shader e applicarlo a degli oggetti, ma non a modificare l'interfaccia di Maya per fargli manipolare i parametri uniform.

Il tempo gioca sempre a mio sfavore, tra poco c'è il festival della creatività dove devo presentare un progetto e devo correre... tempo libero ce n'è poco.

Inoltre c'è anche un'altra alternativa, modificare il plug-in della feeling software. Loro caricano CGFx, quindi con un po' di modifiche non dovrebbe essere difficile fare un nodo simile che carica GLSL, così potrei anche facilmente esportare GLSL in Collada (che non fa mai male).

Visto che nell'engine che uso volevo fare il caricamento dei file Collada penso che opterò per questa strada (anche se mi suona male lavorare gratis per la feeling software).

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ottimo, appena trovo un po' di tempo riorganizzo il codice e metto il progettino su un server SVN e ti passo il link. :)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao ilmale. Io come hai capito non capisco nulla di codice, ma cerco di darti quante più info per trovare una soluzione al tuo problema. Sembra incredibile che non si riesca a trovare da nessuna parte qualcuno che abbia creato qualcosa di simile. Su google escono fuori pochissimi risultati o in giapponese come sai. Comunque ho trovato quest'altro link.

http://code.google.com/p/slum/source/brows...derBase.py?r=51

Ripeto di codice a parte un po di mel non capisco nulla. Quindi non so che cosa significhi tutta quella roba. Ma ho letto

plugin creation method (returns the class object). this is needed to register a new node in maya.

'''

return OpenMayaMPx.asMPxPtr( shaderBase() )

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ho aperto un progetto su sourgeforge...

Your project is placed in a Pending state until the SourceForge.net staff is able to review and approve your project request. The approval process may take 1 to 3 business days.
^_^

Sono un po' paranoici ma sono d'accordo con la loro filosofia, poi magari si unisce anche qualcuno che ci capisce qualcosa. :D

@ytsejam: Grazie della segnalazione. Quello non è mel, è phython, comunque il progetto sembra interessante.


Modificato da ilmale

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
@ytsejam: Grazie della segnalazione. Quello non è mel, è phython, comunque il progetto sembra interessante.

si, so che non è MEL, ma non so nulla di phython.

Mi fa piacere che qualcosa possa interessarti di quel progetto. Ciao ciao

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ecco qua. :)

https://sourceforge.net/projects/mayaglsl/

Noterai che il codice è ancora molto incasinato e funziona solo con lo shader "embeddato" internamente.

Purtroppo GLSL non ha un meta linguaggio e bisognerà decidere che tipo di file leggere o crearsi il nostro tipo di file.

Se vuoi fare esperimenti fai pure, però prima di fare modiche aspetta un po'... che in questi giorni sono un po' incasinato. Se hai domande all'interno di sourgeforge c'è un forum oppure posta qua. :)

Naturalmente per fare commit, ecc... devi registrarti a sourgeforge.

Per il versioning del codice uso SVN (CVS mi sembra troppo restrittivo).

Chiunque abbia voglia si può tranquillamente iscrivere.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Allora.. sono le due e mezza (per la seconda volta stanotte) e mi sembra il momento giusto per scrivere. :)

Ti pre-annuncio che:

i - ho intenzione di usare questo shader dove lavoro,

ii - non sarà un lavorino da niente..

iii - da qui a pochi mesi potrebbe uscire glFX che stravolge tutte le carte in tavola.

Fatte queste doverose premesse iniziamo.

Tra tutti i linguaggi di shading che girano, glsl è il meno evoluto, non perché non permette di fare cose che fanno gli altri, ma perché non ha un meta linguaggio di supporto.

In pratica per HLSL c'è sia un file in cui si può specificare solo lo shader (quindi come si comporterà il programma) sia i file .fx che descrivono totalmente il materiale, quindi indicano quali texture usare e quali valori assumono i vari parametri. Stessa cosa per cgFX.

La prima cosa da decidere sarà proprio cosa caricare. Se inventarsi un tipo di file che contiene le informazioni sullo stato openGL e i dati da passare allo shader. L'unica cosa che c'è adesso è collada.. che è un minestrone che contiene tutto... lode lode a collada, ma usare collada per caricare solo uno shader mi sembra eccessivo.

Ovviamente se si utilizzasse collada si potrebbe integrare il tutto nell'esporter collada della feelingsoftware.

Un'altra cosa che c'è già è glEffect http://gleffect.sourceforge.net che sembra carino, ma non mi sembra che segua lo stato. Altra cosa, bisogna limitarsi a openGL 2.0 (quindi GLSL 1.00), perché Maya crea un contesto compatibile solo per quello... spero che in futuro autodesk passi a openGL 3.0.

Come ti avevo preannunciato c'è anche glFX, che dovrebbe essere il meta linguaggio per glsl... o almeno penso.. perché da quello che dice khronos glFX sarà una serie di tool per leggere facilmente i file collada con gli shader dentro... boh.

Comunque per adesso definirei un formato nostro, lasciandoci un livello di astrazione in modo che volendo dopo si può cambiare idea quando ci pare o supportare più formati. :)

ps: hai dato un occhiata al codice?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Allora.. sono le due e mezza (per la seconda volta stanotte) e mi sembra il momento giusto per scrivere. :)

Ti pre-annuncio che:

i - ho intenzione di usare questo shader dove lavoro,

ii - non sarà un lavorino da niente..

iii - da qui a pochi mesi potrebbe uscire glFX che stravolge tutte le carte in tavola.

.. [cut]..

ps: hai dato un occhiata al codice?

non ho ancora avuto tempo di guardare al codice...appena riesco mi ci immergo :-)

anche se lo vuoi usare al lavoro, una volta che rimane pubblico non credo ci sia nessun problema

ciao

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.

×