Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.04.2012, 13:56

Level of detail programmieren - Kein Ansatz! :(

Hi,
Ich habe in einem Blender - Forum mal nachgefragt, ob man ein LOD (Level of detail ) auch mit C++ für Blender programmieren kann.
Ja, man kann, kam die Antwort und dann auch noch eine ausführliche Beschreibung, mit der ich auch etwas anfagen kann.

Hier ist mal der Beitrag:

Das LOD funktioniert Folgendermaßen:

Zitat

Jedes Objekt, das von LOD
beeinflusst werden soll, hat eine Property, die den Typ (Da manche
Objekte anders beandelt werden sollen, ein Grasbüschel braucht z.B.
nicht mehrere LOD Stufen, ein Baum schon eher) enthält. Bei Spielstart
werden nun alle Objekte der Szene duchgegangen, und die Erforderlichen
Daten (Also Position,Rotation,Skallierung,Name, Sonstiges) in Listen
(für jeden Typ eine) gesammtelt. Dort kommt nun die LOD dll ins Spiel.
Diese verwaltet diese Daten als Punkte in einem KD-Baum (Da gibt es ja
schon implementationen für C/C++). Die .dll wird mit ctypes eingebunden,
wie das geht kannst du in der Doku nachlesen.
Während des Spiels
wird nun aller paar Logic tics das LOD-Script aufgerufen. Dort wird
zuerst eine Funktion aus der DLL aufgerufen, die alle Punkte in einem
best. Radius vom Spieler entfernt sucht, und mit ihren Daten in einem
Array ablegt. Diese vorgehensweise hat eingendlich nur den Grund, dass
man nicht so einfach Arrays zurückgeben kann, und ich nicht viel
Erfahrung in C++ habe.

Jedenfalls wird dann vom Script solange
eine Funktion, die immer den nächsten datensatz des ergebnisarrays
zurückgibt, aufgerufen, bis keine weiteren Ergebnisse vorhanden sind.
(Also z.B. "0" zurückgegeben wird) Diese funktion gibt es jede mögliche
Operation eines Typs und führen diese aus. (Also bei Gras z.B.
"getNextGrassObjectToAdd()" und "getNextGrassObjectToDelete()")

Die Daten werden also komplett in der DLL verwaltet, und das Script ist sozusagen die "Ausgabe".

Beitrag von "Rolli" : http://www.blendpolis.de/viewtopic.php?f=15&t=38912&start=20

Nun ja, mein Problem ist, dass ich keinerlei Ansatz habe, wie ich diese Sachen programmieren soll!
Ich habe mich bisher nur sehr wenig mit .dll Dateien auseinander gesetzt!

Ich würde mich über jegliche Anregungen und Tipps freuen! ;)

Gruß

Lukas
Mein Spieleprojekt:War of future
Mein Blog: War of future
Ich kenne mich mit Blender aus.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

28.04.2012, 14:06

Ich verstehe nicht, was dieser von dir zitierte Beitrag mit LoD zu tun haben soll.
Was willst du konkret erreichen? Und warum in Blender? Benutzt du das als Spiele-Engine oder nur zum Modellieren?

3

28.04.2012, 15:05

Ich habe in einem Blender - Forum mal nachgefragt, ob man ein LOD (Level of detail ) auch mit C++ für Blender programmieren kann.

Du willst nicht wirklich Blender um ein eigenes LOD-System erweitern, oder?

Meintest du nicht eher, Blenderobjekte in dein Spiel laden und dort mit LOD versehen?
Ansich bedeutet LOD ja nur, abhängig von der Entfernung verschieden detaillierte Modelle anzuzeigen. Die kannst du entweder automatisch berechnen, oder mehrere Versionen des Modells von Hand machen und benutzen. Wie du dann entscheidest, welche LOD-Stufe für welches Modell benutzt wird, ist auch noch eine Frage.

Was genau willst du?
Lieber dumm fragen, als dumm bleiben!

4

28.04.2012, 15:27

@David: Ich entwickle in Blender mein komplettes Spiel, mit Logic usw, deshalb benutze ich Blender. Es hat ja eine eigene Engine (BGE), die aber kein LOD integriert hat. Da aber das Spiel viele Faces haben wird, brauche ich so ein LOD. Der Beitrag soll euch zeigen, was ich machen muss, damit das LOD in Blender funktioniert! Er hat das ja schon gemacht, also kann es funktionieren!

@Jonathan_Klein: Nein, ich will es so, wie es im Text steht. Eine DLL, die mit dem Python -script kommuniziert.

Ich will, dass am Ende die entsprechenden Objekte in einer bestimmten Nähe durch ein Low-Highpoly Mesh ersetzt werden. Und das ist ja glaube ich nicht das schwerst.
Ich muss ja erst mal die dll schreiben und irgendwie hinbekommen, dass ein Script und die DLL miteinander kommunizieren!


Gruß

kingli
Mein Spieleprojekt:War of future
Mein Blog: War of future
Ich kenne mich mit Blender aus.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

29.04.2012, 14:59

Warum musst du eine DLL schreiben? Jonathan hat doch geschrieben wie das Prinzip dahinter ist. Setz es einfach mit Python um und alles ist gut.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

6

29.04.2012, 15:28

Das Problem ist, dass ich kein Python kann.

Oder wäre es sinnvoller, dass ich Python lerne?

Gruß

Lukas
Mein Spieleprojekt:War of future
Mein Blog: War of future
Ich kenne mich mit Blender aus.

7

29.04.2012, 15:45

Ich glaube, für die Blender Game Engine wäre Python sehr nützlich, da man Blender nunmal mit Python skriptet. Wenn du C++ benutzen willst, such dir eine C++ Engine und exportiere deine Sachen aus Blender. Das sagt ich jetzt mal, ohne die BGE näher zu kennen.
Aber Python soll auch recht einfach sein, und es ist super um sich mal kleinere Skripte zu schreiben und die kann man ja nun echt immer gebrauchen.
Lieber dumm fragen, als dumm bleiben!

8

29.04.2012, 20:23

OK, ich habe mich schon entschlossen Python zu lernen!
Ist das leichter, wenn man schon Kenntnisse in C++ hat? Und reicht es, wenn man nur die Dokumentation liest?

Danke!

Gruß

Lukas
Mein Spieleprojekt:War of future
Mein Blog: War of future
Ich kenne mich mit Blender aus.

9

29.04.2012, 22:12

C++ ist eine der komplexesten Sprache wenn man die kann (gut, im Grunde genommen kann sie fast niemand wirklich), ist man auch in der Lage, jede andere Sprache zu lernen.
Doku ist sicher nicht verkehrt, mit ein paar guten Tutorials gehts aber schneller, denke ich. Es gibt glaub ich sogar ein OpenBook dazu.
Lieber dumm fragen, als dumm bleiben!

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

29.04.2012, 23:49

Python ist schnell gelernt. Einfach mal ein bisschen Googlen, da solltest du genug Hilfen finden. Und dann einfach machen machen machen;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige