Publicité
+ Répondre à la discussion
Page 7 sur 8 PremièrePremière ... 345678 DernièreDernière
Affichage des résultats 121 à 140 sur 150
  1. #121
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Je n'ai pas loadé la moitié des mesh dont je vais avoir besoin et le nombre de frames par secondes chute dramatiquement a 14/15fps. Et elle chute a 12 quand je fais en plus bouger la camera La lenteur ne vient pas du code que j'ai ecris (autre que du code destiné a utiliser de la 3D). Si je lance le meme programme et que je ne lance pas la fonction qui cree mes mesh je suis environ a 300fps. Y a t il des moyens de rendre l'affichage plus rapide? Je n'ai pas une carte graphique qui est un foudre de guerre mais elle etait pas mal y a quelque années et elle arrive encore bien a faire tourner de jeux recents qui comporte au moinsmille fois plus de mesh que je n'utilise. D'ailleur je met ci dessous l'ensemble des infos que le programme me donne pour vous faire une idee du peu de choses loadées:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    13 fps
    773 dc /f
    1sc/f
    ~718fl/f
    0 tasks
    29 res
    1103 st/f
    78 ms/f
    et ci dessous mon code qui va charger plein de fois la meme mesh et la disposer un peu partout sur mon terrain:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    	Public objet_3D As Mesh.TZMesh
     
    	matricule = matricule_mur_non_utilise()
     
            objet_3D = New Mesh.TZMesh("couloir_mur.x", "Mesh-mur-n" & CStr(matricule))
     
            objet_3D.Material(0).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("Corridor_Floor_A_01.tga", "texture-mur-n" & CStr(matricule) & "-1")
            objet_3D.Material(0).Diffuse = Color.White
            objet_3D.Material(0).Ambient = Color.Black
     
            objet_3D.Material(1).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("Corridor_Floor_A_01.tga", "texture-mur-n" & CStr(matricule) & "-2")
            objet_3D.Material(1).Diffuse = Color.White
            objet_3D.Material(1).Ambient = Color.Black
     
            objet_3D.Material(2).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("Corridor_Floor_A_01.tga", "texture-mur-n" & CStr(matricule) & "-3")
            objet_3D.Material(2).Diffuse = Color.White
            objet_3D.Material(2).Ambient = Color.Black
     
            objet_3D.Scale = New Vector3(0.5, 0.5, 0.5)
            objet_3D.load()
    En plus de ca y a une camera, un terrain, 3 acteurs, et une skybox. Le fichier Corridor_Floor_A_01.tga ne fait que 193 Ko et le msh couloir_mur.x fait quand a lui 79 Ko et est loin d'etre chiadé.

    Des idées?

  2. #122
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    "Public objet_3D As Mesh.TZMesh"

    là je ne vois qu'un seul mesh? tu utilise la même classe? Le code est prévu pour une classe par mesh.
    De plus si c'est pour afficher plusieurs meshs il vaut mieux utiliser une Scene (regarde demo_fps pour savoir comment l'utiliser). En gros il suffit de remplacer ton_mesh1.load par myScene.Add(ton_mesh1) puis une fois tout ajouter: myScene.Load et pour le rendu: myScene.Render.

    Autre chose, si tu utilise la même texture inutile de lui donner des noms different, ce qui donne par exemple:
    Code :
    1
    2
    3
    objet_3D.Material(0).DiffuseMap =  Texture.TZTextureManager.GetInstance.Load("Corridor_Floor_A_01.tga", "texture-mur-n" & CStr(matricule) & "-1")
    objet_3D.Material(1).DiffuseMap =  objet_3D.Material(0).DiffuseMap
    objet_3D.Material(2).DiffuseMap =  objet_3D.Material(0).DiffuseMap
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  3. #123
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Oui j'utilise la meme classe: la c'est une classe qui s'appelle Class_mur et qui me sert a afficher des murs de mes batiments. chaque objet mur est ainsi stoqué dans une collection appelée murs. Le code que j'ai collé juste avant est le constructeur de cette classe (methode new).

    La scene dont vous parlez n'est ce pas une collection? ca semble s'utiliser de la meme maniere que ma collection (murs). Et je crée un mur de cette maniere:

    Code :
    1
    2
    3
    4
    5
     
    Dim mur As New Class_mur With {.type = type_de_mur, .orientation = orientation}
    murs.Add(mur, CStr(mur.matricule))
    mur.position.X = position.X
    mur.position.y = position.y
    Et je l'affiche dans la fonction render3D (comme dans vos tutos):

    Code :
    1
    2
    3
    4
    5
    6
     
    For Each element_ In murs
        If TypeOf element_ Is Class_mur Then
            element_.objet_3D.Render()
        End If
    Next
    Votre methode ressemble a ce que j'ai fais non? cela fera t il quand meme gagner du temps?

    Pour ce qui est des textures j'avais deja fais ce que vous disiez mais les textures vont changer et je n'utiliserai plus deux ou trois fois la meme texture sur le meme mesh. De plus en testant comme vous disiez (en reutilisant objet_3D.Material(0).DiffuseMap), ca ne me fait pas gagner de temps substanciel (le nombre de fps n'avait pas changé).

  4. #124
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    En ce qui concerne objet_3D.Material(0).DiffuseMap = ... c'est juste une question de qualité du code, bien sur que cela change rien au rendu.

    Et non la classe TZScene n'est pas une collection, en interne un octree est utilisé ainsi que l'ordre des entités est classé pour optimiser le rendu. Et dans la prochaine mise à jours l'occlusion culling (ne pas dessiner des meshs cachés par d'autres) sera réactivé, en bref TZScene est fait pour
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  5. #125
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Ah ok excellent je vais donc tester avec une scene alors. Merci.

    Et effectivement ne pas traiter les parties de mesh (ou les meshs entiere je ne sais pas) ca doit faire gagner pas mal de temps au final.

    Quant a la methode Texture.TZTextureManager.GetInstance.Load() je ne savais pas si elle etait lourde en terme de consommation de temps CPU avant de tester. Il ne faut pas oublier que ce qui vous parait evident (parce que vous avez concu TZU3D) ne l'est pas forcement pour nous qui utilisons/testons. C'est d'ailleur aussi pour ca que je continue d'utiliser ce forum au lieu de votre mail (et j'espere que ca ne vous derange pas, c'etait deja sympa de me le donner). Pour que mes diffucultés et leur resolution puissent servir a d'autres.

    Pour le tuto sur le FPS chez moi il ne fonctionne pas et je ne me suis pas encore penché dessus pour comprendre pourquoi, ni n'ai meme regardé comment il fonctionnait.

  6. #126
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    J'ai donc suivi vos conseils et ai utilisé des scenes pour faire les murs et les sols de mes batiments. le resultat est en effet flagrant, j'ai gagné 40fps. je vais donc user et abuser des scenes.

    Ca plus le fait que je me suis rendu compte que dans la boucle de rendu je testais des deplacements de meshs qui n'avaient pas a bouger comme les murs et les sols par exemple, bien au final ca me fait passer de 15fps a 95fps pour un affichage identique.

    Sinon j'aurais quand meme deux petites questions:

    1) Sous quelle licence est tzu3D? Les sources deviendront elle disponibles?
    2) J'essaye, mais sans succes pour le moment, de faire un effet mirroir (comme un sol qui viendrait d'etre lavé et qui refleterait les gens qui passent dessus de maniere attenuée). une idee de comment je peux faire ca? je n'ai rien trouvé dans la doc ni dans aucun des tutos qui parle de reflexion (a part pour water mais ce n'est pas une etendue d'eau que je veux faire). Il y a bien le tuto 8 des utilisation de GlossMap mais je ne crois pas que ca puisse m'aider pour ce que je veux faire en fait parce que je voudais qu'on distingue bien le reflet du personnage (un peu attenué).

  7. #127
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    1) à réfléchir, mais de sur jamais les sources seront dispos.
    2) il y a plusieurs méthode mais le principe est le même que pour l'eau: il faut faire le rendu du reflet dans une texture puis utiliser cette texture sur la surface où l'on veut le reflet. C'est un peu compliqué je pense que je vais faire une classe pour simplifier ça.
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  8. #128
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    J'ai enfin (j'ai vraiment galéré) reussi à creer des actor direct x texturés et animés et j'ai reussi a les loader dans mon programme.

    Mais prenons l'exemple d'une animation. "Courrir" par exemple. C'est une animation que je peux vouloir intégrer autant dans un actor nommé "pompier" que dans un actor nommé "infirmiere".

    Et du coup je prefere avoir trois fichiers:
    -pompier.x (sans anim)
    -infirmiere.x (sans anim)
    -courrir.jesaispasquoi (contenant mon animation)
    Que deux fichiers:
    -pompier.x (avec anim courrir)
    -infirmiere.x (avec anim courrir)

    Ma question est donc la suivante: Peut on loader un actor a partir d'un fichier directx (.x), sans qu'il contienne d'animation, et loader ses animations par le biais d'un autre fichier ou autre type de fichiers (si oui lequel/lesquels)?

    Merci

  9. #129
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    oui c'est pratique mais malheureusement non, ce n'est pas possible avec Tzu3D
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  10. #130
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Et vous pensez que ce sera possible ou que c'est une fonctionnalité a oublier?

    Le constructeur de la classe Actor.TZActor doit bien faire appel a une methode ou une fonction qui charge du fichier directx les animations. Ca ne devrait pas etre trop dur de laisser la possibilité de charger ces animations depuis un autre fichier. A moins que ce ne soit pas vous qui ayez programmé le chargement des mesh, textures et animation des fichiers directx auquel cas je compendrai que ce ne soit pas faisable (facilement du moins).

  11. #131
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    A oublié pour le moment, plein de chose à penser pour que cela soit possible, comme la corrélation entre les bones du mesh et les bones de l'anime ou bien quel format de fichier pour l'anim.
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  12. #132
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Je comprend ca fait beaucoup de choses.

    Mais ca pourrait faire beaucoup moins de choses a faire si on pouvait juste partager les anims entre actors. On ne le ferait que si on est sur que les squelettes coincident (laissé a la verification du developpeur de l'application utilisant tzu3D). Ainsi on pourrait par exemple charger deux actors differents (ex: pompier.x et infirmiere.x) respectivement dans actor1 et actor2, qui auraient chacun une animation differente (le pompier a juste l'animation "courrir" et l'infirmiere a juste l'animation "marcher"). Ainsi on devrait pouvoir faire:

    Code :
    actor1.ajoute_une_animation(actor2.recupere_index_de_lanimatio_n(1), 2)
    pour ajouter en animation n°2 a actor1 (pompier) l'animation n°1 de l'actor 2 (l'infirmiere). Du coup le pompier saurait courrir et marcher.

    Dans la plupart des applis 3d on met souvent des humains. Qu'ils aient le meme squelette n'est pas choquant et ce genre de modif pourrait beaucoup aider sans qu'on ait besoin de quelque chose d'aussi compliqué que ce que vous avez decris plus haut...

    Maintenant, je ne suis pas un expert 3d ni du format de fichier directx et c'est peut etre pas realisable aussi facilement que je le dis. Dites moi ce que vous en pensez

  13. #133
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Que pensez vous de mon idee?

  14. #134
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    faut que je test, voir ce que cela peut donner
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  15. #135
    Invité de passage
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Bonjour à tous,

    Je viens de télécharger la Démo posté sur une page antérieure. Je l'ai extraite, puis je lance le .exe : Tzu_ShowRoom a cessé de fonctionner ...

    Quelqu'un pourrait-il m'aider ?

  16. #136
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    cette demo date un peu, essayez plutôt les tutos du sdk. Il me semble que cette demo ne marche pas avec un OS 64bits. Sinon cela peut venir de la carte graphique qui ne supporte pas les pixels/vertex shader 3.0
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  17. #137
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Bonjour,

    J'ai vraiment eu du mal mais j'ai reussi a creer, animer et texturer un mesh exportable au format directx. Et jarrive a le loader dans mon jeu qui utilise tzu3D.

    J'ai une question relative a ca justement. Est il possible avec votre moteur d'attacher un mesh a un autre. Par exemple attacher un objet (une brosse a dent par exemple) a la main d'un personnage creé avec de bones et exporté en directx?

    Pour un personnage immobile il n'y a pas besoin bien sur mais des qu'il se met a courrir (ou a se brosser les dents), les coordonnées de la main bougent et donc je ne sais plus où se trouve mon objet.

    Je dis attacher (parce que j'ai lu que c'est comme ca qu'on faisait avec un autre moteur 3D) mais ca peut etre attaché ou si vous aviez un moyen de connaitre l'emplacement de tel ou tel bone de mon suqelette de mon personnage et son orientation ca pourrait faire l'affaire aussi.

    EDIT: [les methodes attach() de actor.tzactor et de mesh.tzmesh peut etre?]

    Merci

  18. #138
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    Bonjour,


    Je crois avoir trouvé un BUG.


    Je ne peux pas loader deux textures differentes sur le meme actor.tzactor.

    Alors que je peux le faire sur un mesh.tzmesh sans probleme.

    Un peu de code pour etre plus explicite:

    Le code ci dessous ne charge que la premiere texture

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    myMesh = New Actor.TZActor("console_ordi.x", "ordi")
     
    myMesh.Material(0).Diffuse = Color.White
    myMesh.Material(0).Ambient = Color.DarkGray
    myMesh.Material(0).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture1.tga", "t1")
     
    myMesh.Material(1).Diffuse = Color.White
    myMesh.Material(1).Ambient = Color.DarkGray
    myMesh.Material(1).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture2.tga", "t2")
    Alors que le code ci dessous fonctionne correctement:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    myMesh = New Mesh.TZMesh("console_ordi.x", "ordi")
     
    myMesh.Material(0).Diffuse = Color.White
    myMesh.Material(0).Ambient = Color.DarkGray
    myMesh.Material(0).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture1.tga", "t1")
     
    myMesh.Material(1).Diffuse = Color.White
    myMesh.Material(1).Ambient = Color.DarkGray
    myMesh.Material(1).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture2.tga", "t2")

    Merci de me dire ce qu'il en est svp.

  19. #139
    Membre actif Avatar de ShadowTzu
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 187
    Points : 152
    Points
    152

    Par défaut

    effectivement, c'est bien un bug dû au chargement multithread. C'est contournable en changeant la texture après que l'actor soit chargé du style:

    Code :
    1
    2
    3
    4
    5
    Engine.WaitLoad...
     
    myMesh.Material(1).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture2.tga", "t2")
     
    Engine.Load
    Et sinon oui je n'ai pas encore programmé "l'attachement" d'un mesh à un actor. Alors que c'est possible avec les meshs statique.
    Tzu3D: Mon Moteur 3D DirectX9 en VB.NET
    Facebook Youtube Twitch Codes-sources

  20. #140
    Membre à l'essai
    Inscrit en
    septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : septembre 2006
    Messages : 24
    Points : 22
    Points
    22

    Par défaut

    J'ai donc testé ce code en suivant vos conseils (je crois l'avoir fait en tout cas) :


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    myMesh = New Actor.TZActor("console_ordi.x", "ordi")
     
    myMesh.Material(0).Diffuse = Color.White
    myMesh.Material(0).Ambient = Color.DarkGray
    myMesh.Material(0).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture1.tga", "t1")
     
    myMesh.load()
    Engine.WaitLoad(False, False, False)
     
    myMesh.Material(1).Diffuse = Color.White
    myMesh.Material(1).Ambient = Color.DarkGray
    myMesh.Material(1).DiffuseMap = Texture.TZTextureManager.GetInstance.Load("texture2.tga", "t2")
     
    Engine.Load()
    Mais le resultat est le meme (a savoir une seule texture est chargé pour tous les materiaux de l'actor)

    J'ai testé plusieures variantes et ca me fait toujours la meme chose. Il faut que je precise que je charge plusieurs actors (issus de fichiers .x differents) dans mon jeu et chacun a plusieures textures (que je nomme differement bien entendu).

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •