[DX9]Un Probleme de Camera

Youp !

Je rencontre un phénomène étrange avec une camera en Managed DirectX.

Pour commencer , je suis plutot débutant dans ce domaine.
Le projet est un jeu, un shoot’em up à scrolling vertical.

Autant dire que j’en suis au tout début , et deja je rencontre un probleme plutot étrange.

La caméra est placé à la verticale, au dessus du mesh qui constitue le décor, et la camera est dirigée vers le bas.
Pour le scrolling , il convient donc d’incrémenter la position Z de la camera, ainsi que celle du point visé.

Le mesh est assez grand et est placé en ( 0, 0, 10 ), il ne pose aucun probleme

this.Z += 0.01; device.Transform.View = Matrix.LookAtLH(new Vector3(0,20.0f,(this.Z)), new Vector3(0.0f,0.0f,this.Z), new Vector3(0,1.0f,0));

Voilà ce qui serait sensé marcher. Or , il n’en est rien , écran noir.
Cependant, modifier séparement la position de la camera et celle du point visé, cela fonctionne. Mais ca ne donne pas un scrolling.

Je me suis creusé la tete, et j’ai fait un test, j’ai modifié cette portion de code:

this.Z += 0.01; device.Transform.View = Matrix.LookAtLH(new Vector3(0,20.0f,(this.Z/1.00001f)), new Vector3(0.0f,0.0f,this.Z), new Vector3(0,1.0f,0));

Et chose etonnante, cela fonctionne. De façon étrange, mais cela marche.
Plus on rapproche (this.Z/x) de this.Z , plus le scrolling apparait tard à l’écran ( le resultat n’est pas evident à expliquer) pour ne plus du tout apparaitre lorsque x = 1.

Inutile de dire que pondre un code tordu et crado n’est pas le but que je poursuis meme si je suis en phase de tatonnement. Je code des petits bouts de code et une fois que j’aurais une idée correct de l’ensemble, je recoderai tout bien proprement.
Mais ce probleme m’irrite…

Si l’un d’entre vous à une idée sur ce qui se passe pour produire un phenome aussi etrange, merci d’éclairer ma lanterne !

:stuck_out_tongue:

Ya un truc avec la caméra: c’est euh je sais plus comment ca s’appelle mais ca intervient quand tu regarde soit tout en bas, soit tout en haut. C’est parce que ta caméra a besoin de 3 vecteurs pour être définie (position, direction ou tu regardes, et le 3ième défini ce qui correspond au “haut” de la caméra). Les mouvements de caméra sont hasardeux a partir du moment ou l’angle entre le vecteur direction et le vecteur “haut” approche les 0 ou 180 degrés. Tu peux solver ca avec les quaternions.

Si c’est un vertical scrolling, moi perso j’aurais décalé le décor, mais je suis un original… (oui je préfères décaler 250 objets de décors que la caméra et le vaisseau :P).

Ou alors je dis une grosse connerie et c’est pas ca qui fait déconner les mouvement de la caméra.

Ca me semble plutot etre cela en fait.
Je pense que tu ne te trompes pas.

Pour decaler le decor , non , je veux justement faire un truc propre , meme si ca peut paraitre plus simple !

Euh les quaternions ? ca se mange ? ca s’injecte dans les veines ?

Regarde ici, ptet que tu y trouveras ton bonheur:

http://www.cafzone.net/ipb/index.php?showtopic=22115

Ouch !

Mal au crane, je regrette de pas avoir suivi certains cours de maths !

Le truc c’est que les matrices , je connais vraiment la base , et si je m’aide de ce que le Managed Dx9 peut me proposer , c’est bien parce que je suis un quichard dans ce domaine.

Je vais voir ce que je peux endurer et comprendre , au pire , je continuerai à utiliser ma vieille technique à 2 boulze !

Merci quand meme [Pere]Cil !