Page 1 sur 2

[C#] GLDebug

Publié : 18 Fév 2013 22:10
par artemisart
-NOM DU SCRIPT : GLDebug

-AUTEUR : artemisart

-DESCRIPTION : Ce script est un portage en GL des fonctions Debug.DrawLine et Debug.DrawRay (similaires à Gizmos.DrawLine/Ray), il permet d'afficher des lignes/rayons/flèches/cubes/... ingame (Debug et Gizmos étant limités à l'editor).

-UTILISATION : Le script est à mettre sur une caméra (absolument). Fonctions utilisables :
Les paramètres entre [] sont facultatifs.
  • - GLDebug.DrawLine (start, end, [color], [duration], [depthTest]);
    • Vector3 start
      début de la ligne
    • Vector3 end
      fin de la ligne
  • - GLDebug.DrawRay (start, dir, [color], [duration], [depthTest]);
    • Vector3 start
      origine du rayon
    • Vector3 dir
      direction et longueur du rayon
  • - GLDebug.DrawLineArrow (start, end, [arrowHeadLength], [arrowHeadAngle], [color], [duration], [depthTest]);
    • Vector3 start
      début de la flèche
    • Vector3 end
      fin de la flèche
    • float arrowHeadLength
      longueur de la tête de la flèche (défaut 0.25f)
    • float arrowHeadAngle
      angle de la tête de la flèche (défaut 20)
  • - GLDebug.DrawArrow (start, dir, [arrowHeadLength], [arrowHeadAngle], [color], [duration], [depthTest]);
    • Vector3 start
      origine de la flèche
    • Vector3 dir
      direction et longueur de la flèche
    • float arrowHeadLength
      longueur de la tête de la flèche (défaut 0.25f).
    • float arrowHeadAngle
      angle de la tête de la flèche (défaut 20)
  • - GLDebug.DrawSquare (pos, [rot], [scale], [color], [duration], [dephTest]);
    • Vector3 pos
      position du carré
    • Vector3/Quaternion rot
      rotation du carré
    • Vector3 scale
      taille du carré
      On peut aussi utiliser une matrice de transformation à la place de pos/rot/scale.
  • - GLDebug.DrawCube (pos, rot, scale, color, duration, depthTest);
    • Vector3 pos
      position du cube
    • Vector3/Quaternion rot
      rotation du cube
    • Vector3 scale
      taille du cube
      On peut aussi utiliser une matrice de transformation à la place de pos/rot/scale.
-SCRIPT :
http://pastebin.com/69QP1s45

Re: [C#] GLDebug

Publié : 18 Fév 2013 23:54
par cayou66
JP nous a donné un lien pour dessiner des flèches dans le même genre, pour faire des vecteurs visuels.
Je prend, et je met ça dans le sous dépot magique, merci :)

Re: [C#] GLDebug

Publié : 20 Fév 2013 15:24
par axel
super, merci

Re: [C#] GLDebug

Publié : 20 Fév 2013 16:06
par ZJP
@artemisart
Sympas tes scripts. Merci 8-)

Re: [C#] GLDebug

Publié : 30 Mars 2013 22:19
par artemisart
Update !

Au menu :
- légères optimisations
- intégration de DrawArrow (http://forum.unity3d.com/threads/85980- ... rrow%28%29)
- ajout de DrawCube (pour afficher... des cubes !)

Exemple, pour afficher l'AABB d'un renderer :

Code : Tout sélectionner

GLDebug.DrawCube (renderer.bounds.center, Quaternion.identity, renderer.bounds.size);
EDIT : les lignes sont maintenant affichés dans la SceneView, en OnDrawGizmos.

Re: [C#] GLDebug

Publié : 16 Avr 2013 21:14
par artemisart
Update :

- Grosse amélioration des performances quand il y a plusieurs milliers de lignes.
- Ajout de DrawLineArrow (similaire à DrawArrow mais on indique la fin de la fleche au lieu d'une direction).
- Ajout de DrawSquare (pour faire des zolis carrés :P ).


D'ailleurs, si quelqu'un sait comment utiliser les arguments optionnels sans faire crier le compilo de MonoDevelop, qu'il me fasse signe !

Re: [C#] GLDebug

Publié : 06 Août 2013 17:14
par artemisart
- MAJ de la "doc" du premier post.
- Toutes les surcharges des fonctions ont été remplacés par des arguments optionnels (avec des types nullables parfois, pour contourner l'erreur "La valeur de paramètre par défaut pour 'truc' doit être une constante au moment de la compilation").
- la documentation dans le code est pour très bientôt :P
EDIT : la doc est dispo

Re: [C#] GLDebug

Publié : 07 Août 2013 07:54
par axel
super, merci ;)

Re: [C#] GLDebug

Publié : 29 Jan 2014 18:34
par Pico57
Salut,
Comme discuté sur un autre post, j'utilise ce script et il m'est vraiment très utile. Par contre depuis 2 semaines, j'ai une erreur qui est apparue. J'ai rechargé le script original pour être sûr de ne pas avoir créer d'erreur en arrangeant à ma sauce mais rien n'y change. C'est à la ligne 171 ou 173 en fonction du DepthTest true ou false :

Code : Tout sélectionner

                if (depthTest)
                        instance.linesZOn.Add (new Line (start, end, color, Time.time, duration));
                else
                        instance.linesZOff.Add (new Line (start, end, color, Time.time, duration));
L'erreur est la suivante :
NullReferenceException: Object reference not set to an instance of an object
GLDebug.DrawLine (Vector3 start, Vector3 end, Color color, Single duration, Boolean depthTest) (at Assets/GLDebug.cs:171)
GLDebug.DrawLine (Vector3 start, Vector3 end, Nullable`1 color, Single duration, Boolean depthTest) (at Assets/GLDebug.cs:187)
GLDebugTest.Update () (at Assets/GLDebugTest.cs:16)
J'ai testé de revenir à une version antérieur d'Unity, comme avec la dernière version sortie aujourd'hui (4.3.4) mais cela n'y fait aucune différence. Je ne comprend pas comment un script qui marchait très bien a pu se mettre à bugger.
Est-ce que vous pourriez vérifier si vous avez le même problème que moi ? Sinon, avez vous une idée pour le corriger ? J'ai beau me torturer les méninges, je ne trouve pas de solution.

Merci d'avance.

Re: [C#] GLDebug

Publié : 29 Jan 2014 19:46
par artemisart
Soit l'instance est null, soit linesZOn est null. Donc vérifie que t'as bien mis le component sur un object dans la scène (je sais ça pourrait être automatique :mrgreen:) mais je vois vraiment rien d'autre.