[C#] GLDebug

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.
Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

[C#] GLDebug

Message par artemisart » 18 Fév 2013 22:10

-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
Dernière édition par artemisart le 06 Août 2013 18:27, édité 7 fois.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6451
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: [C#] GLDebug

Message par cayou66 » 18 Fév 2013 23:54

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 :)

Avatar de l’utilisateur
axel
Messages : 1903
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: [C#] GLDebug

Message par axel » 20 Fév 2013 15:24

super, merci

Avatar de l’utilisateur
ZJP
Messages : 5715
Inscription : 15 Déc 2009 06:00

Re: [C#] GLDebug

Message par ZJP » 20 Fév 2013 16:06

@artemisart
Sympas tes scripts. Merci 8-)
Pour triompher, le mal n’a besoin que de l’inaction des gens de bien.Edmund Burke (1729-1797)

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: [C#] GLDebug

Message par artemisart » 30 Mars 2013 22:19

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.

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: [C#] GLDebug

Message par artemisart » 16 Avr 2013 21:14

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 !

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: [C#] GLDebug

Message par artemisart » 06 Août 2013 17:14

- 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

Avatar de l’utilisateur
axel
Messages : 1903
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: [C#] GLDebug

Message par axel » 07 Août 2013 07:54

super, merci ;)

Pico57
Messages : 576
Inscription : 19 Fév 2013 16:30
Localisation : Cluny

Re: [C#] GLDebug

Message par Pico57 » 29 Jan 2014 18:34

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.

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: [C#] GLDebug

Message par artemisart » 29 Jan 2014 19:46

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.

Répondre

Revenir vers « Scripts »