Mesh
Vytvoří trojúhelníkovou, potenciálně konkávní Static kolizní geometrii.
Mesh je určen pro levely, místnosti, skály a další detailní nepohyblivou geometrii. Jolt mesh nemá objem jako convex solid, je jednostranný a pro pohyblivé objekty dražší a méně robustní; použijte primitivum, Convex nebo Compound.
Syntaxe#
jolt_mesh_create_static(vertices, indices, x=0, y=0, z=0, options=undefined)vertices#
Pole 3 až 65536 lokálních bodů ve tvaru [x,y,z] nebo {x,y,z}; všechny komponenty jsou konečné. x,y,z creatoru je world-space origin přičtený k vertexům, nikoli automatický geometrický střed.
indices, triangles a winding#
[a0,b0,c0, a1,b1,c1, ...]- Každý index je integer 0..array_length(vertices)-1.
- Povoleno je 1..131072 triangles, tedy 3..393216 indexů; počet musí být násobek tří.
- Winding je counter-clockwise při pohledu z přední strany.
- Simulace i veřejný raycast jsou jednostranné; raycast používá IgnoreBackFaces.
- Jolt odstraní duplicitní a degenerované triangles. Alespoň jeden použitelný triangle musí zůstat; wrapper neprovádí další simplification ani convex decomposition.
Options, návrat a omezení#
Vrací Static JoltBody nebo undefined. Relevantní options jsou rotation, rotation_euler, friction, restitution, layer a sensor. mass, velocity a jiné Dynamic-only položky selžou a creator body odstraní. Mesh podporuje filtering, sensor eventy, kontakty a raycasty. Debug draw kreslí metadata edges; nad 2048 triangles používá pravidelný stride.
Reusable JoltShape#
var shape = jolt_shape_mesh(vertices, indices, cache_key=undefined);
var level = shape.create_static(x, y, z, options);shape.create_dynamic() a create_kinematic() vracejí undefined. jolt_shape_load() podporuje Mesh .jcol; resource je doporučen pro více instancí stejné mapy.
BBMOD#
var shape = jolt_shape_mesh_from_bbmod(model);
var body = shape.create_static(0, 0, 0, {friction:0.8});Použijte načtený BBMOD model před zmrazením jeho bufferů.
Low-Level / Advanced API#
Ergonomický array creator neexistuje. jolt_world_geometry_create() vyžaduje interní versionovaný base64 payload a soukromý jolt_world_shape_command() je pouze transport reusable shape vrstvy.
Příklad#
var vertices = [[-3,-3,0], [3,-3,0], [3,3,0], [-3,3,0]];
var indices = [0,1,2, 0,2,3]; // CCW shora, normála +Z
var level_mesh = jolt_mesh_create_static(vertices, indices, 0, 0, 0, {
friction:0.85
});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_mesh_create_static | jolt_mesh_create_static(vertices = [[-0.5,-0.5,0],[0.5,-0.5,0],[0.5,0.5,0],[-0.5,0.5,0]], indices = [0,1,2,0,2,3], x = 0, y = 0, z = 0, options = undefined) | Statický triangle mesh; místní vertices/indices, default XY čtverec se2 trojúhelníky. Limity jako jolt_shape_mesh, pozice default 0. JoltBody/undefined; žádná Dynamic/Kinematic varianta. |