Vítr
Na Soft Body existuje jeden pomocník; opakované vytvoření jej vrátí bez zdvojnásobení účinku. Směr se normalizuje a určuje, kam vzduch proudí ve světových osách. Rychlost je v m/s. get_velocity vrací rychlost vzduchu, nikoli částic. Vítr běží automaticky ve fyzikálních krocích včetně přímého jolt_step. Nepotřebuje apply každý snímek.
Příklad#
wind = jolt_soft_body_wind(cloth);
wind.set_direction(1, 0, 0);
wind.set_speed(5);
wind.set_gust_strength(0.3);
wind.set_turbulence(0.2);
wind.set_gust_frequency(0.35);
wind.set_drag(1.2);
wind.set_enabled(true);Použití a omezení#
Rozsahy: rychlost 0..100, síla poryvů/turbulence 0..1, frekvence 0..10 Hz, odpor 0..5. Nulová rychlost/odpor odstraní účinek. Vypnutí pozastaví čas poryvů, nikoli existující pohyb látky. Síly používají promítnutou aktuální plochu trojúhelníků a relativní rychlost vzduchu z obou stran. Vítr rovnoběžný s rovnou látkou má malý účinek.
Piny/připojené částice nejsou poháněné přímo. Poryvy jsou plynulé deterministické vlny v simulačním čase. Nepřidává se závětří za zdmi, simulace tekutiny ani globální větrné oblasti. JOLT_DEBUG_FORCES nebo set_debug(true) ukáže směr; zničení vlastníka a jolt_stop pomocníka uklidí.
Přehled API#
Signatury veřejných funkcí a metod. Metody volejte na vrácené instanci; parametry s výchozí hodnotou jsou volitelné.
Související návody#
- Převod staršího kódu
- Výběr měkkého tělesa
- Měkká koule
- Objemový měkký kvádr
- Import uzavřeného modelu
- Látkový model a pojmenované úchyty
- Prostorové úchyty
- Oddělená vizuální síť
- Lokální síla a impulz
- Přenášení měkkých těles
Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| jolt_soft_body_wind | jolt_soft_body_wind(soft) | Živé JoltBBMODCloth/JoltBBMODSoftBody. Vrací Wind nebo undefined. Jeden helper na těleso, opakované volání vrací stávající. Při vytvoření je enabled=true: +X, 5 m/s, gust 0.3, turbulence 0.2, frequency 0.35 Hz, drag 1.2. |
| JoltSoftBodyWind.destroy | JoltSoftBodyWind.destroy() | Boolean, opakované zničení je bezpečné. Odstraní pouze helper; nezničí soft body ani hostitelský rigid body. Wind vypne proudění, Force zruší čekající požadavek, Attachment uvolní svůj výběr částic. |
| JoltSoftBodyWind.get_debug | JoltSoftBodyWind.get_debug() | Uložený Boolean diagnostiky; sám neověřuje platnost. |
| JoltSoftBodyWind.get_direction | JoltSoftBodyWind.get_direction() | Kopie uloženého jednotkového světového {x, y, z}; jde o konfigurační getter, sám neověřuje platnost helperu. |
| JoltSoftBodyWind.get_drag | JoltSoftBodyWind.get_drag() | Koeficient odporu: uložená konfigurace v bezrozměrné stupnici; sám neověřuje platnost. Nejde o okamžitou rychlost s poryvem. |
| JoltSoftBodyWind.get_enabled | JoltSoftBodyWind.get_enabled() | Boolean; false pokud je helper neplatný nebo vypnutý. |
| JoltSoftBodyWind.get_gust_frequency | JoltSoftBodyWind.get_gust_frequency() | Frekvence poryvů: uložená konfigurace v Hz; sám neověřuje platnost. Nejde o okamžitou rychlost s poryvem. |
| JoltSoftBodyWind.get_gust_strength | JoltSoftBodyWind.get_gust_strength() | Síla poryvů: uložená konfigurace v bezrozměrné stupnici; sám neověřuje platnost. Nejde o okamžitou rychlost s poryvem. |
| JoltSoftBodyWind.get_speed | JoltSoftBodyWind.get_speed() | Základní rychlost vzduchu: uložená konfigurace v m/s; sám neověřuje platnost. Nejde o okamžitou rychlost s poryvem. |
| JoltSoftBodyWind.get_turbulence | JoltSoftBodyWind.get_turbulence() | Turbulence: uložená konfigurace v bezrozměrné stupnici; sám neověřuje platnost. Nejde o okamžitou rychlost s poryvem. |
| JoltSoftBodyWind.get_velocity | JoltSoftBodyWind.get_velocity() | Okamžitý světový vektor proudění {x, y, z} v m/s včetně poryvů, při vypnutí nulový. undefined při neplatném helperu; jednotlivé native chyby je nutné číst zvlášť. |
| JoltSoftBodyWind.is_valid | JoltSoftBodyWind.is_valid() | Boolean; helper i jeho soft body musí být živé. Po zničení soft body je helper neplatný. |
| JoltSoftBodyWind.set_debug | JoltSoftBodyWind.set_debug(v) | Boolean převod; výchozí false. Vrací true/false, vyžaduje živý helper. Pouze diagnostika. |
| JoltSoftBodyWind.set_direction | JoltSoftBodyWind.set_direction(x,y,z) | Konečné světové x/y/z, absolutně ≤ 1e9, délka ≥ 1e-6. Normalizuje směr; Boolean, při neplatném helperu false. |
| JoltSoftBodyWind.set_drag | JoltSoftBodyWind.set_drag(v) | Koeficient odporu: konečné 0..5 , výchozí 1.2. Boolean; uloží se až po úspěšném nativním nastavení. |
| JoltSoftBodyWind.set_enabled | JoltSoftBodyWind.set_enabled(v) | Boolean převod, výchozí true; Boolean úspěchu. Nastavení přetrvává přes kroky, vypnutí nezničí helper. |
| JoltSoftBodyWind.set_gust_frequency | JoltSoftBodyWind.set_gust_frequency(v) | Frekvence poryvů: konečné 0..10 Hz, výchozí 0.35. Boolean; uloží se až po úspěšném nativním nastavení. |
| JoltSoftBodyWind.set_gust_strength | JoltSoftBodyWind.set_gust_strength(v) | Síla poryvů: konečné 0..1 , výchozí 0.3. Boolean; uloží se až po úspěšném nativním nastavení. |
| JoltSoftBodyWind.set_speed | JoltSoftBodyWind.set_speed(v) | Základní rychlost vzduchu: konečné 0..100 m/s, výchozí 5. Boolean; uloží se až po úspěšném nativním nastavení. |
| JoltSoftBodyWind.set_turbulence | JoltSoftBodyWind.set_turbulence(v) | Turbulence: konečné 0..1 , výchozí 0.2. Boolean; uloží se až po úspěšném nativním nastavení. |