Prostorové úchyty
Souřadnice vybírají částice aktuálního světového tvaru, nikoli cílové místo. Nulový poloměr vybere nejbližší částici; kladný všechny uvnitř koule. Prázdná či překrývající se oblast selže. Vypnuté úchyty stále rezervují částice až do zničení. Změna hostitele nebo zapnutí zachytí aktuální offsety bez skoku.
Příklad#
anchor = soft.create_attachment(0, 0, 3.5, 0.3);
if (!is_undefined(anchor)) {
anchor.set_body(support);
// anchor.set_enabled(false);
// anchor.destroy();
}Použití a omezení#
Svět/Static/Kinematic předepisují polohy. Dynamický hostitel používá poddajný obousměrný úchyt s opačnými impulzy a rotací hostitele. Nejde o tuhý svar. Vypne se pouze kolizní dvojice Soft Body–hostitel; ostatní kolize zůstávají. Dynamické úchyty dělí krok světa nejvýše na 1/480 s, s limitem přibližně 64 úseků; měřte náročnost celé scény.
Zničený hostitel vypne úchyty, ale zachová výběr pro nové přiřazení. Zničení Soft Body je odstraní. Staré piny mřížky látky zachovávají původní jednosměrné chování a nemohou přepsat částice prostorových úchytů. Oblast uvolňujte samotným úchytem. Gettery vrací aktuální pozici, počet bodů, hostitele a stav zapnutí.
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
- 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 |
|---|---|---|
| JoltBBMODBox.create_attachment | JoltBBMODBox.create_attachment(x,y,z,radius=0) | Světové x/y/z a nezáporný radius, konečné a absolutně ≤ 1e9. radius=0 vybere nejbližší částici aktuální deformace, >0 kouli. Vrací JoltSoftBodyAttachment nebo undefined; prázdný/překrývající se výběr se odmítne i vůči vypnutému attachmentu. Nově vybrané částice jsou připnuté ke světu. |
| JoltBBMODCloth.create_attachment | JoltBBMODCloth.create_attachment(x,y,z,radius=0) | Světové x/y/z a nezáporný radius, konečné a absolutně ≤ 1e9. radius=0 vybere nejbližší částici aktuální deformace, >0 kouli. Vrací JoltSoftBodyAttachment nebo undefined; prázdný/překrývající se výběr se odmítne i vůči vypnutému attachmentu. Nově vybrané částice jsou připnuté ke světu. |
| JoltBBMODModel.create_attachment | JoltBBMODModel.create_attachment(x,y,z,radius=0) | Světové x/y/z a nezáporný radius, konečné a absolutně ≤ 1e9. radius=0 vybere nejbližší částici aktuální deformace, >0 kouli. Vrací JoltSoftBodyAttachment nebo undefined; prázdný/překrývající se výběr se odmítne i vůči vypnutému attachmentu. Nově vybrané částice jsou připnuté ke světu. |
| JoltBBMODSoftBody.create_attachment | JoltBBMODSoftBody.create_attachment(x,y,z,radius=0) | Světové x/y/z a nezáporný radius, konečné a absolutně ≤ 1e9. radius=0 vybere nejbližší částici aktuální deformace, >0 kouli. Vrací JoltSoftBodyAttachment nebo undefined; prázdný/překrývající se výběr se odmítne i vůči vypnutému attachmentu. Nově vybrané částice jsou připnuté ke světu. |
| JoltBBMODSphere.create_attachment | JoltBBMODSphere.create_attachment(x,y,z,radius=0) | Světové x/y/z a nezáporný radius, konečné a absolutně ≤ 1e9. radius=0 vybere nejbližší částici aktuální deformace, >0 kouli. Vrací JoltSoftBodyAttachment nebo undefined; prázdný/překrývající se výběr se odmítne i vůči vypnutému attachmentu. Nově vybrané částice jsou připnuté ke světu. |
| JoltSoftBodyAttachment.destroy | JoltSoftBodyAttachment.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. |
| JoltSoftBodyAttachment.get_body | JoltSoftBodyAttachment.get_body() | Živý odpovídající host nebo undefined (světové piny, zaniklý host či helper). |
| JoltSoftBodyAttachment.get_point_count | JoltSoftBodyAttachment.get_point_count() | Počet vybraných částic; 0 při neplatném helperu. Výběr přetrvává i při vypnutí. |
| JoltSoftBodyAttachment.get_position | JoltSoftBodyAttachment.get_position() | Světová pozice středu vybraných částic {x, y, z} v m; undefined při neplatném helperu. |
| JoltSoftBodyAttachment.is_enabled | JoltSoftBodyAttachment.is_enabled() | Boolean; false i při neplatném helperu. |
| JoltSoftBodyAttachment.is_valid | JoltSoftBodyAttachment.is_valid() | Boolean; helper i jeho soft body musí být živé. Po zničení soft body je helper neplatný. |
| JoltSoftBodyAttachment.set_body | JoltSoftBodyAttachment.set_body(body=undefined) | Živý JoltBody stejného světa nebo undefined pro světové piny; Boolean. Zachytí současné relativní pozice. Dynamic host používá dynamické kotvy, není to nekonečně těžký světový pin. |
| JoltSoftBodyAttachment.set_enabled | JoltSoftBodyAttachment.set_enabled(enabled) | Boolean převod, výsledek Boolean. Vypnutí uvolní částice, ale rezervace výběru zůstane; destroy ji odstraní. Zapnutí zachytí současné pozice. |