[Java3D] Appliquer un shader à un objet

Résolu
The_Moye Messages postés 32 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 21 août 2020 - 14 mai 2008 à 18:32
 Utilisateur anonyme - 16 mai 2008 à 18:35
Bonjour la populace!

Une petite question concernant l'utilisation de shaders sous Java3D.
En effet les tutos traitant des shaders en Java3D ne courent pas les rues!

Donc, j'ai créé un shader de la manière suivante :

Shader mon_shad = new SourceCodeShader(Shader.SHADING_LANGUAGE_GLSL, Shader.SHADER_TYPE_FRAGMENT, "test.frg");

Comme indiqué, je load mon fragment programm dans le fichier "test.frg", codé en GLSL.

Par contre, je ne sais pas comment appliquer ce shader une fois créé.

De l'aide serait bien venu :)

De plus, si vous avez des liens interessants sur l'utilisation de shaders avec java3d, je suis preneur!

Merci d'avance

9 réponses

Utilisateur anonyme
15 mai 2008 à 17:43
Je ne vois pas le problème puisque JOGL est portable, il marche aussi sous Macintosh, Linux, Unix Solaris et Windows, il est plus fiable que Java3D et fonctionne mieux dans les applets... Justement, il me semble que Java3D doit faire une manipulation pour que ton shader GLSL fonctionne même si le pipeline DirectX est utilisé.

Bon voilà un exemple avec CG :
Shader[] shaders = new Shader[1];
shaders[0] = new SourceCodeShader (Shader.SHADING_LANGUAGE_CG,
Shader.SHADER_TYPE_FRAGMENT,
"void main(float4 color : CLR, out float4 ocolor : CLR)\n{\nocolor = float4(1,1,1,1);\n}");

ShaderProgram shaderProgram = new CgShaderProgram();
shaderProgram.setShaders(shaders);

// Create shader appearance to hold the shader program and
// shader attributes
ShaderAppearance app = new ShaderAppearance();
app.setShaderProgram(shaderProgram);

// Create a Sphere object using the shader appearance,
// and add it into the scene graph.
Sphere sph = new Sphere(0.4f, Sphere.GENERATE_NRMALS, 30, app);
objTrans.addChild(sph);

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
3
Utilisateur anonyme
15 mai 2008 à 08:16
Bonjour

Comme ton fragment est en GLSL, tu dépends d'OpenGL. Pense à utiliser JOGL (ou un autre binding) parce que je ne vois pas l'intérêt d'utiliser Java 3D si au final tu te restreins à un type d'environnement si ce n'est que ça te paraît plus simple. Voilà un exemple intéressant :
http://www.davidcornette.com/glsl/

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
The_Moye Messages postés 32 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 21 août 2020
15 mai 2008 à 11:57
plop gouessej!
Merci de ta réponse, tu sembles très actif ici :D

Je ne compte pas me limiter à un seul environnement, l'idée serait de lancer mon application dans ma page internet, visible sur le plus de navigateurs et systemes possible.
Je fais deja de l'openGL depuis plusieurs années, si je voulais sortir un executable linux ou windows j'aurais codé en C++ OpenGL.

Le principe est vraiment d'intégré un contenu dynamique interessant et visuellement correcte à ma page internet, visible sur le plus de navigateurs possible.
N'ayant pas de licence flash, je me tourne donc vers java3D qui permet de faire des choses interessantes, j'ai travaillé sur un editeur de circuit pour un jeux il y a quelques années, mais sans shaders :p

Et puis j'ai utilisé GLSL car j'ai une pléthore de shaders fonctionnels sur les-quels j'ai travaillé l'an dernier.
Mais rien ne m'empecherais par la suite d'intégrer des shaders en CG dans mon application.

Mon problème pour le moment est vraiment d'appliquer le shader chargé sur un objet donné (tout en restant en Java3D)
0
The_Moye Messages postés 32 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 21 août 2020
15 mai 2008 à 17:57
Merci gouessej, je testerais ça des ce soir je pense.
Tu es certainement mon sauveur :x

Pourrais je savoir où tu as trouvé les renseignements nécessaires à l'utilisations de shaders?

Merci encore pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
16 mai 2008 à 07:03
J'ai eu un mal fou à trouver un exemple, j'ai été sur Google Codesearch finalement.

Franchement, si tu as déjà de l'expérience en OpenGL et que tu veux écrire une application sans  te "limiter à un seul environnement", tu devrais sérieusement penser à utiliser JOGL. Tu dis que "l'idée serait de lancer mon application dans ma page internet", tu pourrais facilement utiliser JOGL avec Java Webstart pour faire ça et si tu veux voir ce que ça peut donner, suis le lien que je mets dans ma signature ci-dessous:

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
The_Moye Messages postés 32 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 21 août 2020
16 mai 2008 à 11:49
Plop gouessj
Merci de t'être donné tant de mal ^^

Je suis deja passé sur ton lien, curieux que je suis!
Le probleme c'est que ton application se télécharge, puis s'execute en dehors de la page.
Ce n'est pas ce que je recherche, l'idée etant d'etre totallement intégré à ma page.
Peut etre est-ce possible de faire ça en JOGL, mais je ne connais pas du tout.

Peut etre as tu deja vu des page internet intégrant un module Virtools (permettant par exemple la navigation dans une scene 3d depuis la page internet), j'aimerais arriver à ce genre de chose (sans licence virtools, ça coute la peau du cul).
0
Utilisateur anonyme
16 mai 2008 à 13:52
Bonjour

Va voir JOGLAppletLauncher, tu peux tout à fait utiliser JOGL à l'intérieur d'une page web, c'est même très bien fait pour ça. Je te conseille d'utiliser JOGL car tu connais déjà OpenGL et JOGL marche très bien avec AWT et Swing, tu ne seras pas dépaysé et à quoi bon apprendre une API complètement nouvelle (Java3D) si au final tu peux en utiliser une autre qui vu ta situation serait plus rapide à apprendre? Je reste à ta disposition pour de plus amples informations. Bon sang c'est vrai que plus de 6000 internautes ont déjà testé TUER.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
The_Moye Messages postés 32 Date d'inscription samedi 12 novembre 2005 Statut Membre Dernière intervention 21 août 2020
16 mai 2008 à 14:35
ok ok gouessej, je suivrais ton conseil, j'irais voir ce que raconte JOGL!

Merci pour ton aide sur les shaders, ça fonctionne niquel hu²
0
Rejoignez-nous