IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WebGL Discussion :

Relief objet 3D.


Sujet :

WebGL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut Relief objet 3D.
    Bonjour,

    J'ai réalisé une application Web en WEBGL/javascript me permettant de charger et d'afficher des objets *.obj/stl.
    Le problème c'est que lorsque j'affiche mon objet, aucun relief n'apparait comme peut le montrer l'image ci-dessous :
    https://www.dropbox.com/s/39fcwvrcdwf03pc/boule.png
    J'ai essayé de jouer avec les lumières sans résultats sur le relief de l'objet.

    Est-ce que quelqu'un à une idée qui pourrait m'aider à résoudre ce problème ?

    Merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 074
    Billets dans le blog
    145
    Par défaut
    Bonjour,

    Il peut y avoir plusieurs réponses et avec aussi peu d'informations il sera difficile de dire ce qui se passe vraiment.
    Si vous utilisez des shaders (et que ceux ci sont corrects), c'est que vous avez un problème dans le transfert des couleurs au GPU.
    Sinon, essayez en désactivant l'éclairage.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut
    Bonjour LittleWhite,

    Voici mon fragment shader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
        <script id="fragment-shader" type="x-shader/x-fragment" charset="utf-8">
     
    		#ifdef GL_ES
    		precision highp float;
    		#endif
     
    		uniform vec4 uColor;
    		uniform vec3 uLight;
     
    		varying vec3 vNormal;
     
    		const float alpha = 0.7;
     
    		void main(void) {
     
    		float val = dot( vNormal, uLight ) * 0.4 + 0.6;
     
    		gl_FragColor = vec4( uColor.x * val, uColor.y * val, uColor.z * val, uColor.w);
     
    		}
     
    </script>
    Et voici le code pour initialiser la scène :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
        function initScene() {
     
    	canvas.width = window.innerWidth, canvas.height = window.innerHeight;
     
    	gl.clearColor(0, 0, 0, 1.0);
    	gl.viewport(0, 0, canvas.width, canvas.height);
     
    	// gl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );
     
    	gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
     
    	gl.enable(gl.CULL_FACE);
    	gl.enable(gl.DEPTH_TEST);
    	gl.enable(gl.STENCIL_TEST);
     
    	//gl.enable(gl.SMOOTH);
    	//gl.enable(gl.FLAT);
     
    	shader = initShader(gl, "vertex-shader", "fragment-shader");
     
    	var light = [ 3.0, 4.0, 5.0 ];
    	vec3.normalize(light);
     
    	gl.uniform3fv(shader.lightUniform, light);
    	gl.uniform1f(shader.normalDirectionUniform, 1.0);
     
    	pMatrix = mat4.create();
     
    	container = document.createElement('div');
    	document.body.appendChild(container);
     
    	mat4.perspective(distanceCamera, canvas.width / canvas.height, 0.1, 1000, pMatrix);
    	//mat4.translate(pMatrix, [0, 0, -distanceCamera]);
     
    	gl.uniformMatrix4fv(shader.pMatrixUniform, false, pMatrix);
     
    	center = [ 0, 0, 0 ], eye = [ distanceCamera, 0, 250 ];
     
    	up = [ 0, 0, 1 ];
    	axis = [ 0, -1, 0 ];
     
    	mvMatrix = mat4.lookAt(eye, center, up);
     
    };
    A l'intérieur de cette fonction, je suis supposé utiliser les fonctions : gl.SMOOTH et gl.FLAT pour mettre du relief sur l'objet. Mais, ces fonctions me retournent l'erreur suivante : invalid capability.

    Ais-je fais une erreur dans mon code ?

    Merci.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 074
    Billets dans le blog
    145
    Par défaut
    Moi, je tenterai de déboguer le shader. Pour ce faire, vous allez remplir gl_FragColor avec les variable en entrée du shader. Ainsi, il affichera des couleurs selon le contenu des variables (permettant de savoir si certains ne contiennent que des 0, par exemple).

    Sinon, je pense qu'il y a un problème de normalisation. Essayez en normalisant vLight, ou vNormal (ok, elle doit être normalisée celle-ci, mais ne sait-on jamais)). Actuellement, je pense que là est le problème

    (Pourquoi vous ne m'avez pas donner le vertex shader ?)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Objet : développement d’applications en relief
    Par nodarp dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/12/2012, 10h26
  2. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53
  3. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  4. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo