timnicolas / bomberman

3d remake of the classic game Bomberman in C++ with OpenGL.
https://tnicolas42.github.io/bomberman
MIT License
7 stars 0 forks source link

frustum culling bug, too close sometime #229

Closed zer0nim closed 4 years ago

zer0nim commented 4 years ago

C'est visible quand la camera bouge, surtout sur les pierres cassées, certaines se cachent trop tôt. Le code est dans Mesh::draw, la partie // don't draw Mesh outside camera range

zer0nim commented 4 years ago

image

timnicolas commented 4 years ago

c'est pas juste le parametre near qui est pas bon ?

timnicolas commented 4 years ago

je croit pas qu'on utilise le frustum culling dans le projet

zer0nim commented 4 years ago

Si, je l'utilise pour ne pas afficher la map qu'on vois pas, on aurais pas les 60 fps sinon (tu te rappelle quand j'ai ajouté la map vous laguiez comme jamais 😁)

C'est uniquement activé pour les models sans animation, dans Mesh::draw. J'ai du mal calculer la _boundingBox, je check quand j'ai finis les textures si tu veux vu que je l'ai codé, sinon pour voir le bug utilise le mode fps c et rapproche toi d'un crispy.

void    Mesh::draw(glm::mat4 const &model) const {
    // don't draw Mesh outside camera range
    if (!_openGLModel.isAnimated()) {
        glm::vec4 newStartPoint = model * glm::vec4(_boundingBox.startPoint, 1.0);

        if (_openGLModel.getCam().frustumCullingCheckCube(
            glm::vec3(newStartPoint), _boundingBox.size) == FRCL_OUTSIDE) {
            return;
        }
    }
...
timnicolas commented 4 years ago

c'est peut etre ma fonction qui bug mais les bounding box ne sont pas bien placés.

j'ai mis ca juste avant le _openGLModel.getCam().frustumCullingCheckCube

BoxCollider::drawBox(glm::vec3(newStartPoint), _boundingBox.size, {1, 1, 1, 1});

Screenshot 2020-05-21 at 11 18 10

zer0nim commented 4 years ago

non mais je pense pas que ce soit t'a fonction, faut que je regarde pourquoi certains bounding box sont mal placées