Source Engine BSP Map laden

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

marcelkroener

Betreff: Source Engine BSP Map laden

BeitragSa, März 22, 2008 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich hab ein Problem beim Erstellen einer Map aus einer BSP Datei.
Das ergebnis hat zwar schon ähnlichkeit mit der ingame Map (Vergleichsbild)
aber ich weiss nicht wie ich die Faces richtig erstelle.

Infos über das BSP Format habe ich hierher:
http://www.geocities.com/cofrdrbob/bspformat.html

In den Face Lumps gibt es einen eintrag der zu einem surfedge verweist (surfedge), und einen der angibt wie viele surfedges zum face lump gehören(numedges).
ein surfedge eintrag verweist auf ein edge und ein edge verweist auf ein paar aus 2 vertices.
wenn der eintrag vom surfedge negativ ist werden die vertices gegen den uhrzeigersinn verbunden, sonst mit.

Ich weiss nur nicht wie man aus 2 vertices und einer kante ein face erstellen soll. Sad

Code + Mapfile als Zip:
http://marcelkroener.ma.funpic...reader.zip

Edit: Quellcode Update: Edges werden durch grüne Linien symbolisiert.

mfg marcelkroener

Vertex

BeitragMo, März 24, 2008 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For i=0 To face_count-1
   DebugLog "Face " + i + ":"
   For i2=face_firstedge(i) To face_firstedge(i)+face_numedges(i)-1
      i3=Abs(surfedge_index(i2))
      If Sgn(surfedge_index(i2)) Then
         DebugLog " " + edge_v(i3, 0) + " " + edge_v(i3, 1)
      Else
         DebugLog " " + edge_v(i3, 1) + " " + edge_v(i3, 0)
      EndIf
   Next
   DebugLog ""
Next


Da kommt dann so etwas heraus:
Code: [AUSKLAPPEN]
Face 0:
 416 417
 417 418
 418 419
 419 416

Face 1:
 420 258
 258 421
 421 422
 422 420

Face 2:
 423 424
 424 425
 425 426
 426 423

Face 3:
 427 428
 428 429
 429 430
 430 427


Wie du siehst, beginnt die eine Edge mit dem Vertex der Vorhergehenden. Weiterhin ist Start- und Endvertex identisch. Aufgefallen ist mir, dass alle Surfedges das selbe Vorzeichen haben. GgF. musst du es mal über das FaceSide-Attribut probieren.




Code: [AUSKLAPPEN]
For i=0 To face_count-1
   i3=Abs(surfedge_index(face_firstedge(i)))
   If Sgn(face_firstedge(i)) Then
      v0 = edge_v(i3, 0)
   Else
      v0 = edge_v(i3, 1)
   EndIf

   For i2=face_firstedge(i)+1 To face_firstedge(i)+face_numedges(i)-1
      i3=Abs(surfedge_index(i2))
      If Sgn(surfedge_index(i2)) Then
         v1 = edge_v(i3, 0)
         v2 = edge_v(i3, 1)
      Else
         v1 = edge_v(i3, 1)
         v2 = edge_v(i3, 0)
      EndIf
      AddTriangle(surf,vertex_id(v0),vertex_id(v1),vertex_id(v2))
   Next
Next


und EntityFX(map, 16) siehts ganz passabel aus.

mfg olli
vertex.dreamfall.at | GitHub

marcelkroener

BeitragMo, März 24, 2008 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, danke das du geholfen hast, jetzt klappt es super Very Happy
thx ohne ende

ozzi789

BeitragDi, März 25, 2008 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Für was wilste diese Maps ?

Wen du n Source Mapper brauchst schreib mia ne Pm Smile


edit :
Könntest du mir den Code zu senden sodass es funktioniert ?
danke ^^

(man könnt ja noch ne texturierung hinzufügen, also die echten Css/Hl2 texturen)
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

marcelkroener

BeitragDi, März 25, 2008 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Texturieren is schwer, aber das versuch ich als nächstes ^^
den code will ich eh veröffentlichen wenn alles funzt

Vertex

BeitragMi, März 26, 2008 1:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe ein fehler noch in der Funktion lump_face() gefunden. Code: [AUSKLAPPEN]
For i=0 To (lump_t_filelen(13)-1)/56
muss zu Code: [AUSKLAPPEN]
For i=0 To (lump_t_filelen(7)-1)/56
werden(hast bestimmt aus der vorhergehenden Funktion die schleife kopiert).

Mit folgendem Code bekomme ich deine bsp2.bsp zum laufen:
Code: [AUSKLAPPEN]
For i=0 To face_count-1
   For i2=face_firstedge(i) To face_firstedge(i)+face_numedges(i)-1 Step 2
      Local v0, v1, v2
      
      i3 = Abs(surfedge_index(i2))
      If Sgn(surfedge_index(i2)) = -1 Then
         v0 = edge_v(i3, 0)
         v1 = edge_v(i3, 1)
      Else
         v0 = edge_v(i3, 1)
         v1 = edge_v(i3, 0)
      EndIf
      
      i3 = Abs(surfedge_index(i2 + 1))
      If Sgn(surfedge_index(i2 + 1)) = -1 Then
         v2 = edge_v(i3, 0)
      Else
         v2 = edge_v(i3, 1)
      EndIf
      
      AddTriangle(surf,vertex_id(v0),vertex_id(v1),vertex_id(v2))
   Next
Next


Bei bsp.bsp kommt dennoch nur Schrott raus. Das kann ich allerdings auch nicht so toll debuggen Razz

mfg olli
vertex.dreamfall.at | GitHub

marcelkroener

BeitragMi, März 26, 2008 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne habs selbst schon geschafft, trotzdem danke.
funzt jetz ohne probleme, alle maps

Download:
(Showcase)
  • Zuletzt bearbeitet von marcelkroener am So, März 30, 2008 14:57, insgesamt einmal bearbeitet

Plasma

Betreff: sieht gut aus ...

BeitragDo, März 27, 2008 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
machst du weiter ??

marcelkroener

BeitragDo, März 27, 2008 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar mach ich weiter, das is nur ne Alpha Razz

The_Nici

BeitragDo, März 27, 2008 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ladezeit könnte kürzer werden, auch sonst laggt es nochn bisschen, was machst du denn alles da inenr Schleife? xD

Aber wiklich schön gemacht.

PS: Die Map erinnert mich an einen teil von dm_Lockdown. Oo

ZaP

BeitragFr, März 28, 2008 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Haha, was für ein Zufall, ich arbeite auch schon seit 2 Wochen an einem BSP loader, aber für Quake3 (IBSP) maps. Die haben nur 17 lumps und sind auch sonst weniger komplex.
Starfare: Worklog, Website (download)

marcelkroener

BeitragFr, März 28, 2008 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
@nici: das soll j auch ne gefängnismap sein, hab ich irgendwann mal aus langeweile gemappt.
kannste auch in deinen HL2 mapordner kopieren und zocken.
ist aber etwas kurz ^^

und in der schleife mach ich nicht so viel,
das liegt bestimmt am rendern.
 

BadDeath

BeitragDo, Mai 29, 2008 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
könntest du bitte die aktuellste version von deinem bsp-loader reinstellen?

Danke dir!

marcelkroener

BeitragDo, Mai 29, 2008 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/showcase/210/
Im Showcase Eintrag is die aktuellste Version
 

BadDeath

BeitragDo, Mai 29, 2008 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
sry, garnicht gesehen ^^

dankeschön für die arbeit, werde es mal testen

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group