Laden...

Möglichst simple Möglichkeit zur 3D Darstellungen von Punkten und Linien (Graphen, Knoten/Kanten)

Erstellt von marcial187 vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.443 Views
M
marcial187 Themenstarter:in
56 Beiträge seit 2012
vor 7 Jahren
Möglichst simple Möglichkeit zur 3D Darstellungen von Punkten und Linien (Graphen, Knoten/Kanten)

Hallo zusammen,

nach 2D beschäftige ich mich nun ein bisschen mit 3D 😉

Und zwar suche ich eine möglichst simple Variante zur simplen Darstellungen von Linien/Pipes und Punkten (bzw. Quader, Knoten).
Ganz grob in etwa wie im Anhang (ohne das gräuliche Modell im Hintergrund)
(Quelle: https://www.vr.rwth-aachen.de/person/16/)

Die Anforderungen sind wirklich gering, weswegen ich gerne auf alles was im Standard VS2015 Umfeld liegt zurück greifen würde.

Konkret möchte ich Folgendes umsetzen:

  • Darstellung eines Graphs aus Knoten und Kanten in 3D, Anzahl Knoten & Kanten: mehrere 1000
  • Navigieren durch das Modell: Panning, Zooming, Rotation
  • Flattening bzw. Projektion von 3D auf 2D

Die Koordinaten für den Graph bekomme ich als XML.

Das ist im Prinzip alles, ich brauche keinerlei Effekte, keine weitere Interaktion usw.

Wenn es eine einfache Lösung gibt, würde ich es wie gesagt bevorzugen, mich auf "Standard VS2015" Bibliotheken zu beschränken, d.h. am besten ohne iwelchen externen DLLs, Projekte usw.

Was würdet ihr mir unter diesen Aspekten empfehlen?

Viele Grüße & Danke im Voraus!

1.029 Beiträge seit 2010
vor 7 Jahren

Hi,

das klingt für mich danach, als ob man das einfach mit WPF lösen kann, welches ja auch 3D beherrscht.

Hier mal ein Projekt, welches ich zu Zooming und Panning gefunden habe...:
A WPF Custom Control for Zooming and Panning

LG

M
marcial187 Themenstarter:in
56 Beiträge seit 2012
vor 7 Jahren

Danke für deine Antwort!

Das Projekt dreht sich so wie ich das sehe um 2D oder?
Habe es - wenn ich mich richtig erinnere - auch zu der Zeit, als ich mich mit 2D beschäftigt habe durchgearbeitet.

190 Beiträge seit 2012
vor 7 Jahren

Moin,

WPF bietet sich da direkt an. Einige Ideen von Herrn Google:

WPF 3D - Grundlagen
WPF 3D
Introduction to WPF 3D

  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF

M
marcial187 Themenstarter:in
56 Beiträge seit 2012
vor 7 Jahren

Vielen Dank für deine Antwort!

Die bin ich natürlich schon alle durchgegangen 😉

Bisher orientiere ich mich insb. an diesem Projekt:
High performance WPF 3D Chart

Damit kann ich das ganze auch bereits recht gut abbilden.

Meine Frage ist eher der Natur, ob es speziell für die Darstellung von Knoten-Kanten Diagrammen Ansätze gibt, die sich besonders gut eignen. Vllt hat jemand ja auch schon mal ein ähnliches Projekt angegangen und kann die aus seiner Sicht beste Herangehensweise erläutern. 😃

5.658 Beiträge seit 2006
vor 7 Jahren

Hallo marcial187,

der Vollständigkeit halber hier noch die Übersicht zu den verschiedenen Möglichkeiten, 3D-Anwendungen mit C# zu erstellen: [FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?

In deinem Fall würde es sich aber auch anbieten, alles in 2D zu rendern. Es geht ja hauptsächlich um die Darstellung der Knoten und der Linien, und Linien müssen in 3D aus Polygonen zusammengesetzt werden. Es gibt allerdings dafür schon eine Bibliothek von Charles Petzold, um 3D-Linien in WPF relativ einfach darzustellen. Besonders performant ist das allerdings nicht, und wenn es sich um große Netzwerke handelt, solltest du lieber auf 2D zurückgreifen.

Dazu müßtest du nur die Positionen der Knoten von 3D in 2D umrechnen, was mit einer Transformations-Matrix relativ einfach und performant zu machen ist. Dann brauchst du nur die Knoten an der richtigen Stelle als 2D-Grafik darzustellen uind die Linien dazwischen in 2D zeichnen. Das sollte sich z.B. mit Winforms ([Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)) oder noch besser und einfacher mit einer WPF-Canvas und Datenbindung lösen lassen.

Weeks of programming can save you hours of planning

M
marcial187 Themenstarter:in
56 Beiträge seit 2012
vor 7 Jahren

Genau die Antwort habe ich gebraucht.

Ich muss sowohl Knoten als auch Kanten im Bereich ≤ 10k darstellen. Die Performance der Darstellung von Linien in 3D über Polygone ist genau meine Befürchtung. Im verlinkten Beispiel (High Performance WPF...) sah es zwar ganz ok aus, bevor ich mich da aber reinstürze wollte ich erst andere Möglichkeiten in Betracht ziehen.

2D habe ich für meinen Anwendungsbereich (sowohl WinForms als auch WPF) schon durch, insbesondere die Tutorials hier im Forum. Ich werde mich dann dran setzen und das ganze zunächst mal in WPF als 2D rendern.

Gibt's auch ganz nette Videos, wo es im Prinzip doch recht akzeptabel aussieht:
https://www.youtube.com/watch?v=SOOsJjgHgi8

Wenn das Ergebnis gut genug ist, dann reicht mir das auch. 😃

Also vielen Dank für deine Hilfe!

Ich melde mich dann nochmal, wie es gelaufen ist 😉

Edit: Hab mir analog aus der Bib auch mal schnell "Windows Presentation Foundation : das umfassende Handbuch" für die 2D und 3D Kapitel und " 3D-Programmierung für Windows" geholt 😉