# Objects drawn as 3D models instead of sprite billboards (build_object_library.py, plan.md BB3D-*).
# name  sheet  icons  scenes (comma-separated, under speedyblupi-data/originals)  [options]
# Sheets: element, object-m, explo, blupi, blupi1 (mobile-eggbert/Content/icons/<sheet>.png).
# Options: yaw=STEP (also try turned about the vertical), vflip=1 (also upside down), camera=PART
# (a part of the camera's name without spaces, e.g. 2 for "Caméra 2"), recolour=R,G,B>R,G,B[;...],
# min_iou=X (icons matching worse stay billboards), shift=N (each icon's offset within +-N pixels),
# drop=I,J (leave out the scene's top-level parts I, J: 0-based, cameras and lights counted),
# alpha=X (a sprite pixel counts when more opaque than X, default 0.5: for half-transparent sprites).
treasure    element 0-11    Blupi/coffre.rd4
egg         element 21-28   Blupi/oeuf.rd4    yaw=5
exit        element 29-36   Blupi/fleche.rd4  yaw=5 tone=1.30,3
# The death angel (element 230-241: the Clear2 death's soul rising 300 px, Decor::BlupiDead,
# VoyageStep cycling the icons every 2 ticks; owner 2026-11-02): Blupi/blupi-ange.rd4 turning 30
# degrees a frame as its wings beat (IoU 0.965-0.982); drawn half transparent in the sheet (alpha).
angel       element 230-241 Blupi/blupi-ange.rd4 alpha=0.25 yaw=15 tone=1.03,-27
# The glue death (element 168-171; Q-006): Blupi/glu.rd4's struggling pose (IoU 0.80-0.85). The
# scene renders yellow; the sprites were recoloured green afterwards (their strands and puddle
# painted), so the yellow becomes the sprites' green here too, its flat parts and its face
# texture's skin (texrecolour: the white eyes and black lashes kept). The game lays his own model
# flattened under it as the puddle.
glu168      element 168-171 Blupi/glu.rd4 min_iou=0.5 recolour=1,1,0>0.42,0.67,0.04 texrecolour=1,1,0>0.42,0.67,0.04
projectile  element 176     Blupi/balle-glu.rd4
ammo        element 177     Blupi/munitions-glu.rd4
drink       element 178     Blupi/bouteille.rd4
# Enemies: the icons their tables use (ObjectIcons.cpp, the patrol tables per direction and turn).
# The creature: 242-246 with its eyes (creature1y.rds, eyeballs scaled by xyzS), 247-251 without.
creature    element 242-251 Blupi/creature1.rds,Blupi/creature2.rds,Blupi/creature3.rds,Blupi/creature4.rds,Blupi/creature5.rds,Blupi/creature1y.rds tone=0.61,51
# The mine spins in its sprites (yaw); the hanging mine's icons 48-56 are 12-20 upside down.
mine        element 12-20,48-56 Blupi/bombe.rd4 yaw=5 vflip=1 tone=0.71,24
# The wasp's sprites were rendered by "Caméra 2" (IoU 0 with "Caméra Jeu"); the builder finds it.
wasp        element 195-207 Blupi/guepe.rd4,Blupi/guepe-tourne.rd4
# The follow enemies' spinning star; its camera looks 6.7 degrees down.
follow      element 256-265 Blupi/bombe-follow.rd4 yaw=5
# Pickups and doors' keys (sources found by survey.py icons, element_icons.csv).
key1        element 209-215 Blupi/cle1.rd4 tone=0.70,26
key2        element 216-222 Blupi/cle2.rd4 tone=0.70,26
key3        element 223-229 Blupi/cle3.rd4 tone=0.78,16
secretexit  element 122-128 Blupi/cle.rd4 tone=0.74,16
dynamite    element 252-255 Decor/dynamite.rd4
invert      element 187-194 Blupi/panneau-invert.rd4 tone=0.82,-13
lollipop    element 136-143 Blupi/sucette.rd4 tone=0.90,-22
# Type 16's icons 69-77: the moving mine.
movingmine  element 69-77   Blupi/bombe-move.rd4 tone=0.83,24
# The bird: free-form sections are right-handed (its profile's head under its eyes), and its
# raised wings are the scene's last key (the builder adds the end frame); its turning icons need
# headings between 15-degree steps (icon 112: 0.91 at a 15-degree step, 0.97 at 40 degrees).
bird        element 90-121  Blupi/oiseau.rd4 yaw=5 tone=0.85,32
# The fish (its head comes out somewhat larger than in the sprites: plan.md BB3D-032).
fish        element 78-88   Blupi/poisson.rd4 yaw=5 tone=1.03,27
# The bulldozer (types 4 and 32): its blade's hazard stripes are a texture map in a rectangle
# domain of a free-form. Icon 68 (in type 32's tables) is the helicopter without Blupi.
bulldozer   element 57-67   Blupi/tracks-profil.rd4 yaw=5
helicopter  element 68      Blupi/helico-seul2.rd4 tone=0.72,62
# Types 200-203 (the decoys, blupi.png / blupi1.png icons 257-262): the mine in Blupi's colours.
decoy       blupi   257-262 Blupi/bombe.rd4 yaw=5 recolour=1,0.038,0.095>1,1,0 tone=0.93,-11
decoygreen  blupi1  257-262 Blupi/bombe.rd4 yaw=5 recolour=1,0.038,0.095>0.5,1,0 tone=0.91,-4
# The tentacle (type 53, explo.png icons 70-86, 64 game pixels each): one Studio 5 scene per icon.
tentacle    explo   70-86   Decor/tentacule/tenta01.rds,Decor/tentacule/tenta02.rds,Decor/tentacule/tenta03.rds,Decor/tentacule/tenta04.rds,Decor/tentacule/tenta05.rds,Decor/tentacule/tenta06.rds,Decor/tentacule/tenta07.rds,Decor/tentacule/tenta08.rds,Decor/tentacule/tenta09.rds,Decor/tentacule/tenta10.rds,Decor/tentacule/tenta11.rds,Decor/tentacule/tenta12.rds,Decor/tentacule/tenta13.rds,Decor/tentacule/tenta14.rds,Decor/tentacule/tenta15.rds,Decor/tentacule/tenta16.rds,Decor/tentacule/tenta17.rds tone=0.51,56
# Big decor (explo.png, BigDecor cells): the Blupi statue (icon 89).
statue      explo   89      Decor/palais/statue.rds tone=1.09,-30
# The green pillars (icons 66-68, 144 pixels), each sprite placed a few pixels off its cell's centre.
pillar      explo   66-68   Decor/smooth/colonne1.rds,Decor/smooth/colonne2.rds,Decor/smooth/colonne3.rds shift=10 tone=0.50,38
# Big decor from Explo/ (survey.py icons --sheet explo.png --folders Explo).
bd_plante1a   explo   16      Explo/plante1a.rd4 shift=6
bd_plante1b   explo   17      Explo/plante1b.rd4 shift=6
bd_plante1c   explo   18      Explo/plante1c.rd4 shift=6
bd_plante1d   explo   19      Explo/plante1d.rd4 shift=6
bd_plante2a   explo   20      Explo/plante2a.rd4 shift=6 tone=0.81,-2
bd_plante2b   explo   21      Explo/plante2b.rd4 shift=6 tone=0.79,-2
bd_plante2c   explo   22      Explo/plante2c.rd4 shift=6 tone=0.79,-2
bd_maison     explo   26      Explo/maison.rd4 shift=6
bd_cabane     explo   27      Explo/cabane.rd4 shift=6
bd_meca1      explo   28      Explo/meca1.rd4 shift=6 tone=1.01,36
bd_meca2      explo   29      Explo/meca2.rd4 shift=6 tone=0.90,38
bd_meca3      explo   30      Explo/meca3.rd4 shift=6
bd_meca4      explo   31      Explo/meca4.rd4 shift=6 tone=1.09,19
bd_enfant01   explo   36      Explo/enfant01.rd4 shift=6 tone=0.95,-19
bd_enfant02   explo   37      Explo/enfant02.rd4 shift=6 tone=0.94,-20
bd_enfant03   explo   38      Explo/enfant03.rd4 shift=6 tone=0.94,-18
bd_enfant04   explo   39      Explo/enfant04.rd4 shift=6 tone=0.94,-19
bd_enfant05   explo   40      Explo/enfant05.rd4 shift=6 tone=0.89,-19
bd_enfant06   explo   41      Explo/enfant06.rd4 shift=6 tone=0.87,-17
bd_enfant07   explo   42      Explo/enfant07.rd4 shift=6 tone=0.92,-25
bd_enfant08   explo   43      Explo/enfant08.rd4 shift=6 tone=0.89,-17
bd_enfant10   explo   44      Explo/enfant10.rd4 shift=6 tone=0.95,-22
bd_enfant11   explo   45      Explo/enfant11.rd4 shift=6
bd_enfant12   explo   46      Explo/enfant12.rd4 shift=6 tone=0.90,-14
bd_enfant13   explo   47      Explo/enfant13.rd4 shift=6 tone=0.96,-6
# Grass (icons 23-25, the commonest big decor): its blades come out wider than the sprites'
# (IoU 0.41-0.49; plan.md BB3D-050).
bd_plante3a   explo   23      Explo/plante3a.rd4 shift=6
bd_plante3b   explo   24      Explo/plante3b.rd4 shift=6 tone=0.98,-11
bd_plante3c   explo   25      Explo/plante3c.rd4 shift=6
# The green spiky plant (69), the column (87) and the fountain bowl (88).
bd_vase1      explo   69      Decor/smooth/vase1.rds tone=0.50,42
bd_big0108    explo   87      Decor/palais/big0108.rds
bd_big02      explo   88      Decor/palais/big02.rds
# The fan (the terrain's fan cells 126-137, VIS-0127): the original scene the four directions' tiles
# were rendered from; it matches the up fan's frames 132-134 (IoU 0.993); the other directions are
# it turned about the view axis, as the game draws them (block models, GalaxyEggbertGame).
fan         object-m 132-134 Decor/ventillo-h.rd4
# Terrain pillars drawn as their original scenes (VIS-0077/0078, block models): the stone column 76
# (Decor/support1.rd4, IoU 0.92; its speckled granite is a procedural texture, flat here) and the
# golden branched support 77 (Decor/support2.rd4, IoU 0.995).
column      object-m 76      Decor/support1.rd4
support     object-m 77      Decor/support2.rd4
# More terrain pillars (VIS-0376/0400 era, block models): the barrel stack 377 (Decor/pile1.rd4, IoU
# 0.93) and the white column 399 (Decor/palais/big0108.rds, 0.99, the scene of the big decor column).
# Not yet: 375 and 376 (the turned and twisted wooden columns): no source found (Decor/colonne1.rds is
# a plain textured cube; Decor/enfant22.rd4 a striped stick of other colours).
pillar377   object-m 377     Decor/pile1.rd4
pillar399   object-m 399     Decor/palais/big0108.rds
# The palace's balustrade 398 (a balcony's edge; a plate before): Decor/palais/mur06.rds (IoU 0.99),
# a front model turned toward the cell's open side, the drop it rails.
rail398     object-m 398     Decor/palais/mur06.rds
# The steel girder 201 (passable decor; Decor/structure1.rd4, IoU 0.79: the truss frame), drawn as a
# lattice box: the frame on every side of the cell not shared with another girder (BlockModels.hpp).
girder201   object-m 201     Decor/structure1.rd4
# The electrode 238-242 (Decor/electro.rd4: the ball on its spring; owner 2026-11-04, Q-005): its sparks
# were painted on the renders, so the game draws them from the sprites as a camera-facing decal.
electro238  object-m 238-242 Decor/electro.rd4 tone=0.89,45
# The hanging bar (owner 2026-11-02: in 3D, not a plate), block models drawn as two pipes along
# their row (BarRows.hpp): 138 with its ceiling mounts (Decor/barre.rd4, IoU 0.89); 202, shown where
# no block is over the bar (Decor::AdaptMidBorder), the scene's pipe alone without the two spheres
# and four cylinders of the mounts (its top-level parts 3-4 and 6-9; IoU 0.83).
barre       object-m 138     Decor/barre.rd4 tone=0.75,14
barreplain  object-m 202     Decor/barre.rd4 drop=3,4,6,7,8,9 tone=0.74,14
# The teleporters (owner 2026-11-02: one cell, as its tile: the device its top third, the tip under
# it), one scene a letter: 330 alpha (teleporteur1.rd4), 331 beta (2), 332 delta (4), 333 chi (3).
teleporter1 object-m 330     Decor/teleporteur1.rd4 tone=0.72,16
teleporter2 object-m 331     Decor/teleporteur2.rd4 tone=0.73,16
teleporter4 object-m 332     Decor/teleporteur4.rd4 tone=0.72,16
teleporter3 object-m 333     Decor/teleporteur3.rd4 tone=0.72,17
# The yellow trestle 199 (passable decor; Decor/support3.rd4, IoU 0.989), a block model turned to
# face the room as the teleporters (BlockModels.hpp kFrontModelIcons).
support3    object-m 199     Decor/support3.rd4 tone=1.01,6
# The posts 182 (blue, Decor/porte1.rd4, IoU 0.956) and 183 (the golden baluster, Decor/porte2.rd4,
# 0.981), block models in place of the textured pillar boxes. Not the cave rocks 285-303
# (Decor/grotte*.rd4, 0.81-0.91): close to 6,000 cells in the worlds, one draw each.
post182     object-m 182     Decor/porte1.rd4 tone=0.79,17
pillar183   object-m 183     Decor/porte2.rd4 tone=0.76,13
# The treasure doors 421-439 (440 lies outside the sheet): the golden post 183's scene with a grey
# plate carrying the number of treasures that opens it; the plate is a decal (sign_decals.py --plate).
treasure421 object-m 421-439 Decor/porte2.rd4 min_iou=0.5 tone=0.76,13
# The coloured doors 334 red, 335 green, 336 blue (owner 2026-11-02: the red, green and blue posts
# in 3D), block models: Decor/porte-r.rd4, porte-v.rd4, porte-b.rd4 (rouge, vert, bleu; IoU 0.983).
door334     object-m 334     Decor/porte-r.rd4 tone=0.71,22
door335     object-m 335     Decor/porte-v.rd4 tone=0.71,22
door336     object-m 336     Decor/porte-b.rd4 tone=0.79,14
# The vanishing saucer (Temp, 324-329; owner 2026-11-02: in 3D, not a billboard): Decor/temporaire.rd4,
# its frames 0, 2, 3 the icons 324-326 (IoU 0.99, 0.99, 0.91).
temp324     object-m 324-329 Decor/temporaire.rd4 min_iou=0.6 tone=0.72,16
# The crusher (317-323; owner 2026-11-02: the blue spring and the red block striking down, in 3D):
# Decor/aplatisseur.rd4, a piston hanging from the ceiling of its cell (IoU 0.95-0.975, survey;
# tone calibrated, error 32.1 -> 20.1).
crusher317  object-m 317-323 Decor/aplatisseur.rd4 min_iou=0.6 tone=0.66,3
# The spring (211, always bouncing through table_ressort's 209-213 in the original, Decor.cpp:926-929;
# owner 2026-11-02: a cube with a sprite texture): Decor/ressort.rd4 (IoU 0.979-0.98; tone 34.3 -> 23.5).
spring211   object-m 209-213 Decor/ressort.rd4 min_iou=0.6 tone=0.73,10
# The saw (378-383, the stopped 379; owner 2026-11-02: a rock cube showed in its place), drawn standing
# in its own cell: Decor/scie.rd4, its six icons at IoU 0.986-0.990 (mirrored).
saw378      object-m 378-383 Decor/scie.rd4 min_iou=0.6 tone=1.6,60
# The signs (owner's decision MR-0006: their Ray Dream models with what was painted on them as a decal,
# tools/rd4_to_gltf/sign_decals.py): the missions' 174-181 Decor/world1.rd4, the worlds' world2a.rd4,
# the completed worlds' world2b.rd4 (IoU 0.995; tone calibrated without the painting).
sign174      object-m 174-181 Decor/world1.rd4 tone=0.50,70
worldsign158 object-m 158-165,309,411-415,184 Decor/world2a.rd4 tone=0.50,70
worlddone166 object-m 166-173,310,416-420 Decor/world2b.rd4 tone=0.50,48
# The clay bridge (364, shaking 365-366, crumbling 367-372: Tables::table_bridge; owner 2026-11-02: a
# plain brown slab, a lump of clay over it as it crumbled): Decor/grotte-fragile1.rd4, its frames
# 1-8 the nine icons (IoU 0.858-0.903; tone 17.2 -> 8.2). Part 2, a teal 'Flat Surface' under the
# camera's frame, is left out: it showed in 3D as cyan balls in the gap under the bridge. The game
# draws the row of lumps four times across the cell (BlockModels.hpp kBridgeRows).
# After export: the originals' clay texture over it from above (Q-003, the owner's wish; no scene uses
# Decor/terre.tif): python3 tools/rd4_to_gltf/top_texture.py --model avatars3d/objects/bridge364_grotte-fragile1
#   --texture ../speedyblupi-data/originals/Decor/terre.tif
bridge364   object-m 364-372 Decor/grotte-fragile1.rd4 drop=2 tone=0.84,-3
# The slime drip (BD-0033): Decor/goutte/goutte01-04.rds, 404-408 (its smallest drops 409-410 have
# no scene and are not drawn).
drip404     object-m 404-410 Decor/goutte/goutte01.rds,Decor/goutte/goutte02.rds,Decor/goutte/goutte03.rds,Decor/goutte/goutte04.rds min_iou=0.3 tone=0.57,68
# The lightning's emitter (304; owner 2026-11-02: the lightning in 3D): Decor/eclair.rd4 (IoU 0.94,
# tone 29.5 -> 19.9). The bolt between two emitters (305-307) has no scene.
emitter304  object-m 304 Decor/eclair.rd4 tone=0.75,13
# OR-0050's sweep (plans/audit/model_sources.md): the saws' switch and the conveyor (stretched along
# Z to the cell's depth, BlockModels.hpp ModelDepthScale). Not the column 375: Decor/colonne1.rds
# is a cube carrying a painted column (an embedded image and mask), its sprite already.
switch384   object-m 384-385 Decor/interrupteur.rd4 tone=0.70,15
conveyor311 object-m 311-316 Decor/chenille.rds tone=0.66,11
# The platform lift (type 1, object-m 29; was the tile cut into a bar and a stem, LiftVisual.hpp):
# Decor/techno29.rd4 (IoU 0.94), drawn at the lift's place in the model pass.
lift29      object-m 29      Decor/techno29.rd4
