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

OpenGL Discussion :

.Obj qui n'apparais pas une fois load


Sujet :

OpenGL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut .Obj qui n'apparais pas une fois load
    Bonjour !
    J'ai un .OBJ que j'aimerais load dans ma map !
    J'ai deja reussit a en load plusieurs auparavent mais des que j'essaye de cree moi meme un .obj depuis blender cela ne fonctionne pas
    Est ce que quelqu'un pourrais eclaire ma lanterne ?
    Je vous passe le lien de mon .obj .blend .png ci dessous

    https://www.dropbox.com/sh/bqwzvd2k3...lce-z5-Ta?dl=0

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    ça dépend de ton loader de .obj , le .obj peut être écrit de différente manière.
    Deja il peut écrire des quads (si ton loader ne lis que des triangles) , il est bon sur blender de triangularisé ton .obj (y'a une option pour ça sur blender).

    Si c'est toi qui a creer le loader sache que les F peut etre lu de différente façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      f 1 2 3
      f 3/1 4/2 5/3
      f 6/4/1 3/5/3 7/6/5
      f 7//1 8//2 9//3
    Dans ton cas cela est ecrit comme ça : f 21//94 360//94 359//94 20//94
    essaye comme je l'ai dit de triangularisé ton .obj.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 51
    Points : 56
    Points
    56
    Par défaut
    Dans ton fichier .obj je ne vois pas les UVs avec l'entête "vt". Si tu utilises Blender, n'oublie pas de d'abord de créer l'UV map (EditMode->ToutSelectionner(A)->U->UnWrap et ensuite d'inclure les UVs lorsque tu exporte le fichier ("include UVs"). Après en ce qui concerne les faces, je n'es pas l'impression que ce soit des Triangles, il faut mettre "Triangulates Faces" lorsque tu exporte.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos reponse !
    J'ai vraiment essayer de m'acharner en suivant vos conseil durant ces derniers jour !
    Mais il persiste toujours quelque problemes et ma prez et vendredi
    Une image vos bien des mots donc voici ma voiture
    Nom : robot.jpg
Affichages : 207
Taille : 51,2 Ko
    Nom : robot1.jpg
Affichages : 188
Taille : 51,1 Ko
    Elle est pleine de trou
    Pourtant voici la config d'export que j'ai utilise
    Nom : Config export.jpg
Affichages : 208
Taille : 27,8 Ko
    Je precise que j'ai definit les texture depuis blender en materiel puis texture comme je n'arrive pas a texturer mon objet depuis l'interface UV Editor.
    J'ai essayer pendant de longue heure mais le decoupage de la voiture prend beaucoup trop de place.. De ce fait a chaque fois que je texture j'entamme sur des texture derriere
    Nom : UVmaps.jpg
Affichages : 188
Taille : 96,0 Ko
    C'est ma premiere modelisation aussi complexe. Serais t'il possible de bien texturer mon objet sans les UVMaps et qu'il apparaisse dans mon loader LWJGL ? Dois-je tout recommancer (prenez des pincettes si vous me dites ca svp) ? Avez vous une solution a mon probleme svp (Je suis en perdition)
    Merci d'avance

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    tu peux nous redonner le .obj ?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Points : 1
    Points
    1

  7. #7
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Le .obj est correct je l'ai testé sur mon moteur 3D , on peut voir le code source du Load .obj ? , moi je vois que ça comme bug (ou alors c'est l'affichage du model donc code source aussi a fournir ).

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Voila pour le code source du loader
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    public class OBJLoader {
     
    	public static RawModel loadObjModel(String fileName, Loader loader) {
    		FileReader fr = null;
    		try {
    			fr = new FileReader(new File("res/" + fileName + ".obj"));
    		} catch (FileNotFoundException e) {
    			System.err.println("Couldn't load file!");
    			e.printStackTrace();
    		}
    		BufferedReader reader = new BufferedReader(fr);
    		String line;
    		List<Vector3f> vertices = new ArrayList<Vector3f>();
    		List<Vector2f> textures = new ArrayList<Vector2f>();
    		List<Vector3f> normals = new ArrayList<Vector3f>();
    		List<Integer> indices = new ArrayList<Integer>();
    		float[] verticesArray = null;
    		float[] normalsArray = null;
    		float[] textureArray = null;
    		int[] indicesArray = null;
    		try {
     
    			while (true) {
    				line = reader.readLine();
    				String[] currentLine = line.split(" ");
    				if (line.startsWith("v ")) {
    					Vector3f vertex = new Vector3f(Float.parseFloat(currentLine[1]),
    							Float.parseFloat(currentLine[2]), Float.parseFloat(currentLine[3]));
    					vertices.add(vertex);
    				} else if (line.startsWith("vt ")) {
    					Vector2f texture = new Vector2f(Float.parseFloat(currentLine[1]),
    							Float.parseFloat(currentLine[2]));
    					textures.add(texture);
    				} else if (line.startsWith("vn ")) {
    					Vector3f normal = new Vector3f(Float.parseFloat(currentLine[1]),
    							Float.parseFloat(currentLine[2]), Float.parseFloat(currentLine[3]));
    					normals.add(normal);
    				} else if (line.startsWith("f ")) {
    					textureArray = new float[vertices.size() * 2];
    					normalsArray = new float[vertices.size() * 3];
    					break;
    				}
    			}
     
    			while (line != null) {
    				if (!line.startsWith("f ")) {
    					line = reader.readLine();
    					continue;
    				}
    				String[] currentLine = line.split(" ");
    				String[] vertex1 = currentLine[1].split("/");
    				String[] vertex2 = currentLine[2].split("/");
    				String[] vertex3 = currentLine[3].split("/");
     
    				processVertex(vertex1,indices,textures,normals,textureArray,normalsArray);
    				processVertex(vertex2,indices,textures,normals,textureArray,normalsArray);
    				processVertex(vertex3,indices,textures,normals,textureArray,normalsArray);
    				line = reader.readLine();
    			}
    			reader.close();
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		verticesArray = new float[vertices.size()*3];
    		indicesArray = new int[indices.size()];
     
    		int vertexPointer = 0;
    		for(Vector3f vertex:vertices){
    			verticesArray[vertexPointer++] = vertex.x;
    			verticesArray[vertexPointer++] = vertex.y;
    			verticesArray[vertexPointer++] = vertex.z;
    		}
     
    		for(int i=0;i<indices.size();i++){
    			indicesArray[i] = indices.get(i);
    		}
    		return loader.loadToVAO(verticesArray, textureArray, normalsArray, indicesArray);
     
    	}
     
    	private static void processVertex(String[] vertexData, List<Integer> indices,
    			List<Vector2f> textures, List<Vector3f> normals, float[] textureArray,
    			float[] normalsArray) {
    		int currentVertexPointer = Integer.parseInt(vertexData[0]) - 1;
    		indices.add(currentVertexPointer);
    		Vector2f currentTex = textures.get(Integer.parseInt(vertexData[1])-1);
    		textureArray[currentVertexPointer*2] = currentTex.x;
    		textureArray[currentVertexPointer*2+1] = 1 - currentTex.y;
    		Vector3f currentNorm = normals.get(Integer.parseInt(vertexData[2])-1);
    		normalsArray[currentVertexPointer*3] = currentNorm.x;
    		normalsArray[currentVertexPointer*3+1] = currentNorm.y;
    		normalsArray[currentVertexPointer*3+2] = currentNorm.z;	
    	}
     
    }
    Ps: J'ai suivit a la lettre les tutos de ThinMatrix qui animes une serie de tuto sur youtube, je ne pense pas que cela provienne du loader. Tu arrive a avoir mon objet detailler sur open gl ?

    Et pour t'aiguiller un peu plus.
    Je load mon obj comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RawModel bunnyModel = OBJLoader.loadObjModel("robot", loader);
    TexturedModel stanfordBunny = new TexturedModel(bunnyModel, new ModelTexture(
    				loader.loadTexture("Moteur")));
    Player player = new Player(stanfordBunny, new Vector3f(75, 5, -75), 0, 100, 0, 0.6f);
    entities.add(player);

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Salut,

    Citation Envoyé par corvin_a Voir le message
    J'ai essayer pendant de longue heure mais le decoupage de la voiture prend beaucoup trop de place.. De ce fait a chaque fois que je texture j'entamme sur des texture derriere
    A voir ton dépliage UV, je dirais que c'est normal que tu n'y arrives pas, il est tout bonnement calamiteux...
    Si tu as des faces qui se superposent à d'autres face, ton dépliage n'est pas bon. Il te faut rajouter des coutures pour qu'il se fasse plus proprement. Je ne sais pas trop comment tu t'y es pris, mais il y a des patches un peu partout, tu as dû pas mal galérer... Après, forcément, ça ne se fait pas en un claquement de doigt, ça se passera beaucoup mieux quand tu auras plus d'expérience.

    Pour ton problème d'affichage, je verrais plutôt un soucis ... à l'affichage justement. Et plus particulièrement un problème de normales. Donc soit ton modèle 3D a ses normales mal orientées (un petit ctrl+n dans Blender en edit mode après avoir sélectionné toutes les faces), soit ton moteur d'affichage ne gère que les faces CW ou CCW (avec un "ou" exclusif).
    C'est juste une piste, je ne peux pas récupérer les fichiers obj/blend, je suis au boulot...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 292
    Points
    292
    Par défaut
    Pour le dépliage d'UV, ne connaissant pas Blender je ne vois pas comment faire un truc rapide en automatique.

    Par contre je dirais comme plegat te tes normals sont inversées. C'est flagrant sur le premier screenshot.
    2 solutions :
    -la solution moche, ou tu rend en double face : pas optimiser de plus, si tu compte faire un rendu speculaire, normal map etc... tu devras recalculer tes normal(inverse)
    -ou tu inverse dans l'export pour avoir une orientation correcte.

    edit : en regardant rapidement ton loader, je vois que tu prend en compte les 3 premiers vertices de chaque face, ça marcheras pas , sur les UV map je vois que tu as plusieur poly à 4.
    Triangule (je sais pas si le terme est correcte) ton model, en gros, export des triangles uniquement, et mieux vaut le faire manulement, surtout pour les poly a plus de 4 cotés?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    				String[] vertex1 = currentLine[1].split("/");
    				String[] vertex2 = currentLine[2].split("/");
    				String[] vertex3 = currentLine[3].split("/");
     
    				processVertex(vertex1,indices,textures,normals,textureArray,normalsArray);
    				processVertex(vertex2,indices,textures,normals,textureArray,normalsArray);
    				processVertex(vertex3,indices,textures,normals,textureArray,normalsArray);

  11. #11
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Je pense qu'une vidéo serait plus parlante que des screenshots.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je vais voir ca demain aux boulot, juste reset toute les normales dans le bon cotés !
    Comment ca une vidéo, qu'est ce que tu n'a pas compris dans mes screenshot ?
    De quel informations a tu besoin ? (La connexion a l'endroit ou je suis rend vraiment ce procédé inenvisageable )
    Et comment ce fait t'il que le rendu de kannagi sois propre si le probleme vient des normales ?

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 292
    Points
    292
    Par défaut
    Citation Envoyé par corvin_a Voir le message
    Et comment ce fait t'il que le rendu de kannagi sois propre si le probleme vient des normales ?
    C'est un moteur fait maison, il doit faire du double face, de toute façon il gère pas les normal sauf si il y'a eu upgrade depuis

  14. #14
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Ben comme ça, je me demande si tu n'aurais pas un problème de culling, ou un problème de profondeur, et pour cela une vidéo où la caméra tourne autour de ta voiture serait parfaite.

    EDIT:

    Et les normales inversées ne vont pas influer sur les trous, mais juste sur les calculs d'éclairage.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'ai un peu honte de dire ca, mais tout et rentrer en ordre en fesant un CTRL+N sur mon robot !
    J'avais mal fait ma modelisation J'ai pas mal galerer. Des petits conseil pour que ne cela se reproduire plus ?
    Vous auriez des bon tuto de modelisation, de texturage et peut etre de rendu a conseiller ? Merci d'avance :p
    Et merci a tous de m'avoir repondut !!!

Discussions similaires

  1. [2012] Package qui ne se termine pas une fois déployé
    Par Slaveak dans le forum SSIS
    Réponses: 1
    Dernier message: 28/04/2016, 09h33
  2. Un getter qui ne renvoie qu'une fois les données pas à chaque fois
    Par tonytrua dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/12/2011, 22h05
  3. AMFPHP qui ne fonctionne pas une fois mon swf en ligne
    Par Grimdol dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 24/04/2009, 12h20
  4. Div qui n'a pas une hauteur minimum
    Par Pumpkins dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/09/2005, 09h20
  5. Sélectionnez les champs qui n'apparaissent qu'une fois
    Par jeyce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/07/2005, 19h19

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