Bojour.
J'aimerais garder l'idee d'une map en niveau de gris, mais le probleme est que je ne sais pas comment en faire une immense !
J'avais demarer sous maya une map mais le temps de travail est incroyablement long et de plus c'est tres difficile de faire les details.
Sans parler de la taille en go de la map.
Donc je cherche comment faire une map immense.
Soit faire une tres grosse image ou essayer d'assembler plusieur images.
Par la meme occasion.
est-ce que le code suivant me donne la position de la camera en (x,y,z)
str += "X: "; str += camera->getAbsolutePosition().X; str += "Y: "; str += camera->getAbsolutePosition().Y; str += "Z: "; str += camera->getAbsolutePosition().Z;
Merci !
See you
Hors ligne
Salut,
Une map en niveau de gris, c'est pas top, tu en dis bien toi-même les inconvéniants.
Pour faire une map immense, une solution serait de la gérer en level of details, pour augmenter le nombre de polygones là où est pointée la caméra et vers les zones proches de la caméra. Il faut donc se baser sur un mesh comportant plusieurs sous meshs, mais ça c'est un travail de moteur 3D.
Et non, ton code ne te donne pas la position de la caméra. L'opérateur +=(float) n'est pas défini pour l'objet string.
Hors ligne
Salut,
Map immense? Une très grande image, ça ne marchera pas (limité à 65635 vertices) et serait long à charger.
Essayes de changer le scale du terrain dans le tuto 12 "terrain":
terrain->setScale(core::vector3df(2048, 256, 2048));
Mais ça dépend de ton jeu et du niveau de détail dont tu as besoin. J'obtiens des choses intéressantes (http://irrlicht.sourceforge.net/phpBB2/ … hp?t=19428)
En ce moment je bosse sur la génération procédurale (Perlin, Fractal, Diamond square), ce qui a un avantage certain pour une mosaîque de nodes évoquée par Kayyam (d'ailleurs il faudra que je pense à mesurer le temps pris par ces algorithmes pour les comprarer, lol) Et surtout pas de bitmap stocké sur le disque: un secteur de 7 kilomètres carrés en est réduit à une dizaine d'octets ...
Dernière modification par katsankat (05-03-2007 10:00:58)
Hors ligne
Alors comment faire finalement pour gerer le level of detail ?
Ou l'apprendre ?
Par la meme occasion quelqu'un pourrait me dire comment prendre la position d'une node en X,Y,Z.
Merci
a+
Dernière modification par maitrelame12545 (06-03-2007 01:09:18)
Hors ligne
Pour de la doc sur le level of details, google 'terrain LOD' et c'est bon
Par contre pour l'utiliser ... si irrlicht ne le gère pas, tu n'y arriveras pas. C'est une opération que doit faire le moteur 3D, s'il ne la fait pas, tant pis.
Et pour avoir les positions x,y,z d'un node, il faut faire getAbsolutePosition ()
c'est juste que tu ne peux pas directement mettre des flottants dans une string
Hors ligne
Merci !
AUpire si c'est pas gerer jutiliserais opengl ou directx
Hors ligne
ou solution "à la mano" :
Tu génères une heightmap géante (toshop powaaa par exemple) tu la découpes et tu te fais une classe qui gère le rendu ou non des zones (un peu comme des chunks géants) qui sont adjacentes à la caméra. 'fin moi je ferais comme ca après .... Tu peux y ajouter une optimisation pas trop complexe comme un frustum culling à 180° (voir le post de not' Coco national sur son système de terrain ) et ca devrait bien tourner.
plouf
Hors ligne
...
Ok...
Et ne francais ca donne quoi ? lol
Bon je voix a peu pres ce que tu veux dire sauf pour le frustum culling 180*.
Je pense que je vais faire une fonction pour gerer ca avec OpenGl ou sinon des carte generer en direct via le serveur mais bon fo attendre la fibre optique !
A+
Hors ligne
maitrelame12545 :
...
Ok...
Et ne francais ca donne quoi ? lol
Bon je voix a peu pres ce que tu veux dire sauf pour le frustum culling 180*.
Le frustum culling c'est l'élimination du rendu des polys en dehors du champ de vision. En général c'est utilisé avec un système de quadtree, il faut déterminer si une zone est dans le champ de vision, si oui on découpe cette zone en 4 et on refait le calcul, pour bien avoir seulement les polys visibles de rendus. Mais vu la puissance des cg actuelles ca peut devenir aussi long de tester si une zone doit etre rendue que de faire un rendu sans se poser de question. Donc tu peux faire le rendu des polys qui sont devant la caméra (d'où frustum à 180°) ca fait un frustum sans gros calcul donc ca doit théoriquement bien fonctionner. (je t'invite fortement à google-iser sur le sujet)
maitrelame12545 :
Je pense que je vais faire une fonction pour gerer ca avec OpenGl ou sinon des carte generer en direct via le serveur mais bon fo attendre la fibre optique !
Plein de threads, un serveur X/joueur par thread, un méga serveur qui calcule tout le rendu, ouais si on veut, ca peut donner un supreme commander qui peu fonctionner avec un 386SX
Hors ligne