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

C# Discussion :

[Direct X 3D] Probleme de texture sur un cube


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut [Direct X 3D] Probleme de texture sur un cube
    Bonjour,
    Je programme un logiciel dans lequel je souhaiterais faire figurer un cube en 3d qui est animé (rotation). Pour cela, j'utilise l'api direct3d dont je ne sais pas me servir, j'ai donc copié collé vulgairement un code que j'ai aménagé selon mes besoins mais un problème revient régulièrement, je ne parvient pas à mettre une texture par face car le cas echeant ne m'aurait pas géné mais lors de la rotation de mon cube, sur la face arriere, la texture est à l'opposé (symétrie). J'utilise un tableau de triangle, le rendu est fait par drawprimitives mais la méthode device.SetTexture(0, texture); semble bornée, impossible de faire passer le n° du triangle ou de la face. je vous demande donc un moyen soit d'eviter que la texture se tranforme en symétrie, ou alors d'avoir une texture par face.
    Merci d'avance,
    Cordialement,
    HOME197

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    quand tu appliques ta texture, tu dois pouvoir définir des coordonnées UV ?

    Je pense que c'est de ce coté là qu'il faut regarder

    Sinon, dans les exemples de microsoft, tu as ce type de comportement (cube texturé), donc ca devrait pas être "trop" compliqué de comprendre d'où vient ton problème !!!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    la seule méthode que j'ai pour relier un relier un device à une texture, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    device.SetTexture(int stage, BaseTexture texture);
    Dans l'exemple de microsoft, j'ai vu qu'il utilisait les mesh mais je ne vois pas de methode setTexture dans la classe mesh ?!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    j'ai essayé de creer un vertexbuffer par face pour mettre une texture par vertexbuffer au rendu mais j'ai une erreur d'acces :
    Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
    alors que lors de l'envoi à la fonction sans tableau, cela marchait tres bien.
    Voilà la fonction qui envoie l'exception : précisement, c'est la derniere instruction.
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    private void OnVertexBufferCreate(object sender, EventArgs e)
    {
    	CustomVertex[][] verts = new CustomVertex[6][];
                for(int i =0;i<6;i++)
                    verts[i] = new CustomVertex[6];
    	// 1st facet ----------------------------------------------------- 
    	//triangle 1
    	verts[0][0] = CreateVertex(-75, -75, -75, 0, 0);
    	verts[0][1] = CreateVertex(75, -75, -75, 1, 0);
    	verts[0][2] = CreateVertex(-75, 75, -75, 0, 1);
     
    	//triangle 2
    	verts[0][3] = CreateVertex(-75, 75, -75, 0, 1);
                verts[0][4] = CreateVertex(75, -75, -75, 1, 0);
                verts[0][5] = CreateVertex(75, 75, -75, 1, 1);
     
    	// 2nd facet ----------------------------------------------- 
    	//triangle 1
                verts[1][0] = CreateVertex(75, -75, -75, 0, 0);
                verts[1][1] = CreateVertex(75, 75, -75, 1, 0);
                verts[1][2] = CreateVertex(75, -75, 75, 0, 1);
     
    	//triangle 2
                verts[1][3] = CreateVertex(75, -75, 75, 0, 1);
                verts[1][4] = CreateVertex(75, 75, -75, 1, 0);
                verts[1][5] = CreateVertex(75, 75, 75, 1, 1);
     
    	// 3rd facet ------------------------------------------------- 
    			//triangle 1
                verts[2][0] = CreateVertex(-75, -75, -75, 0, 0);
                verts[2][1] = CreateVertex(75, -75, -75, 1, 0);
                verts[2][2] = CreateVertex(-75, -75, 75, 0, 1);
     
    			//triangle 2
                verts[2][3] = CreateVertex(-75, -75, 75, 0, 1);
                verts[2][4] = CreateVertex(75, -75, -75, 1, 0);
                verts[2][5] = CreateVertex(75, -75, 75, 1, 1);
     
     
    	// 4th facet --------------------------------------------- 
    	//triangle 1
    	verts[3][0] =  CreateVertex(-75, -75, -75, 0, 0);
                verts[3][1] = CreateVertex(-75, 75, -75, 1, 0);
                verts[3][2] = CreateVertex(-75, -75, 75, 0, 1);
     
    	//triangle 2
                verts[3][3] = CreateVertex(-75, -75, 75, 0, 1);
                verts[3][4] = CreateVertex(-75, 75, -75, 1, 0);
                verts[3][5] = CreateVertex(-75, 75, 75, 1, 1);
     
    	// 5th facet --------------------------------------------------- 
    	//triangle 1
    	verts[4][0] =  CreateVertex(-75, -75, 75, 0, 0);
                verts[4][1] = CreateVertex(75, -75, 75, 1, 0);
                verts[4][2] = CreateVertex(-75, 75, 75, 0, 1);
     
    	//triangle 2
                verts[4][3] = CreateVertex(-75, 75, 75, 0, 1);
                verts[4][4] = CreateVertex(75, -75, 75, 1, 0);
                verts[4][5] = CreateVertex(75, 75, 75, 1, 1);
     
    	// 6th facet --------------------------------------------- 
    	//triangle 1
                verts[5][0] = CreateVertex(-75, 75, -75, 0, 0);
                verts[5][1] = CreateVertex(75, 75, -75, 1, 0);
                verts[5][2] = CreateVertex(-75, 75, 75, 0, 1);
     
    	//triangle 2
                verts[5][3] = CreateVertex(-75, 75, 75, 0, 1);
                verts[5][4] = CreateVertex(75, 75, -75, 1, 0);
                verts[5][5] = CreateVertex(75, 75, 75, 1, 1);
     
                for(int i=0;i<6;i++)
    		vertexBuffer[0].SetData(verts[0], 0, LockFlags.None);
    }

Discussions similaires

  1. c# applisquer 6 texture sur un cube
    Par t-die dans le forum DirectX
    Réponses: 1
    Dernier message: 08/06/2006, 17h54
  2. Réponses: 4
    Dernier message: 16/03/2006, 17h50
  3. probleme de texture sur une sphère
    Par sebpp dans le forum OpenGL
    Réponses: 2
    Dernier message: 12/04/2005, 19h46
  4. Texture sur un cube en rotation sous Delphi !!!
    Par Cosmo dans le forum DirectX
    Réponses: 1
    Dernier message: 06/01/2004, 21h14

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