3D Frustum-Ebene Schneidung in Lua

  • Hallo zusammen,

    in meinem letzten Mathethread habe ich über die 2D Ebene-Ebene Schneidung geschrieben, mit Lua Implementierung und tiefer mathematischer Analyse. Basierend auf der gleichen Mathematik möchte ich euch nun die 3D Frustum-Ebene Schneidung vorstellen.

    https://twitter.com/rplgn/status/1230073312816005120

    Link zur MTA Resource: https://github.com/quiret/mta_lua_3d_math
    Link zum Thread auf dem offiziellen MTA Forum: https://forum.mtasa.com/topic/122576-s…g-in-mtasa-lua/
    Promotional Video: https://www.youtube.com/watch?v=RQy3Q4Xe110

    Beschreibung:
    Ein Frustum dient zur Modellierung der Fluchtpunktperspektive. Graphics APIs wie Direct3D oder OpenGL bieten eine schnelle Schnittstelle zur Hardwareimplementierung einer Frustum-Ebene Schneidung. Doch um die Grundlagen des Problems zu verstehen, auf dem die Graphics Industrie ihre GPUs aufbaut, lohnt es sich die Mathematik dahinter anzuschauen und spielerisch mit Software zu lernen.

    Der Quellcode besteht aus einem Frustum-Ebene Schneidungs Solver (math_shared.lua), einer RenderWare DFF Ladungsumgebung (rw_shared.lua) und vieler niedlicher Hilfsstrukturen (Ladebalken für das Zeichnen, vorimplementierten Befehlen für die Zeichnung).

    Benutzung der MTA Resource:
    Einfach in den Server Resources Ordner reinpacken mit dem Namen "math_3d_nonlin" und dann in der Serverconsole tippen:

    Code
    refresh
    start math_3d_nonlin

    Tutorial: Wie man ein Frustum mit Ebenen schneidet
    Falls du die MTA Resource oben heruntergeladen hast, dann können wir ein wenig mit dieser herumspielen. Erstelle zuerst eine neue Lua Datei namens "_math_test.lua" mit folgendem Inhalt:

    Folgende Zeile muss in meta.xml ergänzt werden:

    XML
    <script type="server" src="_math_test.lua" />

    Verbindet euch mit eurem MTA Server und startet die Resource neu. Dann führt den Befehl "testdraw" aus. Ihr solltet ungefähr Folgendes sehen:

    Durch Ändern der Ebenen in der Variable "test_planes" kannst du den Inhalt der Zeichnung ändern die dir durch "testdraw" dargestellt wird.

    Nützliche Befehle:

    • draw_model: Zeichne eine DFF und lade sie zu allen Spielern hoch
    • send_bbuf: Zeichne die Szene die am Anfang von math_server.lua definiert worden ist


    Viel Spaß mit dem Code! 8):D

    Habt Ihr Fragen zur Mathematik oder zur Implementierung? Ich möchte euch so gut wie möglich in diesem Thread beraten.

    Developer of Magic.TXD

    5 Mal editiert, zuletzt von The_GTA (23. Februar 2020 um 15:17) aus folgendem Grund: Bilder eingefügt, Video eingefügt

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!