Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Gast_NiGhTmArE hat geschrieben:
mhh..... bsp scheint mehrere Bedeutungen zu haben
BSP steht für Binary Space Partitioning (zu Deutsch : Binäre Raumunterteilung) und ist eine Beschreibung einer häufig verwendeten Technik zum Sortieren der Polygone in einer 3D-Szene.Da das Quake3-Mapformat einen BSP-Baum zur Geometriesortierung verwendet, hat J.C. wohl auch bsp als Dateierweiterung genommen...BSP ist also nix Q3-spezifisches.
Gast_NiGhTmArE hat geschrieben:
eine .map import-lib wäre noch besser falls du sowas hast aber die bsp is auch ok
Eine Importlibrary für das Worldcraft .map-Format für Delphi ist mir nicht bekannt.Du wirst also mit dem Quake3-BSP-Format Vorlieb nehmen müssen (auf sulaco gibts ja wie gesagt ne Delphiunit dafür)!
Ich habe noch ein PDF zu Worldcraft Map Dateien gehabt. Das MAP Format vom Radiant ist so ähnlich. Am Ende stehen da auch noch weitere Links zu MAP Format Dokumentationen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Philipp hat geschrieben:
Mich würde auch interessieren, wie man mit oder ohne glScene nen Mapeditor baut... kann nich ma einer ein Tut dazu schreiben oder is das zu hart ? wär aber GENIAL !
Ja, das wäre zu hart, denn das Tutorial würde vom Umfang her eher einem Buch als nem Tut entsprechen.Ein Mapeditor vom Schlage des Radiants oder UnrealED ist meist mehr Arbeit als die komplette Spielengine selbst und beihnaltet so viele Techniken, das es gar keinen Sinn machen würde dies alles in einem Tutorial unterzubringen, ganz zu schweigen vom Aufwand den das Schreiben eines solchen Tutorials mit sich bringen würde.
Was auch gegen ein Tutorial zu diesem Thema spricht, ist die Tatsache das es ja jede Menge verschiedenster Editoren gibt und ein Editor immer auf eine Engine angepasst entwickelt wird.Während der eine Editor auf Octress für Aussenareale basiert, speichert der andere seine Geometrie z.B. als BSP-Baum ab...ein Tut zu diesem Thema wäre deshalb eigentlich reine Zeitverschwendung, es sei denn man würde direkt noch ein Tut zur Engine schreiben welche diesen Editor dann nutzt...das würde allerdings den Zeitrahmen eines jeden Hobbyentwicklers sprengen (sofern er denn überhaupt die Motivation für so ein Tutorial aufbringen könnte)!
Ich kann SoS nur recht geben... Aber: Wenn man sich die DGL und die diversen Pages aller Member und User hier so ansieht, dann kann man sich Problemlos alles "zusammenklauben", was ein einfacher Edit bräuchte... Ein einfaches konzept wäre es z.B. wenn man es so macht, wie hier schon oft zu lesen war: Man bastelt sich einfach ne routine, mit welcher man Vertexe (Punkte) mittem im 3d-Raum anlegt. Diese Punkte (die man von mir auch auch verschieben kann), werden nun logischerweise mit allen Koordianten in einem ganz normalen Array gesaved... nun müsste man nur ne ne Routine basteln, welche aus 4 Selectierten Punkten ein Quadrat baut (oder aus 3 halt ein Dreieck....) und speichere diese Quads wiederum. Dazu kommt dann noch son Kram wie "Farbe" und "Textur-Id" (Texturmanager) und dann muss man sich am Ende nur noch überlgen, wie man das ganze am besten in eine Datei speichern kann bzw. danach auch wieder Laden kann (um es einfach zu machen: alle externen Files (Texturen) extern lassen und alle andern Infos von mir aus in ne ini saven)...
Wer dann noch Lust hat, kann sich dann ja noch Gedanken über ne Lightmap-Routine machen....
Das wäre nun zwar alles sehr einfach und sicherlich nicht Profi-Linke, aber so würde ich es als Anfänger angehen (vorausgesetzt, ich kenne mich zumindest etwas mit Open Gl aus....)
_________________ Es sind immer die guten, welche zu früh von uns gehen müssen... Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net Neu! Ein großer Teil der Demos nach Kylix übersetzt!
Ich würde vorschlagen man macht erst eine Engine die Formate irgendwelcher anderer Editoren wie Radiant ode Worldcraft lesen kann. Wenn man damit genug Erfahrung gesammelt hat kann man ja sich auch noch einen eigenen Editor machen, der auch in dem gleichen Format speichern kann. Hauptsache der Editor ist unabhängig von der Engine, so daß man ihn auch über mehrere Versionen der Engine weiter benutzen kann.
also erstmal würde ich den anderen hier auch zustimmen... nen Tutorial für nen Editor ist viel zu aufwendig und zu umfangreich... Bei meiner Engine an der ich bastle z.B. ist der Editor auch um einiges umfangreicher als das Spiel an sich.
Denn: Beim Editor muß man Objekte bearbeiten, verschieben etc bla bla können, im Spiel selbst ist dieses Objekt dann fest an seinem Platz, es weiß schon wie es auszusehen hat etc *g*
Aber gut... ich würd euch empfehlen euch einfach erstmal die dinge wie Selection etc anzugucken und dann nen Editor (erstmal ohne zugehöriges Spiel) zu machen, mit welchem ihr nen kleines Level erstellen könnt. wobei ich es einfach so machen würde (bzw auch mache), das man die Objekte mit nem 3DEditor (Maya, 3DStudioMax etc) erstellt und dann im Editor Importiert (und da noch verändern kann etc, aber das erstmal später).
Wenn ihr es dann hinbekommen habt, das man Objekte importieren kann, kümmert ihr euch darum das man im Editor ne anständige Maussteuerung hat und macht es möglich den Objekten Texturen zuzuweisen.
Habt ihr auch das geschafft, habt ihr 2 möglichkeiten *g*
1) Ihr bastelt jetzt eine Speicher-Funktion, mit welcher ihr eure Geometrie etc speichert um es dann mit dem Spiel (welches ihr jetzt anfangen könnt/müsst) zu öffnen.
2) Ihr macht erstmal ein wenig am Editor weiter, z.B. das man die Vertex'e der Objekte verschieben kann o.Ä.
Das ist die methode wie ich vorgegangen bin...
Von der sache alles auf nem bestehenden Format aufzubauen halte ich eigentlich nichts großartig, denn wenn einem das Format dann mal irgendwann nichtmehr ausreicht (aus welchem grund auch immer) ist man erstmal aufgeschmissen... da würde ich doch lieber gleich von anfang an nen eigenes machen Und, wie gesagt... erst den Editor soweit programmieren das man damit ein Level erstellen + Speichern kann, und erst dann das Spiel programmieren, welches das Level laden kann
Au'revoir, Aya~
PS: Bei mir hab ich ja auch nen eigens Dateiformat gemacht... einmal gibt es "*.tlf" und "*.tlfc"... tlf sind ASCII Dateien in denen die Scene vom Editor gespeichert wird, sie können aber halt auch nur vom Editor wieder geöffnet werden. Aufgebaut sind die Dateien so, das man sie auch schön von Hand ändern kann.
Es wird halt zu jedem Objekt alles wichtige gespeichert..
*.tlfc sind die "Compilierten" Dateien. Das sind Binärdateien, welche nur vom Spiel selbst geöffnet werden können. In der tlfc Datei sind alle VertexDaten, Materialien, Texturen etc gespeichert, so das eine Scene nurnoch eine einzige Datei ist. (Beim ASCII tlf Format sind nur verknüpfungen zu den Texturen/Objekten gespeichert)
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
mh.... so hab ichs ja bisher auch gemacht.. also ich hab in worldcraft die map gebaut und dann hab ich nen converter in mein Format selbergebaut ... Problem war: Worldcraft speichert in Polys, meine Engine nutzt aber Quads.... da aber immer komplett ein Quader gespeichert und daher ejde ecke von mind. einem Polygon genutzt wird also kann man sich den rest errechen.... bis dahin hab ichs... dann speichert ers in einer datei in meinem Format also bestens... ABER: *freu* Meine Engine hat eine Feste Reihenfolge der 4 Punkte....(wegen LightMaps...) Worldcraft scheint die aber anscheinend abundzu zu tauschen... also kommen bei mir die jedem bekannten 5-Ecke raus also 4-Eck mit nem Knick von oben zur Mitte...
Ich meine, dass worldcraft bei jedem spechern bissel dran dreht....
Daher hätte ich gerne nen eigenen Editor... sonst versuch ich weiter das Worldcraft Glücksradsystem da rauszufinden ( ich vermut ma so Randomize; Vertex:=Random(99999)-99999 )
wenn ich das hätte könnte ich nen Editor zum Texturieren machen...
2.Aber *nichmehrfreu* Wie wähle ich die Flächen aus ? Wieder Selection ? ( da hab ich immer Probleme mit der genauigkeit... ) oder einfach der reihe nach ?
SayCU(10); !
Nachtrag : Falls jemand den Converter haben will kann er ihn haben... aber ihr müsst ihn shcon an euer eigenes Format anpassen ... Er konventiert .map in mein Format Der hat nen Bug... in einer schleife muss ein sleep(1) rein... das dauert daher sehr lange.. wenn ichs wegmache killt der einfach ein paar zeilen ... ka warum !?! *grr*
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
@Quads : Es ist eine denkbar schlechte Idee seine Engine auf Quadbasis aufzubauen (die erste nVidia-Grafikkarte basierte auch auf Quads und hat die Firma fast in den Ruin getrieben, zusammen mit SEGA), denn spätestens wenn du komplexere Formen wie Rundungen oder Terrains in deiner Engine darstellen willst, dann wirst du schnell merken das es eine schlechte Idee war sich für Quads zu entscheiden. Daher wäre es wirklich besser, wenn du dir einfach die Dreiecke von Worldcraft übernehmen würdest.Und ich bin mir fast 100%ig sicher (obwohl ich das Dateiformat von WC nicht kenne), das es die Reihenfolge der Dreiecke nicht zufälligt ändert, sondern diese Reihenfolge so wählt das Back-Face-Culling ohne Umstellung der Eckpunkte ermöglicht wird (so wirds beim Q3-Mapformat auch gemacht).Es kann also nicht schaden diese Vertexreihenfolge beizubehalten und dann nur für deine Lightmapberechnung (kann WC dass nicht?) umzustellen.
@Flächenauswahl : Ja, die wählst du per Selection aus, und wenn du es richtig machst dürfte es da auch absolut keine Probleme mit der Genauigkeit geben, denn bei richtiger Parameterübergabe arbeitet OpenGLs Selektionsmodus mit einer 1-Pixel-Genauigkeit. Und die Auswahl gestaltet sich recht einfach : Du zeichnest deine Quads ja garantiert in einer Schleife, oder?Wenn ja, dann legst du vor dem Zeichnen eines Quads den Schleifenzähler auf den Namestack und bekommst so beim Selektionstest den Arrayindex des angeklikten Quads direkt als Hit mit dem niedrigesten Z-Wert (sprich : am nächsten am Betrachter) zurückgeliefert, und kannst dann im nächsten Schleifendurchgang prüfen, ob der Schleifenzähler gleich der Treffer-ID ist.Wenn das der Fall ist, zeichnest du dieses Quad z.B. in ner anderen Farbe oder mit ner halbtransparenten Textur um dem Nutzer zu zeigen, das dieses Quad selektiert wurde.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
NiGhTmArE hat geschrieben:
@SoS: Dein Lightmapper arbeitet ja auch auf Quadbasis oder sehe ich das falsch ? Aber wenn du meins .. ich versuch ma es umzuproggen
Nein, der Lightmapper arbeitet intern auf Dreiecksbasis.Er liesst in seiner ersten Version allerdings nur Quads ein und wandelt diese dann intern vor dem Berechnen der Lightmaps in entsprechende Dreiecke um. Wenn du übrigens Probleme beim Ummodeln deines Lightmappers auf Dreiecke bekommst, dann schau dir unbedingt mal das Dokument an, dass ich m Lightmapping-Thread gepostet hab.
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.