Hello à tous !
Quelqu’un a déjà essayé d’implémenter ça ?
Car perso j’obtiens ça pour leur arbre (sans avoir dessiné les segments, juste les points) :
Au lieu de ça :
Et aussi, j’ai essayé de dessiner ce cube :
1 2 3 4 5 6 7 8 | Seq(0, 15, 0), Seq(0, 15, 20), Seq(0, 0, 0), Seq(0, 0, 20), Seq(15, 15, 0), Seq(15, 15, 20), Seq(15, 0, 0), Seq(15, 0, 20) |
Ce qui me donne cela (j’ai rajouté les segments à la main) :
Alors que j’aurais voulu avoir un cube comme ça :
J’ai essayé de diminuer la profondeur des 4 points du devant du cube, ça semble marcher :
1 2 3 4 5 6 7 8 | Seq(0, 15, 0), Seq(0, 15, 5), Seq(0, 0, 0), Seq(0, 0, 5), Seq(15, 15, 0), Seq(15, 15, 5), Seq(15, 0, 0), Seq(15, 0, 5) |
J’ai par ailleurs aussi essayé de translater vers la droite deux points, ce qui a également marché :
1 2 3 4 5 6 7 8 | Seq(0, 15, 0), Seq(0, 15, 5), Seq(0, 0, 0), Seq(0, 0, 5), Seq(15, 15, 0), Seq(20, 15, 5), Seq(15, 0, 0), Seq(20, 0, 5) |
Résultat :
Donc voilà, je sais bien que vous montrer ça sans code ou quoi ça ne sert pas à grand-chose. Le truc c’est que ScratchAPixel n’utilise pas de matrice de projection perspective, le cours veut vraiment entrer dans les détails et considère à juste titre que cette matrice n’est qu’un outil qui cache les véritables mécanismes (qui eux sont vraiment expliqués, et c’est ça que j’ai appliqué/implémenté).
En plus de ça je suis sûr et certain que ma perspective marche (déjà rien que les tests ci-dessus tendent à le montrer).
C’est juste que leur matrice camera-to-world (que j’ai inversée pour avoir la matrice world-to-camera) est peut-être incorrecte, dans le sens où elle ne me permettra jamais d’obtenir un cube vu de face. SAUF QUE si vous n’avez jamais lu le cours de ScratchAPixel OU que vous n’avez pas trop de connaissances en infographie, parler de "matrice camera-to-world" ou de "matrice world-to-camera" ça ne vous avancera pas à grand-chose pour m’aider. Sachez juste que c’est pas une matrice de projection perspective.
Du coup voilà, si jamais quelqu’un a déjà lu ça en entier ou encore mieux : qu’il a déjà essayé d’implémenter ça, on peut en parler ici si c’est possible ? ^^’
Merci d’avance et bonne soirée à tous !
PS : au cas où, leur matrice camera-to-world est :
1 2 3 4 5 6 | Seq( Seq(0.871214, 0, -0.490904, 0), Seq(-0.192902, 0.919559, -0.342346, 0), Seq(0.451415, 0.392953, 0.801132, 0), Seq(14.777467, 29.361945, 27.993464, 1) ) |
Inversée, on obtient la matrice world-to-camera qu’il faut utiliser d’après leur cours, qui est la suivante :
1 2 3 4 | ArrayBuffer(0.8712134471343778, -0.19290207078160884, 0.45141489009083896, 0.0) ArrayBuffer(-1.545258968022739E-7, 0.9195582297541908, 0.3929527292207119, 0.0) ArrayBuffer(-0.4909038179934774, -0.3423459264824255, 0.801132140002119, 0.0) ArrayBuffer(0.8677749286593306, -14.565965812600595, -40.63508878499671, 1.0) |