probleme pour texturer une planete en opengl - C++ - Programmation
MarshPosté le 09-06-2004 à 17:02:10
Alors voilà, mon problème est d'afficher une planète dans son entier, et de pouvoir se déplacer dessus comme on veut (voire de prendre de l'altitude et de se barrer dans l'espace puisque à la base je programme un jeu de vaisseaux spatiaux). donc je pars d'un sphère, que je modifie selon l'altitude de tous les points (à partir d'une heightmap), et je la texture. Et c'est là que j'ai un problème... J'ai d'abord pensé à utiliser une seule grosse texture plaquée tout autour, mais si je veux vraiment avoir quelque chose de détaillé, ça fera une texture énorme. Alors j'ai pensé à faire plein de petites textures pour chaque zone de la planète, et seules les textures qu'il y a besoin d'afficher sont chargées en mémoire. Sauf que vu que j'ai pas envie de tout dessiner à la main, j'ai fait un bout de code qui me génère ces textures à partir de textures génériques : ça fais un mix de plusieurs texture en fonction de l'altitude (montagne ou plaine), la pente (falaise ou terrain plat) et le climat (désertique ou tempéré, voir arctique). mon programme fonctionne bien, à part que encore une fois, si je veux avoir des textures très détaillées, ça va prendre beaucoup trop de mémoire (pour le moment, j'ai une planète à échelle réduite (10km de rayon), découpée selon longitude et latitudes en 40*20 morceaux, chaque morceau ayant sa propre texture de 128*128 pixels). Quand on va trop près du sol, c'est assez moche, et ça prend plein de mémoire... L'autre solution que j'ai envisagée est de plaquer directement les textures génériques sur le sol, en les mixant en temps réel, avec de la transparence etc, mais je craint que du coup l'affichage soit trop lent... Alors est ce que quelqu'un a une idée pour avoir quelque chose de détaillé, rapide, et qui prenne pas trop de mémoire ? ou peut-être que je demande l'impossible... Et si vous avez pas d'autre solution, le mieux ce serais d'utiliser des textures génériques (donc pas besoin de beaucoup de mémoire, mais affichage lent) ou alors de générer des textures "précalculées" ? Ah oui, et je suppose que c'est pas vraiment le bon endroit pour poster ce topic, mais j'arrive à le faire rentrer dans aucune catégorie, et vu que mon programme est en c++...
Marsh Posté le 09-06-2004 à 17:02:10
Alors voilà, mon problème est d'afficher une planète dans son entier, et de pouvoir se déplacer dessus comme on veut (voire de prendre de l'altitude et de se barrer dans l'espace puisque à la base je programme un jeu de vaisseaux spatiaux). donc je pars d'un sphère, que je modifie selon l'altitude de tous les points (à partir d'une heightmap), et je la texture. Et c'est là que j'ai un problème...
J'ai d'abord pensé à utiliser une seule grosse texture plaquée tout autour, mais si je veux vraiment avoir quelque chose de détaillé, ça fera une texture énorme. Alors j'ai pensé à faire plein de petites textures pour chaque zone de la planète, et seules les textures qu'il y a besoin d'afficher sont chargées en mémoire. Sauf que vu que j'ai pas envie de tout dessiner à la main, j'ai fait un bout de code qui me génère ces textures à partir de textures génériques : ça fais un mix de plusieurs texture en fonction de l'altitude (montagne ou plaine), la pente (falaise ou terrain plat) et le climat (désertique ou tempéré, voir arctique). mon programme fonctionne bien, à part que encore une fois, si je veux avoir des textures très détaillées, ça va prendre beaucoup trop de mémoire (pour le moment, j'ai une planète à échelle réduite (10km de rayon), découpée selon longitude et latitudes en 40*20 morceaux, chaque morceau ayant sa propre texture de 128*128 pixels). Quand on va trop près du sol, c'est assez moche, et ça prend plein de mémoire... L'autre solution que j'ai envisagée est de plaquer directement les textures génériques sur le sol, en les mixant en temps réel, avec de la transparence etc, mais je craint que du coup l'affichage soit trop lent... Alors est ce que quelqu'un a une idée pour avoir quelque chose de détaillé, rapide, et qui prenne pas trop de mémoire ? ou peut-être que je demande l'impossible... Et si vous avez pas d'autre solution, le mieux ce serais d'utiliser des textures génériques (donc pas besoin de beaucoup de mémoire, mais affichage lent) ou alors de générer des textures "précalculées" ?
Ah oui, et je suppose que c'est pas vraiment le bon endroit pour poster ce topic, mais j'arrive à le faire rentrer dans aucune catégorie, et vu que mon programme est en c++...