Sehe ich die Blitz3D-Hierarchie so richtig?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

PacMani

Betreff: Sehe ich die Blitz3D-Hierarchie so richtig?

BeitragDo, Nov 27, 2014 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mal etwas in den Quellcode von Blitz3D reingesehen, um die Hierarchie von Meshes, Surfaces, Pivots und Entities zu kapieren. Bin immer wieder mal mit den Begriffen durcheinander gekommen. Anscheinend komme ich am Ende auf folgendes Ergebnis, sehe ich das richtig?
+--- = Subklasse die erbt, - = Eigenschaft von der Klasse

Code: [AUSKLAPPEN]
+---Entity
    - Name
    - Visibility
    - Position, Scale, Rotation
    +---Object (nicht direkt benutzbar in B3D)
        - Collision
        - Order
        - Animation
        +---Pivot
        +---Model
            - Brush
            - Color
            - Alpha
            - Shininess
            - Texture
            - Blend
            - FX
            - Fading
            +---MeshModel (Mesh in B3D)
                - Surfaces
                - Transform
+---Surface
    - Name
    - Vertices
    - Triangles
    - Color


Ich finde die Hierarchie irgendwie sehr verwirrend an einigen Stellen. Anscheinend kann man einem Model eine Farbe geben, aber einem darin befindlichen Surface wieder eine ganz andere Farbe. Wie berechnet B3D dann eigentlich die endgültige Farbe, oder hab ich im Code etwas falsch verstanden?

Silver_Knee

BeitragFr, Nov 28, 2014 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiß werden die Farben multipliziert (wenn man 255 als 100% rechnet) von innen nach außen.
Sagen wir du hast ene weiße (255,255,255) Textur auf nem Model liegen und hast dann aber auf einem Surface Cyan (0,255,255) und dem ganzen Model Gelb (255,255,0). Dann erscheint dieses Surface Grün (0,255,0) und der Rest cyan. Wenn die Textur selbst nicht weiß sondern zum beispiel Magenta (255,0,255) ist, dann wäre das Surface Schwarz und er Rest rot.
 

Kruemelator

BeitragFr, Nov 28, 2014 7:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Surfaces können nicht nur eigene Farben haben, sondern einen eigenen Brush, also auch eigenen Blendmode, Texturen, Alpha und Effekte. Dies funktioniert aber nur wenn man PaintSurface benutzt.
Wenn man einem Entity eine Textur gibt, dann hat die Surface-Textur keinen Effekt mehr.
Surfaces gehören zum Mesh. Ein Mesh ohne Surfaces ist ein "leeres" Mesh. Sie können auch keine eigenen Transformationseigenschaften haben.

Animationen gehören zum Mesh. Order gehört zum Entity.

Pivot ist ein Entity OHNE Mesh. Es kann auch keines erzeugt werden wie bei CreateMesh(). Pivots können aber auch bei Kollisionen genutzt werden. Es gibt also kein Entity welches keinen Kollisionstype erhalten kann.

Parent/Child Beziehungen für Entitys hast du vergessen. Da gibt es z.B. einen Trick um Blitz3D schneller zu machen wenn man viele Entitys hat und diese verstecken muss.
Code: [AUSKLAPPEN]
;schneller
Global ghostentity = CreatePivot()
HideEntity ghostentity
EntityParent entity,ghostentity

;langsamer
HideEntity entity

Außerdem werden die Eigenschaften des Parent genutzt.

PacMani

BeitragFr, Nov 28, 2014 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Das trifft alles ganz gut meine Beobachtungen. Parent/Child habe ich nicht abgebildet, nur die Klassenhierarchive im B3D-Sourcecode, die schon einiges verrät Smile

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group