[C#] Visualizateren van debug data

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 21:24

AlphaRomeo

FP PowerMod
Topicstarter
C# in de topictitel omdat het in mijn geval om C# gaat, maar dit kan ook het geval zijn voor andere talen.

Ik (en mijn collega's) hebben geregeld het probleem dat we iets moeten visualiseren uit onze code om te kunnen debuggen. Wij hebben geïntegreerde 3D visualisatie in onze applicatie, maar niet voor elk wissewasje willen we een volledig ViewModel optuigen om even snel iets te kunnen visualiseren. Liever zouden gebruiken we een file formaat waarmee we een aantal primitieve vormen in een 3D viewer kunnen laten zien. Dat heeft ook het voordeel dat de applicatie niet hoeft te draaien om te kunnen visualiseren, maar dat we ook gewoon vanaf een breakpoint een export kunnen draaien. Nu gebruiken we daarvoor een bepaalde robot visualisatietool waar we liever niet van afhankelijke zijn (om meerdere niet relevante redenen), maar we zouden graag een open formaat gebruiken met een gratis viewer.

Als we bijvoorbeeld een algoritme hebben dat het collision model van twee machine onderdelen moet controleren op intersectie, en het algoritme geeft een false positive, dan wil je graag de onderdelen waar die collision modellen uit bestaan visualiseren. Dat kunnen lijnen of bollen zijn bijvoorbeeld, of kubussen of andere primitieve vormen. Dit wil je graag midden in je programma kunnen doen, op de plek waar je code dan staat. Dus ideaal gezien zou je zeggen CollisionModel1.Export(@"c:\temp\robot.txt") en dan direct een file op schijf hebben waarin je de geometry hebt die je met een viewer weer opent en de details bekijkt.

Ook bij heel veel 2D algoritmen heb ik hier wel eens behoefte aan, denk aan het opbouwen van een in-memory tree die je wilt visualiseren.

Ik ben erg benieuwd hoe andere programmeurs omgaan met het visualiseren van (debug) data die niet persé voor de eindgebruiker bedoeld is.

Concreet is mijn vraag: is er een bestandsformaat dat makkelijk te lezen en te schrijven is, ondersteuning heeft voor primitieve vormen en een eenvoudige viewer heeft, die bovendien nog liefst gratis is. Wij zijn aan het kijken naar URDF (http://wiki.ros.org/urdf), maar dat is wel heel specifiek om ook bewegende onderdelen weer te geven, en volgens mij qua scope ook vrij beperkt tot ROS. Voordat we daar mee doorgaan wil ik graag zeker weten dat we geen (voor de hand liggend) alternatief missen.

Onderstaand een voorbeeld van een in-memory collision model. Dergelijke visualisaties zou ik graag makkelijk en op elk moment willen kunnen exporteren:
Afbeeldingslocatie: https://tweakers.net/ext/f/Lo7gzhUv4peOGW5Zo1DtGsgQ/full.png

Beste antwoord (via AlphaRomeo op 14-03-2018 12:44)


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Je kunt eens naar X3D kijken. Een open file format voor 3D data. Er zijn zat applicaties die dat kunnen renderen. Op die wiki pagina staan ook nog een paar alternatieve formaten indien X3D niet werkt voor je doeleinden.
X3D is a royalty-free ISO standard for declaratively representing 3D computer graphics.

[ Voor 16% gewijzigd door Gerco op 12-03-2018 16:00 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Alle reacties


Acties:
  • +1 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Niet helemaal ontopic, maar ik zie een paar keer het woord 'gratis' voorbij komen. Ik snap nooit zo de wens dat iets het liefst gratis moet zijn, als het gaat om professioneel / zakelijk gebruik.
Ik snap die wens heel goed als je zelf iets aan het hobbyen bent, maar als je professioneel ergens mee bezig bent, is het toch gewoon een afweging of een product oid. aanschaffen je meer oplevert dan het kost.
Als je twee opties hebt, waarvan 1 gratis is en 1 niet, kan je op dat moment die afweging maken, maar waarom zou je bij voorbaat al de keuzes op die manier beperken?

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

Er zijn meerdere redelijk universele 3D-bestandstypen, zoals .OBJ, die je zelf kunt genereren. Download (het gratis) Blender om ze te bekijken, en klaar!

Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 21:24

AlphaRomeo

FP PowerMod
Topicstarter
Haan schreef op maandag 12 maart 2018 @ 14:11:
Niet helemaal ontopic, maar ik zie een paar keer het woord 'gratis' voorbij komen. Ik snap nooit zo de wens dat iets het liefst gratis moet zijn, als het gaat om professioneel / zakelijk gebruik.
Je hebt helemaal gelijk. Als er een betaalde tool is of een proprietary formaat dat significante voordelen biedt boven een gratis / open formaat is dat prima. Ik bedoel eerder een open formaat.

@Verwijderd Ik ben bekend met open formaten zoals XGL en OBJ maar het liefst zou ik echt primitieven tekenen, lijn van A naar B in geel, of bol op C in rood. Nogmaals, we hebben een volledige 3D visualisatie intern, we zouden ook zelf zo'n tool kunnen maken, maar ik wil liever niet het wiel opnieuw uitvinden als er iets moois bestaat.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Je kunt eens naar X3D kijken. Een open file format voor 3D data. Er zijn zat applicaties die dat kunnen renderen. Op die wiki pagina staan ook nog een paar alternatieve formaten indien X3D niet werkt voor je doeleinden.
X3D is a royalty-free ISO standard for declaratively representing 3D computer graphics.

[ Voor 16% gewijzigd door Gerco op 12-03-2018 16:00 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 21:24

AlphaRomeo

FP PowerMod
Topicstarter
Dank je! Dat ziet er inderdaad goed uit, heeft ook ondersteuning voor primitieven (box, lines) en online viewers. Het is de opvolger van VRML zie ik.

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
AlphaRomeo schreef op maandag 12 maart 2018 @ 15:28:
[...]

Je hebt helemaal gelijk. Als er een betaalde tool is of een proprietary formaat dat significante voordelen biedt boven een gratis / open formaat is dat prima. Ik bedoel eerder een open formaat.

@Verwijderd Ik ben bekend met open formaten zoals XGL en OBJ maar het liefst zou ik echt primitieven tekenen, lijn van A naar B in geel, of bol op C in rood. Nogmaals, we hebben een volledige 3D visualisatie intern, we zouden ook zelf zo'n tool kunnen maken, maar ik wil liever niet het wiel opnieuw uitvinden als er iets moois bestaat.
Misschien heel gek, maar als je de debug visualisatie toch graag in je programma wil hebben. Met WPF kun je ook een 3D viewport maken waar je primitives zoals kubussen kunt visualiseren. Het is een feature die niet vaak gebruikt wordt, maar voor het debuggen van een 3D camera heb ik er vorige jaar een heuze 3d visualisatie van een skelet mee gemaakt wat prima werkte. Je kunt gewoon dingen zoals xaml en data binding gebruiken om het een beetje netjes te houden.

~ Mijn prog blog!

Pagina: 1