Skip to content

🪧 Schild- & Hängeschild-Text-Culling (Minecraft 26.3) ​

In Minecraft 26.3 verfügen Schilder und Hängeschilder über zweiseitige Textfunktionen (SignTextSlot.FRONT und SignTextSlot.BACK). Standardmäßig verarbeitet, kernt und rendert die Schrift-Rendering-Engine des Spiels Text-Quads, Farbstoffe und Leuchtkonturen für beide Seiten gleichzeitig – selbst wenn der Spieler frontal auf ein an der Wand befestigtes Schild blickt.

Camera Culling löst dies durch Berechnung von Normalenvektor-Skalarprodukten ($\vec{N} \cdot \vec{V}$) und Schnelldurchläufen für leere Texte, um ungesehene oder leere Schildtextflächen auszublenden.


📋 Schild-Culling-Kurzübersicht ​

EigenschaftWert
Ziel-PipelineBlockEntityRenderDispatcher.tryExtractRenderState
Abschaltwinkel Vorder-/RückseiteSkalarprodukt-Schwellenwert $\pm 0.05$
Leerer SchnelldurchlaufÜberspringt leere Flächen ohne Textzeichen automatisch
Unterstützte BlöckeStehende Schilder, Wandschilder, Deckenhängeschilder, Wandhängeschilder

📐 Trigonometrisches Normalenvektor-Skalarprodukt ​

Um festzustellen, ob die Vorder- oder Rückseite eines Schildes zur Kamera zeigt, berechnet Camera Culling das Skalarprodukt zwischen dem Flächennormalenvektor $\vec{N} = (N_x, N_z)$ des Schildes und dem Vektor vom Schildmittelpunkt zur Kamera $\vec{V} = (V_x, V_z)$:

$$V_x = X_{\text{cam} - (X_{\text{Schild} + 0.5), \quad V_z = Z_{\text{cam} - (Z_{\text{Schild} + 0.5)$$

1. Wandschilder (WallSignBlock.FACING) & Wandhängeschilder (WallHangingSignBlock.FACING) ​

Der Normalenvektor wird direkt aus den Schrittweiten der Block-Direction abgeleitet: $$N_x = \text{facing.getStepX()}, \quad N_z = \text{facing.getStepZ()}$$

2. Stehende Schilder (StandingSignBlock.ROTATION) & Deckenhängeschilder (CeilingHangingSignBlock.ROTATION) ​

Die Drehung wird als Ganzzahl von $0 \dots 15$ dargestellt. Der Winkel $\theta$ im Bogenmaß berechnet sich wie folgt: $$\theta = \left(\frac{\text{rotation} \times 360^\circ}{16}\right) \times \frac{\pi}{180}$$ $$N_x = -\sin\theta, \quad N_z = \cos\theta$$

3. Sichtbarkeitsbestimmung ​

Das Skalarprodukt $D$ wertet den Beobachtungswinkel aus: $$D = N_x V_x + N_z V_z$$

  • Auswertung der Vorderseite: Wird ausgeblendet, wenn $D < -0.05$ (Kamera befindet sich hinter der Schildfläche).
  • Auswertung der Rückseite: Wird ausgeblendet, wenn $D > 0.05$ (Kamera befindet sich vor der Schildfläche).

⚡ Schnelldurchlauf für leere Seiten (Fast-Pass) ​

Wenn ein Spieler nur Text auf eine Seite eines Schildes geschrieben hat (oder ein Schild ohne Text als Barriere oder Dekoration platziert hat), prüft Camera Culling die Textzeilen:

java
public static boolean isTextEmpty(SignText text) {
    if (text == null) return true;
    for (Component msg : text.getMessages(false)) {
        if (msg != null && !msg.getString().trim().isEmpty()) {
            return false;
        }
    }
    return true;
}

Leere Flächen werden sofort verworfen, ohne Trigonometrie oder Vektorskalarprodukte zu berechnen.


🔗 Verwandte Seiten ​

Official documentation & web portal for Dasik Igaijinn mods.