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

API graphiques Discussion :

JS webgl three.js - impossible d'afficher un sprite


Sujet :

API graphiques

  1. #1
    Membre régulier

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 120
    Points : 120
    Points
    120
    Billets dans le blog
    1
    Par défaut JS webgl three.js - impossible d'afficher un sprite
    Bonjour,

    Je débute avec three.js.
    J'ai donc commencé par https://threejs.org/docs/index.html#...eating_a_scene
    ça marche
    Puis j'ai voulu ajouter un sprite : https://threejs.org/docs/index.html#...SpriteMaterial
    ça ne marche pas
    Code html : 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
    <html>
    	<head>
    		<title>My first three.js app</title>
    		<style>
                            body { margin: 0; }
                            canvas { width: 100%; height: 100% }
                    </style>
    	</head>
    	<body>
    		<script src="js/three.js"></script>
    		<script>
                            var scene = new THREE.Scene();
                            var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
                            var renderer = new THREE.WebGLRenderer();
                            renderer.setSize( window.innerWidth, window.innerHeight );
                            document.body.appendChild( renderer.domElement );
                            // instantiate a loader
                            var loader = new THREE.TextureLoader();
                            //allow cross origin loading
                                    //loader.crossOrigin = '';
                            // load a resource
                            loader.load('b.png')
                            var spriteMaterial = new THREE.SpriteMaterial( { map: loader, color: 0xffffff } );
                            var sprite = new THREE.Sprite( spriteMaterial );
                            scene.add( sprite );
                            camera.position.z = 2;
                            var render = function () {
                                    requestAnimationFrame( render );
                                    renderer.render(scene, camera);
                            };
                            render();
                    </script>
    	</body>
    </html>

    Erreur dans la console :
    Uncaught TypeError: Cannot read property 'x' of undefined
    at SpritePlugin.render (three.js:6973)
    at WebGLRenderer.render (three.js:21007)
    at render (sprite.html:29)
    at sprite.html:31
    Les questions que je me pose :
    1. où doit se trouver l'image b.png ?
    - dans le répertoire de mon code (sprite.html) ?
    - dans le répertoire /js ?

    2. pourquoi l'exemple fourni par three.js ne fonctionne pas chez moi ?

    Merci
    jdd deschamps
    RPL - VB6 - C# - Wordpress - Python3 - Xamarin

  2. #2
    Membre régulier

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 120
    Points : 120
    Points
    120
    Billets dans le blog
    1
    Par défaut appeler la dernière version de three.js
    Si vous souhaitez tester le code dans votre navigateur, j'ai remplacé la ligne
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="js/three.js"></script>
    par :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="https://rawgithub.com/mrdoob/three.js/master/build/three.js"></script>

    il faut aussi un fichier b.png. Je crois qu'il doit être d'une puissance de 2 (256x256)
    Nom : b.png
Affichages : 292
Taille : 98,6 Ko
    Je suppose qu'il doit être dans le même répertoire que le .html de la source ?

    Code html : 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
    <html>
    	<head>
    		<title>My first three.js app</title>
    		<style>
                            body { margin: 0; }
                            canvas { width: 100%; height: 100% }
                    </style>
    	</head>
    	<body>
    		<script src="https://rawgithub.com/mrdoob/three.js/master/build/three.js"></script>
    		<script>
                            var scene = new THREE.Scene();
                            var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
                            var renderer = new THREE.WebGLRenderer();
                            renderer.setSize( window.innerWidth, window.innerHeight );
                            document.body.appendChild( renderer.domElement );
                            // instantiate a loader
                            var loader = new THREE.TextureLoader();
                            //allow cross origin loading
                                    //loader.crossOrigin = '';
                            // load a resource
                            loader.load('b.png')
                            var spriteMaterial = new THREE.SpriteMaterial( { map: loader, color: 0xffffff } );
                            var sprite = new THREE.Sprite( spriteMaterial );
                            scene.add( sprite );
                            camera.position.z = 2;
                            var render = function () {
                                    requestAnimationFrame( render );
                                    renderer.render(scene, camera);
                            };
                            render();
                    </script>
    	</body>
    </html>
    jdd deschamps
    RPL - VB6 - C# - Wordpress - Python3 - Xamarin

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je ne connais pas vraiment le JavaScript, mais ceci :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    loader.load('b.png')
    ne devrait pas être avec des '"' :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    loader.load("b.png")

    Sinon, le fichier doit être avec votre HTML. Mais vous avez aussi le choix de spécifier un chemin complet (comme http://developpez.com/example.png) ou encore de spécifier un chemin relatif (comme ./ressources/b.png). Donc c'est à vous de voir.
    Si vous ouvrez la console de développement de votre navigateur, ce dernier vous dira sans doute s'il n'a pas réussi à trouver la texture.
    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.

  4. #4
    Membre régulier

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 120
    Points : 120
    Points
    120
    Billets dans le blog
    1
    Par défaut emplacement des fichiers appelé par un script js [RESOLU]
    @LittleWhite
    Effectivement, le fichier doit bien se trouver dans le répertoire du .html
    peu importe les guillemets utilisés ('b.png' ou "b.png")

    J'ai remplacé le fichier local par un fichier distant sur le web et j'ai copié le html sur un serveur pour que les lecteurs du forum puissent l'exécuter dans un navigateur.
    Quand le chemin n'est pas le bon, le debbugeur de Chrome signale l'erreur dans la console...

    Je clos ce post et en démarre un nouveau.
    jdd deschamps
    RPL - VB6 - C# - Wordpress - Python3 - Xamarin

  5. #5
    Membre régulier

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 120
    Points : 120
    Points
    120
    Billets dans le blog
    1
    Par défaut La solution est assez complexe
    d'une part il faut convertir l'image en binaire, d'autre part il faut s'assurer que l'image a fini d'être chargée avant de poursuivre :
    La solution ici :
    http://stackoverflow.com/questions/4...27669#43027669
    jdd deschamps
    RPL - VB6 - C# - Wordpress - Python3 - Xamarin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. impossible d'afficher la page
    Par illegalsene dans le forum Apache
    Réponses: 1
    Dernier message: 17/01/2006, 10h07
  2. impossible d'afficher
    Par cyrill.gremaud dans le forum Flash
    Réponses: 3
    Dernier message: 19/12/2005, 12h56
  3. Réponses: 2
    Dernier message: 21/07/2005, 14h20
  4. [EasyPHP]"impossible d'afficher la page"
    Par Nip dans le forum Apache
    Réponses: 3
    Dernier message: 07/04/2005, 21h23
  5. [Débutant]Classe d'Authentification : compilation impossible
    Par acyclique dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/08/2003, 19h42

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