VFX Forge - v1.0.0
    Preparing search index...

    Effet d'explosion avec fragmentation géométrique et simulation physique réaliste.

    Implémente une séquence complète d'explosion en quatre phases : idle, preview, shaking et exploding. Utilise Cannon.js pour la physique, TransformEngine pour la fragmentation, et des systèmes de particules pour les effets visuels. Intègre des shaders thermiques progressifs.

    const effect = new ExplosionEffect(particleManager, environmentManager);
    effect.onApplied(mesh, material);
    effect.showPreview();
    effect.triggerExplosion();
    Index

    Constructors

    • Crée une instance de l'effet d'explosion.

      Parameters

      • particleManager: any

        Gestionnaire des systèmes de particules

      • environmentManager: any

        Gestionnaire d'environnement pour accès à la scène et caméra

      Returns ExplosionEffect

    Properties

    cameraShakeEnabled: boolean
    coolingDuration: number
    coolingRate: number
    defaultUniforms: {
        uIsExploding: { value: number };
        uProgress: { value: number };
        uTime: { value: number };
        uVelocityFactor: { value: number };
    }
    displayName: string
    enableFragmentCollisions: boolean
    enableGroundCollision: boolean
    environmentManager: any
    explosionCenter: any
    explosionForce: number
    explosionRadius: number
    explosionStartTime: number
    fragmentationMethod: string
    fragmentBodies: any[]
    fragmentCount: number
    fragmentFriction: number
    fragmentMass: number
    fragmentMeshes: any[]
    fragmentRestitution: number
    fragmentShape: string
    fragmentTrailSystems: any[]
    gravity: number
    groundBody: Body
    groundFriction: number
    groundMesh: any
    groundRestitution: number
    groundSize: number
    groundY: number
    hasFragments: boolean
    maxPreviewSeparation: number
    name: string
    originalCameraPosition: any
    originalObject: any
    originalObjectPosition: any
    originalObjectRotation: any
    particleManager: any
    particlesEnabled: boolean
    particleSystemIds: any[]
    phase: string
    phaseTime: number
    physicsEnabled: boolean
    physicsWorld: World
    shaders: { fragment: any; vertex: any }
    shakeDuration: number
    shakeFrequency: number
    shakeIntensity: number
    shakePhase: number
    shockwaveRing: any
    targetMesh: any
    transformEngine: TransformEngine
    uiMapping: {
        "cooling-rate": { param: string; transform: (value: any) => number };
        "explosion-force": { param: string; transform: (value: any) => number };
        "fragment-count": {
            param: string;
            transform: (value: any) => number;
            triggerPreview: boolean;
        };
        "fragment-shape": {
            param: string;
            transform: (value: any) => any;
            triggerPreview: boolean;
        };
        "fragmentation-method": {
            param: string;
            transform: (value: any) => any;
            triggerPreview: boolean;
        };
        "gravity-scale": { param: string; transform: (value: any) => number };
        "preview-separation": {
            param: string;
            transform: (value: any) => number;
            triggerPreview: boolean;
        };
    }
    velocityCoolingFactor: number
    dependencies: string[] = ...
    displayName: string = "Explosion"
    effectName: string = "explosion"

    Methods

    • Retourne au mode preview depuis n'importe quel état.

      Returns void

    • Nettoie tous les fragments existants et restaure l'objet original.

      Returns void

    • Configure le matériau avec les propriétés nécessaires pour l'effet.

      Parameters

      • material: Material

        Matériau à configurer

      • Optionaloptions: any = {}

        Options additionnelles

      Returns void

    • Crée les corps rigides physiques pour tous les fragments avec matériaux de contact.

      Returns void

    • Crée le corps rigide physique du sol (plan infini statique).

      Returns void

    • Crée le mesh visuel du sol avec shader procédural (grille et effet verre dépoli). Taille: 100x100 unités.

      Parameters

      • scene: Scene

        Scène où ajouter le mesh

      Returns void

    • Crée un anneau d'onde de choc qui s'étend radialement depuis le centre d'explosion. Auto-destruction après 1.5 seconde.

      Returns void

    • Détecte automatiquement le niveau du sol dans la scène en cherchant les plans les plus bas.

      Parameters

      • scene: Scene

        Scène à analyser

      Returns void

    • Nettoyage complet de toutes les ressources.

      Returns void

    • Libère le monde physique et tous les corps rigides.

      Returns void

    • Active ou désactive le système de particules.

      Parameters

      • Optionalenable: boolean = true

        État d'activation

      Returns void

    • Active ou désactive la simulation physique.

      Parameters

      • Optionalenable: boolean = true

        État d'activation

      Returns void

    • Exécute l'explosion physique. Applique les forces aux fragments, active les shaders thermiques, et crée tous les systèmes de particules.

      Parameters

      • Optionalcamera: Camera = null

        Caméra pour les effets de shake

      Returns void

    • Retourne les uniforms par défaut pour le shader.

      Returns any

      Uniforms clonés

    • Retourne les chemins des fichiers shader.

      Returns any

      Objet contenant vertex et fragment

    • Initialise le monde physique Cannon.js avec gravité et paramètres de collision.

      Returns void

    • Applique l'effet sur un objet 3D. Crée la fragmentation, initialise la physique et le sol. L'état initial est 'idle' avec l'objet visible et les fragments cachés.

      Parameters

      • object: Object3D

        Objet 3D à fragmenter

      • material: Material

        Matériau à appliquer aux fragments

      Returns void

    • Supprime complètement l'effet et restaure l'objet original.

      Parameters

      • object: Object3D

        Objet d'origine

      Returns void

    • Réinitialise l'effet à l'état idle. Conserve la fragmentation mais cache les fragments et affiche l'objet original.

      Returns void

    • Configure les dépendances après instanciation.

      Parameters

      • deps: { environmentManager?: any; particleManager?: any }

        Objet contenant les gestionnaires

        • OptionalenvironmentManager?: any

          Gestionnaire d'environnement

        • OptionalparticleManager?: any

          Gestionnaire de particules

      Returns void

    • Affiche le preview de fragmentation avec séparation contrôlée des fragments. Régénère automatiquement si nécessaire depuis l'objet original.

      Returns void

    • Applique une vibration à la caméra pour simuler l'impact de l'explosion.

      Parameters

      • camera: Camera

        Caméra à animer

      • Optionalintensity: number = 0.25

        Intensité initiale de la vibration

      • Optionalduration: number = 0.8

        Durée en secondes

      Returns void

    • Démarre la phase de tremblement précédant l'explosion. Cache les fragments et affiche l'objet original.

      Returns void

    • Déclenche la séquence complète d'explosion (réinitialisation physique puis tremblement).

      Returns void

    • Boucle de mise à jour principale. Gère les transitions d'états, la physique et les shaders.

      Parameters

      • material: Material

        Matériau principal

      • deltaTime: number

        Temps écoulé depuis la dernière frame (secondes)

      Returns void

    • Met à jour les uniforms des shaders thermiques de tous les fragments. Calcule le progrès de refroidissement global et le facteur de vélocité.

      Parameters

      • deltaTime: number

        Temps écoulé depuis la dernière frame (secondes)

      Returns void

    • Met à jour les paramètres depuis l'interface utilisateur. Déclenche automatiquement le preview si nécessaire.

      Parameters

      • material: Material

        Matériau à mettre à jour

      • controlId: string

        Identifiant du contrôle UI

      • value: any

        Nouvelle valeur

      Returns void

    • Met à jour la simulation physique et synchronise les meshes avec leurs corps rigides.

      Parameters

      • deltaTime: number

        Temps écoulé depuis la dernière frame (secondes)

      Returns void

    • Met à jour l'animation de tremblement. Déclenche l'explosion à la fin.

      Parameters

      • deltaTime: number

        Temps écoulé depuis la dernière frame (secondes)

      • Optionalcamera: Camera = null

        Caméra pour le shake

      Returns void