Mittelpunktbestimmung und Durchsichtigkeit

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

NewSamurai

Betreff: Mittelpunktbestimmung und Durchsichtigkeit

BeitragMi, Jun 30, 2004 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mach es kurz:
1. Gibt es in BB3D ne Funktion mit der man den Mittelpunkt eines
Objektes herausb bekommt?
2. Kann man einzeln, gezeichnete Polys nachträglich durchsichtig
machen?

NewSamurai

eizdealer

Betreff: Re: Mittelpunktbestimmung und Durchsichtigkeit

BeitragMi, Jun 30, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
NewSamurai hat Folgendes geschrieben:
Ich mach es kurz:
1. Gibt es in BB3D ne Funktion mit der man den Mittelpunkt eines
Objektes herausb bekommt?
2. Kann man einzeln, gezeichnete Polys nachträglich durchsichtig
machen?

NewSamurai


1. EntityX/Y/Z ? Oder du rechnest die X/Y/Z Werte aller Vertices zusammen und teilst sie durch die Anzahl.

2. Nachdem sie gerendert wurden? Nein.
 

Dreamora

BeitragMi, Jun 30, 2004 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittelpunkt: Die lokalen koordinaten aller vertices addieren, durch die anzahl vertices dividieren und dann zu den globalen koordinaten des objektes hinzuzählen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragMi, Jun 30, 2004 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder MinMax der Vertices ermitteln und davon die Mitte nehmen,
ist evtl. besser weil man so keinen Überlauf bekommt .
Wenn du in einem Objekt Editor das Mesh zentriest wäre
der Mittelpunkt 0,0,0
Bei EntityXYZ gibt es noch dem Parameter Global .

Gibt noch Vertex Alpha , aber da mußte noch den EntityFx
zu einschalten .
Oder du löscht einfach das Triangle vom Mesh .
Denke aber eher du möchtest die Outline vom Polygon sehen , oder ?


Code: [AUSKLAPPEN]

Function CenterMesh(Entity,cx,cy,cz)

 ;MR 08.01.2003

 ;Center a Mesh
 ; on X If cx=True
 ; on Y If cy=True
 ; on Z If cz=True

 If Entity=0 Then Return 0

 ;----------------------------------- Find Mesh Min Max XYZ

 Local mx1#= 3.4*10^38,my1#= 3.4*10^38,mz1#= 3.4*10^38
 Local mx2#=-3.4*10^38,my2#=-3.4*10^38,mz2#=-3.4*10^38
 Local i,vi,s
 Local check=False

 If CountSurfaces(Entity)>0 Then
  For i=1 To CountSurfaces(Entity)
   s=GetSurface(Entity,i)
   If CountVertices(s)=>1 Then
    For vi = 0 To CountVertices(s)-1
     If VertexX(s,vi)<mx1 Then mx1=VertexX(s,vi)
     If VertexY(s,vi)<my1 Then my1=VertexY(s,vi)
     If VertexZ(s,vi)<mz1 Then mz1=VertexZ(s,vi)
     If VertexX(s,vi)>mx2 Then mx2=VertexX(s,vi)
     If VertexY(s,vi)>my2 Then my2=VertexY(s,vi)
     If VertexZ(s,vi)>mz2 Then mz2=VertexZ(s,vi)
     check=True
    Next
   EndIf ;Count Vert
  Next
 EndIf ;Count Surf

 If check=False Then Return 0

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

 Local mw#,mh#,md#,xp#,yp#,zp#

 mw# = Abs(mx2-mx1)
 mh# = Abs(my2-my1)
 md# = Abs(mz2-mz1)

 If CountSurfaces(Entity)>0 Then
  For i=1 To CountSurfaces(Entity)
   s=GetSurface(Entity,i)
   If CountVertices(s)=>1 Then
    For vi = 0 To CountVertices(s)-1
     xp#=VertexX(s,vi)
     yp#=VertexY(s,vi)
     zp#=VertexZ(s,vi)
     If cx<>0 Then xp#=xp#-mx1-mw#/2
     If cy<>0 Then yp#=yp#-my1-mh#/2
     If cz<>0 Then zp#=zp#-mz1-md#/2
     VertexCoords s,vi,xp#,yp#,zp#
    Next
   EndIf ;Count Vert
  Next
 EndIf ;Count Surf

 Return True
 
End Function

Vertex

BeitragMi, Jun 30, 2004 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
1. möp, tut es MeshWidth, Height, Depth / 2 + EntityX, Y, Z nicht auch?
2. Wenn Du einzelne Polys durchscichtig machen willst, müssen sie als einzelnes Surface vorliegen. Dieses kannst du mit einem entsprechend transparenten Brush belegen.
mfg olli
 

Dreamora

BeitragMi, Jun 30, 2004 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
1. OK präzisieren wir: "massemittelpunkt" oder volumenmittelpunkt?
für volumen reichen die width etc
für masse musste aufsummieren und teilen. und nen überlauf bringste da kaum hin sonst müsste das model übergrösse haben oder mehr vertices als ein einzelnes model überhaupt haben sollte
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragMi, Jun 30, 2004 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@Vertex
1. nicht immer ...

@Dreamora
Nur in der Theorie , wenn alle Punkte z.B. links
von der Objekt Achse sind bekommste einen falschen Wert zurück
weil BB von der Objekt Achse aus rechnet und dann stimmt
MeshWidth eben nicht mehr , irgendwie war das so ...

Gibt ja auch Objekte an/um die 1 MB und da kann das schon passieren,
wollte es ja auch nur erwähnt haben ...
 

NewSamurai

BeitragFr, Jul 02, 2004 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
THX für die schnellen und guten Antworten

NewSamurai
 

lettorTrepuS

BeitragFr, Jul 02, 2004 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group