MeshWidth() liefert unsinnige Werte
Übersicht

![]() |
x-pressiveBetreff: MeshWidth() liefert unsinnige Werte |
![]() Antworten mit Zitat ![]() |
---|---|---|
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-XBetreff: ......... |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Objekte mit Hirachie immer mit LoadAnimMesh laden . |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du es in Cimena gespeichert hast weiste doch die Maße ... | ||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group