XNA Kugel malen?



  • Hallo,
    gibt es in XNA eine Funktion mit der ich eine Kugel erstellen kann?
    (Kann mir kaum vorstellen das es sowas nicht gibt 😕 )
    Bis jetzt hab ich nur Funktionen gefunden die die Kugel aus einer Model
    datei läd.

    MFG



  • Hallo,

    nein solch eine Funktion bietet dir das XNA-Framework nicht.
    Mit dem Laden von Modellen hast du den richtigen Weg gefunden.
    Alternativ könntest du Dir die Kugel auch intern erstellen.

    Grüße..



  • Moin,
    schade das man sich solche Funktionen noch selber schreiben muss, aber evtl. gibt es dafür ja einen Grund!?
    Immoment zeichne ich meine Modelle noch mit Primitiven selber, aber möchte nun,
    da ich für die Kugel dann eine Model datei verwenden möchte, die bisherigen Modelle
    auch in Modell dateien schreiben. Gibt es denn wenigsten Funktionen mit denen ich
    wie beim malen, meine Index und VertexBuffer übergeben kann und diese mir daraus
    eine Modell datei erstellen?

    MFG


  • Mod

    NetZwerg schrieb:

    Moin,
    schade das man sich solche Funktionen noch selber schreiben muss, aber evtl. gibt es dafür ja einen Grund!?

    vermutlich der gleiche grund weshalb in der standard lib keine funktion ist die printHelloWorld, printGebenSieEineBeliebigeZahlein, etc. heisst. wenn man dir schon alles bietet was du brauchst um jedes beliebige model zu laden, wozu dann noch ne seperate funktion die ne kugel laedt/erstellt?
    du bist nicht zufaellig aus dem opengl bereich? 😃



  • in opengl gibts sowas erst recht nicht ^^


  • Mod

    ChrisJ schrieb:

    in opengl gibts sowas erst recht nicht ^^

    bei opengl ist die utility library dabei die sowas wie gluSphere bietet, ist wie d3dx fuer ogl ;).



  • Moin,
    ich setzte gerade ein Projekt was ich in Java3D angefangen hab in XNA um.
    Aber nochmal zur Kugel, immoment komm ich nicht weiter mit einer Funktion
    die mir eine Kugel zeichnet. Aber ich kann mir kaum vorstellen das das nicht
    schonmal einer gemacht hat, hat evtl einer einen Link, source-code oder etwas in der art
    für mich?

    MFG



  • Du könntest das einfach über sphärische Koordinaten machen:
    Eine äußere Schleife über theta (Winkel zwischen y-Achse und Polarkoordinate) und eine innere Schleife über phi (Winkel zwischen x-Achse und Polarkoordinate). Die Schrittweite der Winkel steuert die Tesselation.
    Den ersten und letzten Ring verbindest du einfach jeweils mit dem Pol (quasi ein Triangle Fan) und für jeden anderen Ring n bildest du mit den Vertices des Vorgänger Rings n-1 Quads, die du dann in je 2 Dreiecke aufteilst.
    Edit: Mir is grad noch eingefallen, dass bei dem Verfahren die Dreiecke zum Äquator natürlich immer größer werden, was unerwünscht sein kann. Um das zu beheben könntest du statt fester Winkel auch eine feste "Breite" der Dreiecke vorgeben und dann pro Ring jeweils den erforderlichen Winkel phi errechnen.

    Alternativ könntest du auch die Vertices für einen Bogen der Kugel erzeugen (also einfach nur eine Schleife über theta) und diese Vertices dann sukzessive um die y-Achse drehen und immer je 2 Bögen mittels Dreiecken verbinden.

    KA ob das gute Ideen sind, aber das is das erste was mir in den Sinn kam^^



  • du bist nicht zufaellig aus dem opengl bereich?

    hehe, aus irrgend einen Grund musste ich auch gerade daran denken.

    Eine Funktion die dir Index- sowie Vertexpuffer daten in eine Datei schreibt, gibt es natürlich auch nicht. Welchen sinn soll dies haben? Modelldateien wie X-Dateien, MD2 usw. erfüllen ja den zweck der vereinfachung, du erstellst ein Modell in einer hochwertigeren Form, die einfacher ist als jeden Polygonpunkt einzeln anzugeben und speicherst diese dann in einem Modellformat deiner wahl. Leider gibt es da sehr viele und jenes ist unterschiedlich und hat Vor- und Nachteile. Wenn du jetzt Deine Daten in solch eine Datei schreiben willst, musst du die spezifikation kennen und diese dann selber mit Deinen Werten füllen um sie dann wieder vereinfacht auszugeben? hmmm
    Also wenn du Deine Vertex- und Indexstruktur hast, kannst du diese genauso einfach darstellen, wie mit einer Modelldatei. Nur setzt sich keiner hin und gibt jede Polygonposition für komplexe Modelle wie beispielsweise Menschen ein, dafür hast du dann Modelldateien.

    Zu Deiner Kugel, wie schon beschrieben, kannst du eine Kugel sehr schön Mathematisch beschreiben. Schau einfach in ein standard Tafelwerk. Damit lässt sich das Problem Algorithmisch lösen und du musst dann nicht jeden Punkt einzeln eintippen. Alternativ, falls du damit doch größere schwierigkeiten hast, geh einfach in ein X beliebiges Modellprogramm und erstell mit ein paar klicks eine Sphere (Kugel) und speicher diese in ein X-File. Noch einfacher, schau im internet oder im DX SDK nach einem Sphere Modell, da wirst du sicher auch fündig.

    Als kleinen Hinweis, wenn du mit einer Sphere schon Probleme hast, wird ich mir erstmal gedanken machen was du so vor hast, bevor du weiter machst. Ich weiß zwar nicht was du genau machen möchtest, aber bevor du das nächste Unreal rausbringst, soll Dir gesagt sein, das ein bisschen mehr benötigt wird als eine Sphere zu zeichnen. Und auch XNA nimmt Dir nicht alles ab, es stellt eine vereinfachung der Spieleprogrammierung da und nicht das Spiel selber. Es zeigt Dir sozusagen die Tür, durchgehen musst du schon selber 😉

    Grüße..



  • Moin,
    Also sone Punktmenge hab ich ja von einer Kugel, das ist nicht das Problem das aus
    zurechnen. Nur in meinen Schleifen die Indices zu füllen ist immoment das schwierige für mich. Die Kugel dient eigentlich nur zur Optik, deswegen nervt mich das ein bisl das mich das solange aufhält, bin halt von java anscheinent sehr verwöhnt ^^.
    Das Problem, ich kann nicht alles in einem Modell(in einem externen Programm) erstellen da ich meine Modelle aus geographischen Rohdaten erstelle und ich mich mit Blender und co. nicht auskenne und nichtmal weiß ob ich da scripts schreiben kann die mir die modelle dann erstellen aus der datei.
    Naja ich werd mir mal das SDK laden und schauen obs da ne Kugel funktion gibt.
    Mit dem Modellen hoffe ich einfach das es irgenteinforamt gibt wo es schon eine lib
    für c# gibt
    Vielen dank

    MFG


Anmelden zum Antworten