MeshWidth() liefert unsinnige Werte

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

x-pressive

Betreff: MeshWidth() liefert unsinnige Werte

BeitragMi, März 31, 2004 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennt jemand das Problem? Ich habe ein Mesh (mit ca. 60 Children) als .3ds von Cinema4D aus exportiert, mit Lithunwrap UV-Coords hinzugefügt und in Blitz als AnimMesh geladen.

Jetzt müsste ich dringend irgendwie an die Höhe/Breite des Meshes kommen, aber seltsamerweise liefert Blitz bei dem Mesh völlig unsinnige Werte (-200000). Ich habe nun wirklich keine Lust, durch jeden einzelnen Vertex alle Children zu loopen, um z.B. die Breite des Meshs herauszukriegen. Woran kann das denn liegen?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Suco-X

Betreff: .........

BeitragMi, März 31, 2004 4:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm....Es passiert oft das durch falsche exportiereinstellungen das Mesh überscaliert ist egal in was für eine Richtung. Wen dein Mesh das Problem hat, np. Scaliers doch mit BlitzBasic neu.
ScaleMesh mesh,(meshwidth(mesh)-meshwidth(mesh)+1,etc..,etc..
bye
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

lettorTrepuS

BeitragMi, März 31, 2004 10:15
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Markus2

BeitragMi, März 31, 2004 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Jedes Objekt ist einzelnd in der Hirachie und darum gibt dir MeshWidth
auch zu jedem dieser eine größe zurück .
Für Objekte mit Hirachie habe ich rekursive Funktionen benutzt .
z.B. Kannst du damit den Fx für alle Objekte in der Hirachie setzen und
so Smile
Objekte mit Hirachie immer mit LoadAnimMesh laden .

x-pressive

BeitragMi, März 31, 2004 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
FitMesh() habe ich schon benutzt -ich glaube, das hat auch in einer falschen Größe resultiert. Aber ich werde alle Methoden noch einmal durchgehen. Danke euch!
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Markus2

BeitragDo, Apr 01, 2004 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du es in Cimena gespeichert hast weiste doch die Maße ...

x-pressive

BeitragDo, Apr 01, 2004 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte das aber nicht hard-coden, denn dann darf ich später, wenn ich ein Objekt mal ändern sollte, auch den ganzen Code noch einmal anpassen. Lieber wäre mir deshalb eine 'softe', flexible Lösung.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

lettorTrepuS

BeitragDo, Apr 01, 2004 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

x-pressive

BeitragDo, Apr 01, 2004 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar, aber die eleganteste Lösung ist das doch auch nicht, wenn du einige dutzend oder gar hunderte Objekte hast.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

x-pressive

BeitragDo, Apr 01, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier eine akzeptable Lösung für jeden, der dieses Problem auch hat -drei Funktionen, die jeweils die Breite, Höhe und Tiefe eines Objekts liefern (als Parameter immer den aktuellen Skalierungsfaktor des Objekts mit angeben):

Code: [AUSKLAPPEN]

; --------------------------------------------------
; FUNCTION: RETURN WIDTH OF A MESH
; --------------------------------------------------
Function GetMeshWidth#(Obj%, objScale#=1.0)
   Local surf%,i%,j%
   minx#   =   10000
   maxx#   =   -10000

   For i = 1 to CountSurfaces(Obj)
      surf  = GetSurface(Obj,i)
      For j = 0 to CountVertices(surf)-1
         If Vertexx(surf,j)<minx Then minx=Vertexx(surf,j)
         If Vertexx(surf,j)>maxx Then maxx=Vertexx(surf,j)
      Next
   Next

   Return (Abs(maxx-minx) * objScale)
End Function


; --------------------------------------------------
; FUNCTION: RETURN HEIGHT OF A MESH
; --------------------------------------------------
Function GetMeshHeight#(Obj%, objScale#=1.0)
   Local surf%,i%,j%
   miny#   =   10000
   maxy#   =   -10000

   For i = 1 to CountSurfaces(Obj)
      surf  = GetSurface(Obj,i)
      For j = 0 to CountVertices(surf)-1
         If VertexY(surf,j)<miny Then miny=VertexY(surf,j)
         If VertexY(surf,j)>maxy Then maxy=VertexY(surf,j)
      Next
   Next

   Return (Abs(maxy-miny) * objScale)
End Function

; --------------------------------------------------
; FUNCTION: RETURN DEPTH OF A MESH
; --------------------------------------------------
Function GetMeshDepth#(Obj%, objScale#=1.0)
   Local surf%,i%,j%
   minz#   =   10000
   maxz#   =   -10000

   For i = 1 to CountSurfaces(Obj)
      surf  = GetSurface(Obj,i)
      For j = 0 to CountVertices(surf)-1
         If VertexZ(surf,j)<minz Then minz=VertexZ(surf,j)
         If VertexZ(surf,j)>maxz Then maxz=VertexZ(surf,j)
      Next
   Next

   Return (Abs(maxz-minz) * objScale)
End Function
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

lettorTrepuS

BeitragDo, Apr 01, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

lettorTrepuS

BeitragDo, Apr 01, 2004 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

x-pressive

BeitragDo, Apr 01, 2004 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Super-nützlich! Gleich mal ausprobieren...
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group