PositionMesh/AddMesh

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

VirtualDreams

Betreff: PositionMesh/AddMesh

BeitragMo, Nov 01, 2004 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Function LoadLevel()
   Local Stream
   Local FastBuild = True
   Local FirstObj = True
   Local FirstMesh
   
   If cmd$ = "debug" Then
      Stream = ReadFile("Map\robot.txt")
   Else
      Stream = ReadFile(pak("Map\robot.txt"))
   End If
   While Not Eof(Stream)
      Level.Level = New Level
      Level\Datei$ = ReadString$(Stream)
      Level\px% = ReadInt(Stream)
      Level\py% = ReadInt(Stream)
      Level\pz% = ReadInt(Stream)
      Level\rx% = ReadInt(Stream)
      Level\ry% = ReadInt(Stream)
      Level\rz% = ReadInt(Stream)
      Level\alpha# = ReadFloat(Stream)
      
      If cmd$ = "debug" Then
         Level\ID% = LoadMesh("3D\" + Level\Datei$)
      Else
         Level\ID% = LoadMesh(pak("3D\" + Level\Datei$))
      End If
      ;EntityType Level\ID%,1
      ;EntityAlpha Level\ID%,Level\alpha#
      
      If FastBuild = True Then
         PositionMesh Level\ID%,Level\px%,Level\py%,Level\pz%
         RotateMesh Level\ID%,Level\rx%,Level\ry%,Level\rz%
         If FirstObj = True Then
            FirstMesh = Level\ID%
            FirstObj = False
         Else
            AddMesh Level\ID%,FirstMesh
            FreeEntity Level\ID%
            Delete Level
         End If   
      Else
         PositionEntity Level\ID%,Level\px%,Level\py%,Level\pz%
         RotateEntity Level\ID%,Level\rx%,Level\ry%,Level\rz%
      End If
   Wend
   CloseFile(Stream)
   EntityType FirstMesh,1
End Function


Folgendes Problem:

Wenn ich FastBuild ausschalte, so wird das Level richtig geladen, also alle Objekte sind an der richtigen Position. Schalte ich aber FastBuild ein, so stimmt nur ein Teil der Position, der Rest ist total verschoben. Ich kann mir aber nicht erklären woher das kommt, denn Irgendwelche Entitybefehle benutze ich ja nicht nach dem laden der Objekte.

VirtualDreams

BeitragMo, Nov 01, 2004 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm, keiner ne Idee? Könnte es evtl damit zusammenhängen das meine Mesh 0 dick sind. Glaub ich aber irgendwie weniger das es daran liegt...

VirtualDreams

BeitragMo, Nov 01, 2004 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatt keiner einen Rat hier?

VirtualDreams

BeitragDi, Nov 02, 2004 1:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal ein bissel rumprobiert und mir ist da etwas kurioses aufgefallen

Mit PositionMesh .... klappt alles, nur zeigen dann alle Objekte in eine richtung -> unerwünscht.
RotateMesh gleich danach verursacht diese sinnlosen verschiebungen.

Also wenn man PositionMesh und RotateMesh nicht nacheinander ausführen kann ist das reichlich schwach von BB3D!!!!
 

getlose

BeitragDi, Nov 02, 2004 2:06
Antworten mit Zitat
Benutzer-Profile anzeigen
komischer Code :)

Code: [AUSKLAPPEN]


   Local Stream
   Local FastBuild = True
   Local FirstObj = True
   Local FirstMesh


Sowas macht man üblicherweise am Anfang
des Programmes (genauso wie Global).
In deinem Fall sind die Variablen lokal,
was sie sowieso in einer Funktion sind, und somit
nicht außerhalb der Funktion exestieren.

was ist mit cmd$, hast das global gemacht ?
wenn nicht dann müsstest du es als parameter der
funktion übergeben. bsp.: LoadLevel(cmd$)

müsstest mal den gesammten code posten,
so kann man nicht viel zu sagen :)

VirtualDreams

BeitragDi, Nov 02, 2004 2:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

komischer Code?? Warum? ist doch nur sinnvoll es so zu machen (ne gewohnheit aus C++)

cmd$ ist global

Aber jetzt: Man muß erst RotateMesh und DANN PositionMesh ausführen. So funzt es einwandfrei (und ich hab wieder 500FPS mehr Very Happy)
Also kleine Sache große Wirkung.
 

getlose

BeitragDi, Nov 02, 2004 3:48
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist eigentlich volkommen egal ob man nun RotateMesh
oder PositionMesh zuerst anwendet ... :/

VirtualDreams

BeitragDi, Nov 02, 2004 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ebend scheinbar doch nicht egal wie ich gemerkt habe....
 

BIG BUG

BeitragDi, Nov 02, 2004 12:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei PositionEntity ist es egal, da hier ja der Bezugspunkt des Entities mitverschoben wird.
Bei PositionMesh wird aber anscheinend nur das Gittermodell verschoben, der Bezugspunkt bleibt wo er ist. Somit stimmt die Rotationsachse nicht mehr.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group