IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Rotation d'un triangle


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut Rotation d'un triangle
    Bonjour,

    Je débute en DirectX (via VB.NET), et je rencontre un problème :
    lorsque je fais un device.Transform.World.RotateY(), je ne vois aucune rotation à l'écran, et je ne comprends pas pourquoi.

    Pourriez vous m'aider, s'il vous plait?

  2. #2
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    peux tu mettre tout ton code, je connais pas le vb et sur la ligne que tu as écrit, je comprend que dalle au chainage que tu fais ><

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Oki, alors voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Imports Microsoft.DirectX
    Imports Microsoft.DirectX.Direct3D
     
     
    Public Class Form1
        Dim device As Device
        Dim present As New PresentParameters
        Dim triangle(3) As CustomVertex.TransformedColored
        Dim buff As VertexBuffer
        Dim sens As Integer = 1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True)
            Initialisation()
            creationTriangle()
        End Sub
     
        Public Sub Initialisation()
            present.Windowed = True
            present.SwapEffect = SwapEffect.Discard
            device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, present)
        End Sub
     
        Public Sub creationTriangle()
            triangle(0).Color = Color.Red.ToArgb
            triangle(0).Position = New Vector4(100, 1, 0, 1)
            triangle(1).Color = Color.Orange.ToArgb
            triangle(1).Position = New Vector4(200, 0.866 * 200, 0, 1)
            triangle(2).Color = Color.Yellow.ToArgb
            triangle(2).Position = New Vector4(1, 0.866 * 200, 0, 1)
        End Sub
     
        Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
            device.RenderState.Lighting = False
            device.RenderState.CullMode = Cull.None
            device.Clear(ClearFlags.Target, Color.DarkBlue, 1.0, 0)
            device.BeginScene()
            device.Transform.World.RotateY(2) 'Rotations de 2radians par exemple
            device.VertexFormat = CustomVertex.TransformedColored.Format
            device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle)
            device.EndScene()
            device.Present()
            Me.Invalidate()
        End Sub
    End Class

  4. #4
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    je suppose (vu que j'ai pas ce qu'il faut pour tester du vb) que device.Transform.World.RotateY(2) ne multiplie pas World par une nouvelle matrice de rotation, et c'est ça le problème.

    - soit tu déclare une variable angle que tu incrémente au fil du temps et tu fais :
    device.Transform.World.RotateY(angle).

    - soit tu récupère World, tu créé une autre matrice avec ton Rotate(2) et à chaque tour de boucle tu multiplie World par cette matrice.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Erf cela n'a pas l'air de fonctionner :s

  6. #6
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    peux tu expliciter plus ce qui ne va pas?

Discussions similaires

  1. Point à l'intérieur d'un triangle ?
    Par remi77 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 15/05/2017, 14h49
  2. Rotation d'un bouton ?
    Par ken_survivant dans le forum Composants
    Réponses: 3
    Dernier message: 01/04/2003, 18h16
  3. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59
  4. [3D] Triangles
    Par Frederic dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/11/2002, 23h01
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo