OpenGL oder Direct3D zur Erstellung einer simplen Robotersimulation
-
HI zusammen,
ich hatte vor einiger Zeit schon einmal die Frage gestellt, was für eine Robotersimulation geeignet ist. OpenGL
War da eine möglichkiet.Wie Sieht es mit Direct3D aus? Hab bei beiden geschichten keine Erfahrung. Würde mich über eine Empfehlung von euch sehr freuen.
Will das ganze in Visual C++ umsetzen.
Bisher habe ich gelesen, das Open Gl einfacher ist, aber Direct3D irgendwie besser und schneller mit Windows arbeitet.
danke für nen Tip
-
such dir was aus. besser, schöner, schneller, einfacher... das sind
ansichtssachen. läuft immer auf die selbe diskusion hinaus:
opengl vs. directx.interessanter wäre: was möchtest du simulieren?
soll der roboter einen beliebigen punkt im raum ansteuern
und hindernisse umfahren?
würde mich mal interessieren.kris
-
ist Geschmackssache. Dass DirectX schneller ist oder besser mit Windows zusammenarbeitet stimmt nicht! DirectX bietet dir allerdings mehr Funktionalitaet (z. B. Soundausgabe ueber DirectSound, Input ueber DirectInput), fuer das du in OpenGL andere Libraries herziehen musst.
DirectX arbeitet NUR mit Windows, d.h. du wirst dein Programm nie unter einer anderen Plattform (z. B. einem Mac) zum Laufen bekommen, ohne es grossteils neu schreiben zu muessen.
Das Ganze ist Geschmackssache. Nimm was dir einen besseren Eindruck macht und arbeite damit. Die Frage "ist DirectX besser geeignet als OpenGL" ist in etwa so sinnvoll wie zu fragen "ist ein weißer Mann dafür besser geeignet als ein Schwarzer?"
-
Andreas Bäcker schrieb:
ich hatte vor einiger Zeit schon einmal die Frage gestellt, was für eine Robotersimulation geeignet ist. OpenGL
War da eine möglichkiet.Wie Sieht es mit Direct3D aus? Hab bei beiden geschichten keine Erfahrung. Würde mich über eine Empfehlung von euch sehr freuen.
Will das ganze in Visual C++ umsetzen.
Bisher habe ich gelesen, das Open Gl einfacher ist, aber Direct3D irgendwie besser und schneller mit Windows arbeitet.
danke für nen Tip
Logisch arbeitet Direct3D besser mit Windows zusammen, wäre dem nicht so, sollte sich Billy was schämen! :p
Allerdings ist das nur die kurze Initialisierung am Anfang. Die geht in OpenGL auch relativ einfach, ist halt nur ein bisserl mehr Gewurschtel mit wgl- und PDEVICEPARMDATA oder so ähnlich.
Wenn's daran schon scheitert wird das mit Deinem Robo eh nix. :p
Für OpenGL bietet sich da ggf. GLUT an, das vereinfacht die Window-Erstellung & Co. (plattformübergreifend).Ansonsten sind die Unterschiede auf dieser einfachen Ebene eher minimal.
Das eine benutzt ein rechts-orientiertes Koordinatensystem, das andere nicht.u.U. wäre Direct3D deswegen besser, weil mit D3DX eine Mega-Bibliothek voller Zeug mitkommt, die man bei 3D sowieso braucht. Vektor- und Matrix-Manipulationen, X-Loader, etc. pp
Für OpenGL mußt Du Dir das entweder selber machenoder andere Libs zusammenkratzen.
Ansonsten hat TGGC auch nicht ganz unrecht: OpenGL ist solange leichter, wie man mit glVertex() ein paar Dreiecke auf dem Schirm anzeigt...
(Das ist dann auch der Punkt, wo die meisten Leute hängenbleiben...)Wie gesagt, wenn Du das auch auf Linux o.ä. brauchst, würd' ich lieber OpenGL nehnen, das WineX-Getrickse ist auch ätzend.
-
Achja: Auf http://www.andypike.com/ gibt's ein paar einfache DirectX Tuts (allerdings noch für 8).
Für OpenGL mit jeder Menge Zeug: nehe.gamedev.netBTW: Wo ist eigentlich nexe.gamedev.net hin?!?!
-
Im Simulations und Professionellen 3D-Bereichen ist OpenGL die übliche Schnitstelle. DirectX ist bei Spielen eben Populärer.
Im Endeffekt kannst du mit beiden Schnitstellen das erreichen, was du erreichen willst.
@Sgt. Nukem
naja, für eine normale 3D Simulation sollte ja glVertex reichen
-
Das heisst also DX ist effizienter! Beim Aussortieren von Newbies.
Bye, TGGC (Für echte Fans)
-
Danke für die Zahlreichen Antworten.
Zu Kris, mein Roboter ist ein Gelenkarmroboter und soll sich dann wie ein Arm bewegen.
Also ich ziehe aus alle diesen Meinungen den Schluß, das OpenGl einfacher ist und Plattformunabhängig.
Wie schauts denn mit GLUT aus? Ist doch noch einfacher oder??
Könnte ich damit auch eine Simulation eventuell später auch in Echtzeit realisieren??
danke für eure Antworten
-
interessant
das läuft auf inverse kinematik hinaus.
ich habe ein ähnliches projekt. allerdings habe ich erst die
vorwärtskinematik implementiert: ich habe ein Objekt aus
mehreren Gliedern, jedes Glied ist durch ein Gelenk mit seinem
Vorgänger verbunden. nun kann ich mit der maus die einzelnen
glieder auswählen und bewegen bis die endposition erreicht ist,
dabei gebe ich die rotationswinkel selber vor.
interessanter ist natürlich einfach anfangsposition und
endposition vorzugeben und die rotationswinkel einfach
berechnen zu lassen, um die resultierende stellung der
glieder zu erhalten. und da greift die inverse kinematik.
leider bin ich da noch nicht weiter gekommen.ktis
-
hi Kris,
die "forward kinmatic" ist natürlich von der Berechung einfacher als die inverse. Bei mir steht Momentan weniger die Berechnung als die Darstellung im Vordergrund. Eine Berechnung nach invers und forwärts Kinematik wird evtl. später folgen.
Gerade die inverse Kinematik stellt hohe Anforderungen auch an die Mathematik, da ja mehrere Lösungen für ein und das Selbe Problem existieren.Momentan will ich wie gesagt nur darstellen und will mich mit Open GL, GLUT oder Direc3D beschäftigen.
Habe gerade mal so 400 Seiten zu Open GL und GLUT ausgedruckt mal sehen, wie da so geht.
-
wenn du websiten kennst, die zum verständnis der inversen kinematik
beitragen, wäre das toll.
OpenGL ist dabei das geringere problem. es existieren jedemenge Bücher
und tutorials zu diesem thema, z.b. die nehe-tutorials.kris
-
kingruedi schrieb:
Im Simulations und Professionellen 3D-Bereichen ist OpenGL die übliche Schnitstelle.
Kann man mittlerweile auch nicht mehr so einfach sagen.
Profi-CAD oder -Modelling Software bietet in ihren Windows-Ports meistens auch einen DirectX- oder SW-Renderer.kingruedi schrieb:
DirectX ist bei Spielen eben Populärer.
Allerdings auch erst "seit letzter Zeit".
Früher wurde Direct3D gemieden. (Aus verschiedenen Gründen)
kingruedi schrieb:
@Sgt. Nukem
naja, für eine normale 3D Simulation sollte ja glVertex reichen
Daß er keine Shader einbinden will ist klar, aber bei komplizierteren Roboter-Arm-Konstrukten will ich vielleicht doch lieber mit Buffern o.ä. arbeiten.HINWEIS: Für Deine Inverse-Kinematics-Sachen könntest Du ja ggf. die ODE (Open Dynamics Engine - das ist eine Physik-Engine) benutzen.
Dort legst Du Deine Arme als Rigid Bodys an, und verbindest sie über Joints. Danach erledigt die Physik-Engine den Rest, daß man die Arme z.B. nicht falsch verdrehen oder auseinander reissen kann...
-
Andreas Bäcker schrieb:
HI zusammen,
ich hatte vor einiger Zeit schon einmal die Frage gestellt, was für eine Robotersimulation geeignet ist. OpenGL
War da eine möglichkiet.Wie Sieht es mit Direct3D aus? Hab bei beiden geschichten keine Erfahrung. Würde mich über eine Empfehlung von euch sehr freuen.
Ich empfehle OpenGL, das ist Plattformneutral bzw. -unabhängig und kann genau das gleiche wie DirectX.
Es ist sehr ärgerlich ein Projekt in DirectX zu schreiben und dann hinterher
auf ein anderes Betriebsystem umsteigen zu wollen.
Es gab schon viele, die das Bereut haben, das sie DirectX anstatt OpenGL genommen haben, deswegen würde ich lieber auf Nummer Sicher gehen und
OpenGL nehmen.
Die Entwicklung in der IT Welt ist nicht beständig genug, daß man davon ausgehen
kann, daß es in ein paar Jahren noch aktuelle Windows Versionen gibt.Will das ganze in Visual C++ umsetzen.
Visual C++ gibt's nicht, es gibt nur C++.
-
Andreas Bäcker schrieb:
Wie schauts denn mit GLUT aus? Ist doch noch einfacher oder??
Könnte ich damit auch eine Simulation eventuell später auch in Echtzeit realisieren??
danke für eure AntwortenWenn schon glut, dann FreeGlut.
Das normale alte glut ist veraltet, wird nicht mehr gewartet und
hat sehr restriktive Nutzungsbedingungen deswegen würde ich an deiner
Stelle lieber FreeGlut nehmen.
www.freeglut.orgOder noch besser, nimm gar kein Glut und verwende etwas anderes.
Da gibt's genug.Ich würde z.B. SDL empfehle, damit kannst du für OpenGL eine Render Context
erstellen und von SDL die Tastatureingabe, Netzwerkprogrammierung und Co.
je nach dem was du brauchst übernehmen lassen.
-
Die Entwicklung in der IT Welt ist nicht beständig genug, daß man davon ausgehen
kann, daß es in ein paar Jahren noch aktuelle Windows Versionen gibt.man kann aber noch davon ausgehen, dass microsoft nicht mit der tradition brechen wird, uralte programme zu unterstützen. mit ein bischen tricksen bekommt man sogar heutzutage noch alte dosgames ohne emulator zum laufen. wielange wird dann noch die winapi und directX in der jetzigen form unterstützt? 10 jahre? 15?
-
sdf schrieb:
Ich empfehle OpenGL, das ist Plattformneutral bzw. -unabhängig und kann genau das gleiche wie DirectX.
Das ist natürlich völliger Blödsinn. Nicht im entferntesten!!
Wenn überhaupt kann es fast das gleiche wie DirectXGraphics (bzw. Direct3D).sdf schrieb:
Die Entwicklung in der IT Welt ist nicht beständig genug, daß man davon ausgehen
kann, daß es in ein paar Jahren noch aktuelle Windows Versionen gibt.ROTFL!!
Ich glaube auch, daß es ab 2006 keine Windows-Nutzer mehr gibt, und die komplette IT-Welt auf "freie Software" umgestiegen ist... LOL
sdf schrieb:
Will das ganze in Visual C++ umsetzen.
Visual C++ gibt's nicht, es gibt nur C++.
Falsch. Visual C++ gibt's. Ist zwar keine Programmiersprache, aber eine IDE. Ist von Mircosoft.
"Umsetzen" kann er es also sehr gut mit Visual C++.
-
Sgt. Nukem schrieb:
sdf schrieb:
Ich empfehle OpenGL, das ist Plattformneutral bzw. -unabhängig und kann genau das gleiche wie DirectX.
Das ist natürlich völliger Blödsinn. Nicht im entferntesten!!
Wenn überhaupt kann es fast das gleiche wie DirectXGraphics (bzw. Direct3D).Ja, hast recht, ich meinte natürlich Direct3d.
sdf schrieb:
Will das ganze in Visual C++ umsetzen.
Visual C++ gibt's nicht, es gibt nur C++.
Falsch. Visual C++ gibt's. Ist zwar keine Programmiersprache, aber eine IDE. Ist von Mircosoft.
"Umsetzen" kann er es also sehr gut mit Visual C++.Er kann es vielleicht mit Visual C++ umsetzen, aber nicht in Visual C++,
weil das nunmal keine Programmiersprache ist und er hat "in" gesagt und nicht "mit".Und das er eine Progammiersprache gemeint hat, darauf hättest du eigentlich selber drauf kommen können.
-
Sgt. Nukem schrieb:
sdf schrieb:
Die Entwicklung in der IT Welt ist nicht beständig genug, daß man davon ausgehen
kann, daß es in ein paar Jahren noch aktuelle Windows Versionen gibt.ROTFL!!
Ich glaube auch, daß es ab 2006 keine Windows-Nutzer mehr gibt, und die komplette IT-Welt auf "freie Software" umgestiegen ist... LOL
Du hast mit Politikern etwas gemeinsam, auch diese denken nur in sehr kurzen Zeiträumen.
-
sdf schrieb:
Du hast mit Politikern etwas gemeinsam, auch diese denken nur in sehr kurzen Zeiträumen.
Es kann halt nicht jeder Äonen im Voraus planen
-
sdf schrieb:
Er kann es vielleicht mit Visual C++ umsetzen, aber nicht in Visual C++,
weil das nunmal keine Programmiersprache ist und er hat "in" gesagt und nicht "mit".Er kann es aber auch in München oder Hannover umsetzten, obwohl beides keine Programmiersprachen sind.
Bye, TGGC Deine Unterstützung wird gebraucht!