CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++/OpenGL] Collada DAE bug textures

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
[denshaotoko]
[denshaotoko]
Niveau 25
08 août 2014 à 10:25:22

Bonjour,

:d) Mon probleme :
j'essaye de faire un parser/viewer de fichier collada (.dae) et je bloque depuis un long moment face à un bug dont je n'arrive pas du tout à comprendre la provenance

donc comme vous pouvez le voir sur cette image :

https://camo.githubusercontent.com/d29efd521fa90fe3a56391f417993301cfe95924/687474703a2f2f7069782e746f696c652d6c696272652e6f72672f75706c6f61642f6f726967696e616c2f313430373438303232332e706e67

à gauche, le rendu que j'ai avec mon programme, donc on voit bien que ça affiche mal les textures par rapport au model de droite, qui lui, est le rendu voulu

:d) Informations supplementaires :

le projet complet : https://github.com/stanoob/ParserColladaDAE

présentation : https://github.com/stanoob/ParserColladaDAE/blob/master/README.md

je charge ma texture (mise de manière static pour l'instant) à partir d'ici https://github.com/stanoob/ParserColladaDAE/blob/master/mesh.cpp#L14

jusque la ligne 51

je recupère mes coordonnées de textures finales pour chaque <geometry> dans cette fonction : https://github.com/stanoob/ParserColladaDAE/blob/master/nodexml.cpp#L111

les coordonnées de texture parser sont les bonnes normalement, puisque je fais exactement la même procédure que j'ai faite pour parser les coordonnées de positions des vertices, j'ai juste bougé l'offset qui est plus à 0, mais à 2 et puis bien sûr je prends mes données dans le noeud source correspondant aux données des coordonnées de textures

pour lire les coordonnées des vertices je lis les 3 coordonnées consécutives (X,Y,Z) dans le float_array
mais là pour les coordonnées de texture, je n'en lis que 2 (S, T) sur les 3 (S, T, P)

si je me trompe pas, S et T sont les coordonnées X et Y du ième pixel lu dans la texture à associé au ième sommet,
par contre, le parametre P je ne vois pas ce que ça peut être, c'est pourquoi je ne le lis pas, le probleme peut venir de là?

en fait j'ai essayé de voir ce qu'était ce paramètre P, j'ai cru comprendre que c'était en lien avec les projections geometriques de textures, mais je n'arrive pas à comprendre le lien avec les données correspondant au parametre P

Merci d'avance pour vos réponses !

----------------
p.-s: si vous voyez des affreusetés dans mon code, n'hésitez pas à me le dire car je suis encore assez novice niveau OpenGL 3.x

p.-p.-s: si je n'ai pas été clair sur certains points de mon probleme, n'hésitez pas à me demander davantage de précisions/détails

Lapintade
Lapintade
Niveau 30
08 août 2014 à 12:39:23

Il peut arriver qu'il y ai une inversion en y des textures. Faut un essai en inversant ta texture (symétrie verticale) et voit ce que ça donne

[denshaotoko]
[denshaotoko]
Niveau 25
08 août 2014 à 18:08:46

Oh mon dieu ce n'était que ça...

http://pix.toile-libre.org/upload/original/1407514014.png

Merci beaucoup Lapintade! :)

[denshaotoko]
[denshaotoko]
Niveau 25
08 août 2014 à 18:29:31

Désolé du double post

ce polygone n'a qu'une seule texture, et j'utilise qu'un seul VBO avec une seule texture
https://github.com/stanoob/ParserColladaDAE/blob/master/mesh.cpp#L14

mais pour mon mario, ce polygone est texturé à partir de plusieurs images
du coup plusieurs texture

je ne vois pas comment faire, la seul façon de faire que je vois serait de créer plusieurs VBO, un pour chaque partie du polygone utilisant une texture différente, donc il y aurait autant de VBO qu'il y a de texture, mais je ne sais pas si cela est très propre

y a t-il une autre solution?

pilo1488
pilo1488
Niveau 10
09 août 2014 à 00:43:18

Oui c'est la bonne facon, je pense.
Si tu veux optimiser, c'est au niveau du modèle 3d qu'il faut faire ca (utiliser une seule texture pour tous l'objet).

En general on plutot envie de combiner plusieurs modèles dans un meme buffer (pour avoir un seul draw), en assemblant les textures dans un atlas (pour augmenter le nombre de triangles par draw call, eviter les changements de texture etc, mais ca a d'autre inconveniants)

[denshaotoko]
[denshaotoko]
Niveau 25
09 août 2014 à 01:03:09

D'accord je vois

mais j'ai l'impression que la plupart des polygones exportés à partir de 3DS Max et Maya par les graphistes sont souvent faites avec plusieurs textures, surtout les gros modeles

du coup je pense que je vais faire un VBO pour chaque texture

par contre je peux me permettre d'utiliser qu'un seul VAO, ça sert à rien d'utiliser un VAO pour chaque VBO si j'ai bien compris

pilo1488
pilo1488
Niveau 10
09 août 2014 à 11:27:01

J'ai jamais utilisé les VAO (je devrais en regardant un peu à quoi ca ressemble :)), mais oui ca peut etre possible d'en utiliser un seul.

En fait parfois un objet 3D sera peut etre découpé en plusieurs VBO, suivant les matériaux utilisé. Par exemple pour une voiture, tu aura un type de material pour le chassis (metal, pas forcément texturé, etc), un autre pour les vitre (transparent, ca ne sera pas affiché au meme moment que les objets solide de ta scène), etc.

Après c'est celui qui fait le modèle qui va gérer l'optimisation, et utiliser par exemple une seule texture (qui combinera peut plusieurs élément) pour pouvoir regrouper plusieurs parties du modèle.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment