Bonjour,
J'aurais aimé savoir s'il était possible d'appliquer une heightmap sur une sphère ? (Pour en faire une sorte de "planète")
Si oui, pourriez - vous me donner quelques indications ?
Ou peut - être y a-t-il une meilleure solution ?
D'avance, merci
Hors ligne
quelque chose dans ce style ?
http://irrlicht.sourceforge.net/forum/v … mp;t=42722
http://proland.inrialpes.fr
sinon si tu veut le faire par toi même
tu crée une sphere et tu multiplie la distance
entre le centre et le polygonne n et le coef que tu a sur ta heightmap
le seul point compliquer c'est la correpondance entre les coordonées polaire et celle de ta heightmap
http://mathproofs.blogspot.fr/2005/07/m … phere.html
Hors ligne
Merci, c'est exactement le genre de chose que je veux faire !
J'ai essayé d'utiliser son sceneNode, ça marche, seulement je n'ai pas vraiment l'impression qu'il prend en compte ma HeightMap et que cela ne me crée qu'une sphère toute ronde, sais-tu comment y remédier ? J'ai essayer de faire un ->setMaxHeight(2.0f) mais le compilateur me dit : " |122|error: 'class irr::scene::ISceneNode' has no member named 'setMaxHeight'| ", pourtant elle est bien là.
Est-ce qu'il y aurais moyen depuis ces fonctions d'atteindre une taille permettant de faire le même genre de décor que sur "Proland" ? ( http://proland.inrialpes.fr )
Et si je pars de rien, comment puis je faire pour récupérer le coefficient de chaque point sur la Heightmap ?
[Edit] Et comment puis-je parcourir chaque points de ma sphère, en récupérant ses coordonnées x y z ?
C'est la première fois que je me lance dans ce genre de chose ^^
Merci !
Dernière modification par Boar (27-10-2013 22:39:35)
Hors ligne
tu doit stocker un CSphericalTerrain et non un ISceneNode pour pouvoire acceder au définition spécifique
sinon tu fait un cast
((CSphericalTerrain*)node)->setMaxHeight(2.0f);
malheureusement tu ne pourras surment pas atteindre le même niveaux que proland donne avec CSphericalTerrain,
proland utilise un quad-tree lod qui lui permet de supprimer les parti non visible du rendue,
et de modifier en temps réelle le niveaux de détail affin d'exclure un maximum de polygonne
mais respectant au maximum le relief suivant la distance
par contre rien ne tempeche d'utiliser proland au seins d'irrlicht si tu limitte ton application a opengl
pour ce qui est de la récuparation des données [x,y] de la heightmap regarde du coter ITexture
les deux fonctions lock/unlock sont présente pour récupéré le pointeur vers le tableaux de la texture interne
le format d'access respect:
irr::u8 *buffer; // size texture->getPitch()
buffer = data[y*width+x*texture->getPitch()];
(si mais souvenir sont bon)
le nombre de composant de la texture correspond au nombre de valuer nécéssaire a la representation d'un texel
défini par ECOLOR_FORMAT
pour ce qui est des points de la sphere tu doit passer par IMesh
tu itères sur chaque IMeshBuffer qu'il contient
et tu passe par getVertex()
suivant getVertexType() la taille different et la donner sont differents
tu fait un bête cast comme mentionner dans la doc
Hors ligne
Je crois que ça s'annonce tout de même plus compliqué que ce à quoi je m'attendais ^^
N'y aurait-il pas une autre méthode ?
Crois - tu qu'il serait possible de mettre des heightmaps bout à bout, en changeant à chaque fois leur inclinaison ?
( Un peu comme une boule à facette → http://us.123rf.com/400wm/400/400/a41ca … enants.jpg )
- Cela me permettrait ainsi, peut-être, de choisir quelle map afficher en fonction de l'emplacement de la caméra ( ? )
- Où bien d'utiliser une fonction qui me permettrais de changer l'emplacement des vertex de la map, pour la faire tourner sur elle même ( un peu comme si on roulait une feuille de papier ) ?
Merci !
Hors ligne
Le plus simple c'est d'avoir un logiciel de dessin 3D comme Blender. Tu créés une sphere normale et une sphere que tu déformes (avec l'outils "Brush" par exemple) pour donner du relief. Ensuite, avec le modificateur adéquat intégré au logiciel, tu créés la HeightMap. Mais il faut avoir un minimum de connaissances dans un logiciel de 3D. Il y a des tutos sur le net, c'est comme ça que j'ai créé mes normalsMaps sur 3ds max.
Hors ligne
Pour ce qui est des logiciels 3D, il n'y à pas de problème.
Puis-je appliquer des normalsMaps sur une sphère ? ( avec Irrlicht ? )
Hors ligne
Dans l'enum irr::video::E_MATERIAL_TYPE, il y a EMT_NORMAL_MAP_SOLID qui te permet de spécifié l'utilisation des normals map.
Il y a aussi : EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR et EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA pour la transparence en plus.
La normalmap et la height map sont toutes deux extractibles avec un logiciel mais la heightmap est plus légère ingame. Aprés tout dépends si tu préfères la qualité (normalsmap) ou la performance (heightmap). Pour un jeu débutant, je pense que tu devrais rester sur ta première idée avec la heightmap pour l'instant. Par contre, pour ta sphère, le mieux c'est d'utiliser un mesh dont tu déplieras toi-même UVW Map plutôt que d'utiliser le GeometryCreator d'Irrlicht car tu auras un meilleur contrôle du résultat.
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 45 invités en ligne Aucun membre connecté RSS Feed |