Měkká koule
Argumenty jsou střed x/y/z, poloměr, segments (výchozí 16) a volitelné počáteční nastavení. Koule je uzavřený povrchový plášť, nikoli tetraedrické těleso. Tlak a tuhost laďte společně podle velikosti a hmotnosti; přehnaný tlak může měkký plášť přefouknout.
Příklad#
ball = jolt_soft_body_create_sphere(0, 0, 3, 0.5, 24);
if (!is_undefined(ball)) {
ball.set_mass(2);
ball.set_stiffness(0.6);
ball.set_pressure(100);
ball.set_renderer(o_control_bbmod_renderer.renderer);
}Použití a omezení#
Na vytvořeném objektu nastavte hmotnost, tuhost, tlak, tlumení, tření, gravitaci, kolizní tloušťku a vrstvu. Ukotvení řeší prostorové úchyty a set_grab_enabled(true) povolí Carry. Chybné vytvoření vrací undefined; ověřte před voláním metod. BBMOD vykreslování registrujte jednou a objekt zrušte v Clean Up.
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
- 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
- Vítr
- 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_create_sphere | jolt_soft_body_create_sphere(x,y,z,radius,segments=16,settings=undefined) | Vrací JoltBBMODSphere nebo undefined v běžícím světě. Poloměr .05..100 m; celé segments 8..64, výchozí 16. Jde o úroveň geodetického dělení, ne přesný počet částic: 10*4^ceil(log2(segments/4))+2. Options mass=2, stiffness=.8, pressure=1000, damping=.1, friction=.5, gravity_factor=1, collision_thickness=.02, default layer. Thickness nesmí překročit radius. |
| JoltBBMODSphere.add_force | JoltBBMODSphere.add_force(x,y,z) | Konečné světové složky síly x/y/z v N; Boolean. Předává celkovou sílu nativnímu soft body, není to lokální výběr částic. Pro lokální účinek použij jolt_soft_body_force. |
| JoltBBMODSphere.destroy | JoltBBMODSphere.destroy() | Boolean, opakovaně true po úspěšném zničení. Nejprve odstraní fyziku, pak registraci rendereru, vlastní meshe/materiály, attachmenty, wind a force helpery. Vypůjčené materiály ani hostitelská tělesa neničí. |
| JoltBBMODSphere.draw | JoltBBMODSphere.draw() | Vykreslí aktuální deformovanou geometrii, pokud je objekt živý a viditelný; bez návratové hodnoty. draw je alias render. Při registraci v rendereru je navíc ručně nevolej. |
| JoltBBMODSphere.get_collision_thickness | JoltBBMODSphere.get_collision_thickness() | Aktuální poloměr částice v m; undefined při neplatném wrapperu, nativní chybu kontroluj zvlášť. |
| JoltBBMODSphere.get_damping | JoltBBMODSphere.get_damping() | Lineární tlumení: aktuální číslo v 1/s. Selhání: undefined (invalid wrapper); inspect native errors separately; neplatný objekt není nulové měření. |
| JoltBBMODSphere.get_friction | JoltBBMODSphere.get_friction() | Součinitel tření: aktuální číslo v bezrozměrné stupnici. Selhání: undefined (invalid wrapper); inspect native errors separately; neplatný objekt není nulové měření. |
| JoltBBMODSphere.get_gravity_factor | JoltBBMODSphere.get_gravity_factor() | Násobek gravitace: aktuální číslo v bezrozměrné stupnici. Selhání: undefined (invalid wrapper); inspect native errors separately; neplatný objekt není nulové měření. |
| JoltBBMODSphere.get_layer | JoltBBMODSphere.get_layer() | Vrací číselný handle vrstvy, nikoliv JoltLayer; undefined při neplatném wrapperu. |
| JoltBBMODSphere.get_mass | JoltBBMODSphere.get_mass() | Celková hmotnost: aktuální číslo v kg. Selhání: undefined; neplatný objekt není nulové měření. |
| JoltBBMODSphere.get_native_handle | JoltBBMODSphere.get_native_handle() | Platný soft-body handle, jinak 0. Nejde o JoltBody handle pro rigid metody. |
| JoltBBMODSphere.get_position | JoltBBMODSphere.get_position() | Světový průměr pozic částic {x, y, z} v m, nikoliv rigid transform; undefined při neplatném wrapperu. |
| JoltBBMODSphere.get_pressure | JoltBBMODSphere.get_pressure() | Vnitřní tlak uzavřeného povrchu: aktuální číslo v N/m². Selhání: undefined; neplatný objekt není nulové měření. Otevřená modelová látka nemá tlak; nenulové nastavení odmítne. |
| JoltBBMODSphere.get_stretch | JoltBBMODSphere.get_stretch() | Tuhost natažení: aktuální číslo v bezrozměrné stupnici. Selhání: undefined; neplatný objekt není nulové měření. |
| JoltBBMODSphere.get_vertex_position | JoltBBMODSphere.get_vertex_position(index) | Celočíselný index 0 ≤ index < vertex_count. Vrací světové {x, y, z} v m, při neplatném indexu/wrapperu undefined. |
| JoltBBMODSphere.get_volume | JoltBBMODSphere.get_volume() | Objem v m³ z aktuální deformace; otevřená modelová látka vrací 0. undefined při neplatném objektu nebo selhání čtení. |
| JoltBBMODSphere.is_valid | JoltBBMODSphere.is_valid() | Boolean podle wrapperu, handle a původního managed světa. Není to dotaz na existenci každé nativní částice; nemíchej ruční raw destrukci s managed vlastnictvím. |
| JoltBBMODSphere.render | JoltBBMODSphere.render() | Vykreslí aktuální deformovanou geometrii, pokud je objekt živý a viditelný; bez návratové hodnoty. draw je alias render. Při registraci v rendereru je navíc ručně nevolej. |
| JoltBBMODSphere.set_collision_thickness | JoltBBMODSphere.set_collision_thickness(v) | Poloměr kolize částice v m, konečný ≥0. Horní mez: poloměr Sphere, polovina nejmenšího rozměru Box, polovina nejkratší hrany modelu. Boolean; výchozí 0.02 Sphere/Box, model 0.01 nebo menší hodnota přizpůsobená hraně při vynechání options. |
| JoltBBMODSphere.set_damping | JoltBBMODSphere.set_damping(v) | Lineární tlumení: konečné číslo 0..1000 1/s; výchozí 0.1 Sphere, 0.5 Box, 0.2 closed model / 0.1 model cloth. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. |
| JoltBBMODSphere.set_debug | JoltBBMODSphere.set_debug(v) | Zapne diagnostické vykreslení, výchozí false; vrací true. Nemění fyziku ani životnost objektu. |
| JoltBBMODSphere.set_friction | JoltBBMODSphere.set_friction(v) | Součinitel tření: konečné číslo 0..1000 ; výchozí 0.5. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. |
| JoltBBMODSphere.set_gravity_factor | JoltBBMODSphere.set_gravity_factor(v) | Násobek gravitace: konečné číslo 0..1000 ; výchozí 1. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. |
| JoltBBMODSphere.set_layer | JoltBBMODSphere.set_layer(layer) | JoltLayer nebo kladný celočíselný handle vrstvy; vrstva musí existovat v tomto světě. Boolean. Nemění kolizní matici vrstev. |
| JoltBBMODSphere.set_mass | JoltBBMODSphere.set_mass(v) | Celková hmotnost: konečné číslo 0.01..1000000 kg; výchozí 2 (Sphere/Box), 2 closed model / 1 model cloth. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. |
| JoltBBMODSphere.set_material | JoltBBMODSphere.set_material(material) | BBMOD_BaseMaterial nebo undefined pro automatický vlastní oboustranný materiál. Boolean; uživatelský materiál se vypůjčuje a neničí, předchozí vlastní materiál se uvolní. |
| JoltBBMODSphere.set_pressure | JoltBBMODSphere.set_pressure(v) | Vnitřní tlak uzavřeného povrchu: konečné číslo 0..1000000 N/m²; výchozí 1000 Sphere, 50 closed model, 0 open model cloth. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. Otevřená modelová látka nemá tlak; nenulové nastavení odmítne. |
| JoltBBMODSphere.set_renderer | JoltBBMODSphere.set_renderer(renderer) | Živý BBMOD_BaseRenderer nebo undefined pro odpojení. Boolean; registruje/odregistruje tentýž objekt, nepřidávej jej navíc ručně. Vyžaduje živé soft body. |
| JoltBBMODSphere.set_stretch | JoltBBMODSphere.set_stretch(v) | Tuhost natažení: konečné číslo 0..1 ; výchozí 0.8 Sphere/closed model, 0.3 Box, 0.9 model cloth. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. |
| JoltBBMODSphere.set_visible | JoltBBMODSphere.set_visible(value) | Převod vstupu na Boolean, výchozí true. Vrací Boolean úspěchu. Skryje render, nevypne fyziku. |
| JoltBBMODSphere.update_mesh | JoltBBMODSphere.update_mesh(force=false) | Boolean úspěchu; force=false využívá cache fyzikální revize. force=true vynutí aktualizaci i při ručním native kroku. Pozice jsou již světové, nepřidávej znovu transformační matici tělesa. |