nochmal ne Frage...

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

jojo

Betreff: nochmal ne Frage...

BeitragMo, März 22, 2004 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also, mitlerweile veruche ich mir einen eigenen Terrain-Editor zu basteln!
Klappt ja auch alles ganz gut...aber eine problem stellt sich mir da!
Der Editor wird so sein das ich durch die grob vorgefertigte Welt laufen kann und dann per Mausklick Meshs(Bäume,Steine etc.) und Texturen an ausgewählte stellen platzieren kann.Wie mache ich diese änderungen dauerhaft erhalten, soll heißen wie schreibe ich zum Beispiel in eine 3ds oder .x Datei??? Ich kenne den Aufbau dieser Dateien nicht, kennt jemand den aufbau einer .x oder 3ds Datei oder wie kann ich sonst die änderungen ablegen??
Das alles als Blitz-Code abzulegen währe doch irgendwie umständlich...
Gruß
Jojo

Jan_

Ehemaliger Admin

BeitragMo, März 22, 2004 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Uff, etwas unglücklich ausgedrückt!

1. Benutzte im Editor Types,
2. Lade immer, ein Set von 3DS oder X oder B3D Dteien
3. Dann Speichere deine Bäume mit drehung, Scale,Art in einer Level datei ab
4. Lade diesse beim nächsten starten und Positioniere alles wieder!
between angels and insects

Boris0190

BeitragMo, März 22, 2004 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
mh er meint vermutlich, dass er dann das Terrain mit Bäumen und so in eine 3ds datei schreib (z.b.) um dann dieses terrain in BB nur mit einem Befehl zu laden. Also praktisch exportieren. ich glaub aber das is nich so einfach...
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one
 

Dreamora

BeitragMo, März 22, 2004 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
den level einfach mit ner entsprechenden hierarchy aufbauen und hier ma vorbei schauen: http://www.blitzbasic.com/code...p?code=866

damit sollte es eigentlich möglich sein das auf ne " laden und fertig " ebene zu bringen Smile

jojo

Betreff: ich nochmal

BeitragMo, März 22, 2004 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ich meine, wenn ich zum beispiel mein terrain durchlaufe und an bestimmten stellen andere texturen setzte, das dies dann auch im terrain gespeichert ist, also in der mesh datei oder dem Terrain.
Wenn ich im Terrain Bäume stetze, dann muß die position des Baumes ja irgendwie gespeichert werden.Aber wo speicher ich das...
ich könnte ja hingehen und mir die Koordinaten aufschreiben und in dann per positionentity setzen, das ist mir aber zu umständlich...ich will das automatisieren, also beim durchlaufen will ich die Bäume setzen und dann irgendwie diesen terrain speichern, mit den positionen der bäume!!

Markus2

BeitragMo, März 22, 2004 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
also ich habe mir nen ganz simples Dateiformat ausgedacht das
sieht so aus wenn du nur Objekte plazieren willst :
TREE:-1484.93,944.177,4795.6,542.264

Bis zum Doppelpunkt ist ein Befehl der beim laden eine
Funktion startet mit den Parametern die durch Komma getrennt sind .

Code: [AUSKLAPPEN]

.GLOBALE

Dim para$(128) ;um einzelne Zeilen einer Textdatei in Parameter umzuwandeln



Code: [AUSKLAPPEN]

Function TreeNew(x#,y#,z#,rn#)

 ;MR 28.04.2003

 ;Neuer Baum an x,y,z größe rn
 
  Tree.TreeType=New TreeType

  Tree\Entity=CopyEntity(tree_sprite)
  Tree\rn=rn
  y=MyTerrainY( land,x,y,z )+1
  MoveEntity Tree\Entity,x,y,z ;Nicht Position !?
  ScaleEntity Tree\Entity,rn,rn*2,rn
  EntityBox Tree\Entity,-rn/2,0,-rn/2,rn,rn*4,rn

End Function



Code: [AUSKLAPPEN]

Function TreesSave()

 ;MR 28.04.2003

 ;Bäume speichern in Textdatei :-)

  ;---------------------------------------------------------------------

  Print "Bäume speichern ..."

  Local f$="Data\Trees.txt"
  Local fh
  Local s$

   fh=WriteFile(f$)
   If fh Then
    For Tree.TreeType=Each TreeType
     s$="TREE:"+EntityX(Tree\Entity)+","+EntityY(Tree\Entity)+","+EntityZ(Tree\Entity)+","+Tree\rn
     WriteLine fh,s$
    Next
    CloseFile fh
   EndIf ;open ok

  Print "OK"

  ;---------------------------------------------------------------------

End Function



Code: [AUSKLAPPEN]

