Tu connais CodeSampler?
Version imprimable
Tu connais CodeSampler?
Salut , tout d'abord un grand merci pour ton moteur , il semble vraiment d'une grande simplicité :)
Mais seulement voila pour n'importe quelle application lorsque je l'exécute , elle cesse de fonctionné.
Je suis sous vista , je m'excuse d'avance face a mon noobisme :D
bonjour,
étant donné que je suis sous XP je n'ai aucune idée de ton problème mais voici quelque piste:
- Mise à jours de DirectX
- levé l'option LoaderLock du debug (CTRL+ALT+E / Managed debugging Assistants / décocher LoaderLock)
Au cas ou je vais voir si je n'ai pas oublié quelque chose à la compilation.
Merci pour ton aide , mais sa ne vient pas cela apparemment:(.
Juste pour ajouter, qu'il faut faire attention sur la mise à jour de DirectX
Car pour la version DirectX9, si on utilise la dernière mise à jour web de Microsoft, il n'update que DirectX10/11 sous Vista/7.
Donc il faut bien installer la version DirectX9 que semble bien pointer ShadowTzu ou télécharger directement le dernier redistribuable DirectX9.
Bonjour,
Est-ce qu'une personne pourrait retester sous vista ou seven voir si le problème est corrigé?
Merci!
Bonjour au developpeur de TZU3D,
J'ai testé un peu votre moteur 3D (sous windows XP et vb.net et visual astudio 2008 standart edition) grace aux tutoriels et a la doc. Il parait sympa et simple d'utilisation de prime a bord et on est super content :mrgreen: puis on dechante vu la petitesse de la doc :? . J'ai galeré une nuit entiere pour que deux actors puissent avoir des animations independantes et pas tous la meme en meme temps alors qu'on leur a mis une variable en argument de set_animation() different... Enfin bon la c'est resolu, j'ai compris que actor.set_animation() doit se faire entre le render() de cet actor et le render() de l'actor precedent.
La j'ai un autre gros probleme concernant les animations et je me vois obligé de poster ici parce que je ne vois pas comment m'en sortir:
Quand j'ai un actor qui a une animation il bouge correctement. Mais quand j'en met deux, les deux actors bougent toujours et selon l'animation qui leur a été assigné mais ils bougent deux fois plus vite. Alors que je n'ai pas changé l'animation_time. Si je met 3 actors, ca ca va trois fois plus vite...
Mais cela est circoncit aux animations des perso. En effet quand en meme temps je les fais tourner sur eux meme avec la methode actor.Rotate_StepY() ils ne tournent pas plus vite.
J'ai remarqué que ca ne se produisait que quand les actors etaient visibles. En effet si j'ai trois actors et seulement un dans mon champ de vision. Celui que je vois dans mon champ de vision va a la bonne vitesse. Mais dès que je bouge la camera et que je vois le deuxieme actor dans mon champ de vision, les deux actors que je vois (et certainement le troixieme meme si je ne le vois pas) se mettent a bouger deux fois plus vite. Et dès que je vois aussi le troisieme, la ils se mettent tous les trois a aller trois fois plus vite que la vitesse que j'ai definie.
Est ce un bug? y a t il un moyen de regler ca? J'ai fais des tests en redefinissant animation_time et en le divisant par le nombre d'actors que je vois et ca marche ils n'accelerent plus. Ca aurait pu regler mon probleme si j'etais sur de voir tous les acteurs en permanances dans mon champ de vision seulement si y en a un qui se cache et que je ne le sais pas, je ne peux pas redefinir l'animation_time et la ils se mettent a ralentir d'un coup.
Quand je lance Engine.Display_Console() ca m'affiche des infos sur les FPS... et je vois bien des champs qui ont des valeurs qui se voient multiplié par deux a l'apparition d'un deuxieme actor dans mon champ de vision. Donc je me dis que si je devise l'animation_time par un de ces champs j'ai reglé mon probleme. Seulement voila, je ne sais pas si c'est la bonne methode (peut etre ai je loupé quelque chose et la vous etes le mieux placé pour me repondre). De plus je ne sais pas a quoi correspondant les champs qui s'affichent a part le [169 fps].
pouvez vous en face de chaque champ me dire a quoi il correspond et comment recuperer ces variables?
[77 dc/f] -> ?
[1 sc/f] -> ?
[~4 fl/f] ->
[0 tasks] -> ?
[24 res] -> ?
[28 st/f] -> ?
[6 ms/f] -> ?
Merci d'avance pour vos reponses parce que la je galere serieusement. D'ailleur si vous avez de la doc, des sources, des tutos, des choses comme ca mis a par les 8 tutos (dont le premier et le dernier ne marchent pas chez moi) je suis preneur (rien de commercial) ca m'aidera surement a y voir plus cair.
Bonjour,
Alors déjà un grand merci pour ce retour, c'est bien un bug ou un oublie de ma part, pour le set_animation également cela devait être indépendant pour chaque class Actor, je vais regarder ça aujourd'hui.
[77 dc/f] -> DrawCall per Frame: nombre d'infos envoyé à la carte graphique par image
[1 sc/f] -> ShaderCall nombre d'appel à des shaders différent par image
[~4 fl/f] -> FillLight Nombre de lumière ayant bougé ou qu'une entité atteins par une lumière ai bougé
[0 tasks] -> Nombre de tache restante à effectuer (chargement de models, textures, etc..)
[24 res] -> Nombre de ressources (models, textures, shaders)
[28 st/f] -> State Call: Nombre de changement d'état
[6 ms/f] -> temps écoulé entre chaque image
Tout ce qui est en rapport avec du mouvement doit être multiplié par le temps écoulé pour que cela soit indépendant du nombre d'image par seconde: valeur * Engine.Deltatime (Deltatime = temps en seconde du genre 0.006)
Pour le dernier tuto, si le 7ême fonctionne je vois le souci, je vais corriger ça. (carte graphique non compatible avec du pixelshader 3.0 je peux le repasser en 2.0 EDIT: en faite non ça viens pas de ça).
Pour le premier tuto, c'est étonnant, je vais jeter un oeil si tout est ok.
Pour toute question ou besoin de nouvelle fonction sur Tzu3D n'hésitez pas à me contacter à cette adresse: shadowtzu gmail com
A plus tard.
Surtout merci a vous pour cette reponse rapide,
En fait avant que vous ne me repondiez j'ai reussi a resoudre mon probleme d'accroissement de vitesse en divisant X (X etant l'argument que je passais a actor.animation_time()) par Y. Y est le nombre d'actors visibles a l'ecran (en enumerant tous les actors existants et en ne prenant que ceux qui ont actor.IsVisible à true).
Pour ce qui est du tuto 1 il ne repond pas chez moi aux touches clavier/souris. Mais j'ai pas cherché plus avant.
Pour le tuto 8, il voit bien quand je clique avec la souris mais la lumiere n'eclaire rien, je suis donc devant un ecran noir.
Je ne pense pas avoir besoin de nouvelles fonctions tout de suite (je suis pas un pro en 3d meme si j'ai testé directx, opengl, ogre, udk...) mais je reviendras certainement avec des questions prochainement.
a bientot
j'ai aussi résolu le problème de mon coté, la logique de votre solution est correct.
Le souci: lorsque l'on charge plusieurs fois la même ressource, Tzu3D ne le fait qu'une seul fois en interne et la partage aux différente classes.
Dans le cas des objets animé l'animation voulu est donné à cette ressources, Et comme il n'y en a qu'une partagé tout les objets animé ont la même animation.
Pareil pour le Temps de l'animation en cours, chaque classe Actor incrémente le temps pendant le rendu à la même ressources: le temps est multiplié par le nombre de rendu.
La solution est de donner à chaque Actor une variable Anim et Temps afin de mettre à jours la ressource exactement à la bonne valeur du temps.
Je vais mettre à jours le Sdk, encore Merci :ccool:
EDIT: c'est fait!
Merci je testerai ca dans la nuit certainement. EDIT: j'ai testé. Il semblerait que cela fonctionne, mais j'en saurais plus demain quand j'aurais fais une autre version de mon projet avec cette nouvelle dll. Merci d'avoir rajouté un tuto (Tzu3D_demo_fps) mais chez moi il ne donne qu'un ecran noir. Certainement le meme probleme que sur le tuto8.
Par contre vous avez pas modifié la date de derniere mise a jour sur votre site.
Une petite question: y a t il la possibilité de faire du cell shading?
Oui j'utilise aussi du deferred rendering avec la petite demo, quel est votre carte graphique?
Pour le cell shading techniquement oui, il suffit de savoir faire le shader, je rajouterais ça prochainement si vous voulez.
Oui ca m'interresserait beaucoup que ce soit rajouté si c'est possible. Ma carte graphique est une: ATI radeon HD 4670
J'ai modifié mon projet (j'ai enlevé les bidouilles que j'avais mis pour que ca fonctionne correctement) et ca fonctionne bien avec cette nouvelle version de la dll (selon moi ces bugs sont bien corrigés).
Maintenant j'arrive bien a faire bouger des personnages ayant le meme actor (tiny_4anim.x) de maniere differentes et independement les uns des autres. mais pour cela il faut que les objets actors aient été instanciés et loadés avant que l'on rentre dans la boucle de rendu, visiblement. Une fois dans la boucle de rendu, meme si je load de nouveaux actors il n'apparaissent pas. Je me suis peut etre trompé quelque part mais je voudrais savoir si c'est un probleme que vous connaissez, que vous avez aussi?
EDIT: Pour etre sur que ca ne venait pas d'une probleme dans mon application, j'ai fais des modif a votre tuto "multi actor" en ajoutant un boutton sur la form1 avec ce code dedans et l'actor nouvellement cree ne s'affiche:
Code:
1
2
3
4
5
6
7
8
9 myActor2 = New Actor.TZActor("tiny_4anim.x", "myActor-125") myActor2.Material(0).Diffuse = Color.White myActor2.Material(0).Ambient = Color.Black myActor2.Position = New Vector3(3 * 32, 0, 3 * 32) myActor2.Scale = New Vector3(0.2, 0.2, 0.2) myActor2.Rotation = New Vector3(-90, 0, 0) myActor2.Set_Animation(CByte(Rnd() * 3)) myActor2.load() charge = True
j'ai egalment fais les declarations suivantes dans la classe form1:
Code:
1
2 Private myActor2 As Actor.TZActor Private charge As Boolean
Dans form1_click() j'ai rajoute ca:
Code:
1
2
3 If charge = True Then myActor2.Set_Animation(CByte(Rnd() * 3)) End If
ET dans render3D() j'ai rajouté ca uste avant le engine.render_end():
Code:
1
2
3
4 If charge = True Then myActor2.Render() myActor2.Rotate_StepY(50 * Engine.DeltaTime) End If
Et quand on lance l'application,l'actor ne s'affioche pas quand on clique sur le bouton.
Apres j'ai meme créé en plus un myActor2 en meme temps que la creation des autres actors et la quand je clique sur le bouton créé précédement ca fait carrement disparaitre l'actor2 de l'ecran.
il faut que chaque actors/meshs/textures/shaders aient un nom different
donc par exemple, remplacez par:
Code:myActor2 = New Actor.TZActor("tiny_4anim.x", "myActor-" & Tzu_Engine.Debug.IndexManager.GetInstance.Get_IndexRND)
C'est le cas mais ca ne change rien. Dans mon appli les nom son incrementés et aucun actor n'a le meme. Et dans l'appli que vous avez faite (multi actor) et que j'ai modifié j'avais mis en random 1000 les noms (initialisés avec randomize).
ah! j'ai oublié de préciser qu'il faut charger la liste des taches avec Engine.Load (ou Scene.Load lorqu'on utilise une scene ou Engine.WaitLoad pour avoir un écran de chargement)
voila un exemple:
http://shadowtzu.free.fr/multi_actor2.zip
Yep merci. Avec engine.load() ca fonctionne nickel. Suffisait de le savoir :D
EDIT: Que genre de format de fichier je peux passer a Actor.TZActor() a part des .x? parce qu'a part celui de l'exemple, tous les .x que je teste ne passent pas. des fichiers 3DS ca passerait?
que des .x animé par des bones
Sauriez vous où je peux en trouver quelques un de maniere a tester differentes choses? J'ai du mal a en trouver par google et je ne connais pas les sites de reference en la matiere.
Pour le moment des meshs non texturees et non animées j'arrive a les integrer. Mais impossible de charger un autre actor que celui (tiny) fourni dans vos tutos.