Function TreesLoad()

 ;MR 28.04.2003

 ;Bäume laden aus Textdatei :-)

  TreesFree

  ;---------------------------------------------------------------------

  Print "Bäume laden ..."

  Local f$="Data\Trees.txt"
  Local fh
  Local o$

  If FileExists(f$)=True

   fh=ReadFile(f$)
   If fh Then
    While Not Eof(fh)
     o$=StringToFunc(ReadLine(fh)+Chr(13)) ;Return wird entfernt ,brauche ich aber noch !
     DebugLog o$
    Wend
    CloseFile fh
   EndIf ;open ok

  EndIf ;Datei ist da

  Print "OK"

  ;---------------------------------------------------------------------

End Function



Code: [AUSKLAPPEN]

Function StringToFunc$(FileInput$)

 ;MR 28.04.2003

 ;----------------------------------------------------------------------------- String to Functions :-)

 Local c$,o$,x,x1,x2,p,i
 c$=""
 o$=""

 ;---------------------------------------------------------

 ;Command
 x=Instr(FileInput,":")
 If x>1 Then
  c$=Mid(FileInput,1,x-1)
  c$=Upper(c$)
 EndIf

 ;---------------------------------------------------------

 ;Clear Parameter
 p=0
 For i=1 To 128
  Para(i)=""
 Next

 ;Search for Parameters
 x2=0
 If Len(FileInput)>x Then
  x1=x+1
  Repeat
   x2=Instr(FileInput,",",x1)
   If x2=0 Then x2=Instr(FileInput,Chr(13),x1) ;or to End
   If x2>x1 Then
    p=p+1
    Para(p)=Mid(FileInput,x1,x2-x1)
    x1=x2+1
   EndIf
   If x2=Len(FileInput) Then x2=0 ;no endless loop ;-)
  Until x2=0
 EndIf

 ;------------------------------------------------------------> COMMAND <---

 ;Functions
 If Len(c$)>0 Then
 Select c$

 Case "TREE","BAUM"
  ;x,y,z,rn
  TreeNew Para(1),Para(2),Para(3),Para(4)
  o$=c$

 Case "TARGET","ZIEL"
  ;x,y,z,r,g,b
  TargetNew Para(1),Para(2),Para(3),Para(4),Para(5),Para(6)
  o$=c$

 Default
  o$="UNKNOWN COMMAND "+c$
 End Select
 EndIf ;Command >0

 ;---------------------------------------------------------

 ;Output what i have done :-)

 If Len(o$)>0 Then o$=o$+":"

 If p>0 Then
  For i=1 To p
   o$=o$+Para(i)
   If i<p Then o$=o$+","
  Next
 EndIf

 If Len(o$)>0 Then
  Return o$
 EndIf

End Function

jojo

Betreff: man man ...

BeitragMo, März 22, 2004 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
wo haste denn das so schnell her??
Sieht aber ganz gut aus...werde ich mir mal reinziehen und mal überlegen wie ich es umsetzte...aber die Idee kommt meiner überlegung schon sehr nahe!!!
Gruß und dank
Jojo Very Happy Very Happy

jojo

Betreff: shit vergessen zu sagen

BeitragMo, März 22, 2004 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
E I N A B S O L U T G E I L E S F O R U M H I E R ...
H I E R W E R D E N S I E G E H O L F E N ! ! ! ! !

Danke an alle die immer ihren "Senf" dazugeben...

Gruß
Jojo
Very Happy
 

furbolg

BeitragMo, März 22, 2004 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@ jojo: Zitat:
wo haste denn das so schnell her??
sorry aber ich denke er hat sich gedanken darüber gemacht. Wie die meisten Progger das tun (sollten).

Markus2

BeitragDi, März 23, 2004 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
;MR 28.04.2003

Jo,
das ist auch eine sehr gute Routine die das Leben erleichtert .
Einmal erfunden für die Ewigkeit Smile

jojo

BeitragDi, März 23, 2004 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
@furbolg
Wenn wir das Rad immer zweimal erfinden müssten, würden wir in der selben zeit weniger fortschritte machen. Warum nicht das wissen teilen...
So bekommt man eine Bibliotek, ähnlich wie C++... Very Happy Very Happy
Gruß
Jojo
 

furbolg

BeitragDi, März 23, 2004 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Jojo:
Also komm, der Code ist mit überlegen ne sache von maximal ner halben Stunde. C++ benutzt ich auch dynamisch Librarys und Interface damits später Leichter ist aber nich für jeden Kram.

Und doch, das Rad neu erfinden bringt einem was, außer arbeit, erkenntnis.

Markus2

BeitragMi, März 24, 2004 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@furbolg

In dieser Funk. steckt mehr als eine halbe Std. Arbeit ,
außerdem müssen Funk. erst reifen und sich entwickeln bis
sie wirklich gut sind und sowas braucht eben seine Zeit .

Ich finde auch das man mehr austauschen sollte weil das
bringt uns alle wirklich nach vorne .

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group