feat(09): Studs материал + окрашиваемые блоки + лего-сет #20

Merged
min merged 5 commits from feat/studs-material-09 into main 2026-05-31 11:17:07 +00:00
Owner

Задача 09 «Studs материал»: material:studs (per-face UV, объём+тени, сочные цвета, настройка размера, не растягивается при scale), окрашиваемый блок studs-block (per-instance color), лего-сет 19 моделей, color-пикер блоков, вики #56. Текстуры доставляются на S2 отдельно (.gitignore).

Задача 09 «Studs материал»: material:studs (per-face UV, объём+тени, сочные цвета, настройка размера, не растягивается при scale), окрашиваемый блок studs-block (per-instance color), лего-сет 19 моделей, color-пикер блоков, вики #56. Текстуры доставляются на S2 отдельно (.gitignore).
min added 4 commits 2026-05-31 10:42:22 +00:00
Задача 09 «Studs материал» (лего-кружки):
- PrimitiveManager: material 'studs' — diffuse-текстура (серые кружки) × цвет
  меша + normal map (выпуклость). Тайлинг _studsTiling по размеру меша
  (STUD_UNIT=1, GRID=4), пересчёт в _recreateMesh при ресайзе. _studsDims на меше.
- InspectorPanel: «Studs» 5-й материал в палитре примитивов.
- BlockTypes: studs-block ('Окрашиваемые', colorable:true, normal, defaultColor).
- BlockManager: per-instance color через ThinInstance color buffer
  (thinInstanceSetBuffer('color'), useVertexColors) — тысячи блоков любых цветов
  один draw call. addBlock(x,y,z,type,color), _setBlockColorAt/setBlockColor,
  serialize/loadFromArray с color, batch flush.
- GameRuntime: scene.setColor для блока (ref 'block:x,y,z'), spawn block с color.
- ScriptSandboxWorker: spawn блока прокидывает color.
- ModelTypes: лего-сет 19 compound-моделей (кирпичи/плиты/скаты/дерево/куст/
  дом/машина/ступеньки/человечек) — все части material:'studs'.
- Вики: карточка g5 #56 «Лего-полигон» + урок guide-lego.

Текстуры: public/kubikon-assets/materials/studs_{diffuse,normal}.png (в .gitignore,
доставить на S2 build/ вручную). Проверено визуально: куб 6×6 кружков, 2×2 блока
разных цветов, лего-дом/дерево/машина.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Текстура studs v4: круглые кружки с усиленным объёмом (normal strength 4.0,
  запечённый блик/тень) + контактная тень от каждого кружка. Фон 0.97 — цвет
  остаётся сочным. emissive 45% от цвета на примитивах (Roblox-look).
- Версионные имена файлов (studs_v4_*) — обход browser-кэша Babylon.
- Color-пикер блоков: в палитре при выборе окрашиваемого блока (studs-block)
  под категориями появляется ряд из 8 лего-цветов + input «свой цвет».
  BabylonScene.setActiveBlockColor → addBlock(...,color) при постановке.
- DEV-хук ?dev=<имя> (localhost): грузит /dev-<имя>.json в редактор для
  локального теста без БД (на проде неактивен).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Тайлинг studs на кубе через faceUV (per-face) — кружки одного размера на
  всех гранях, не растягиваются на длинной стороне (баг на брусе 10×1×1).
  _studsCubeFaceUV считает UV каждой грани по её реальным размерам.
- studDensity — плотность кружков (множитель): инспектор «Размер studs»
  Крупные(0.5)/Средние(1)/Мелкие(2)/Меньше(4). Для пола мелкие, для кирпича
  крупные. Проброс через data/_studsDims/faceUV/_studsTiling, сериализация,
  updateInstance(patch.studDensity)→пересоздание меша.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix(09): studs не растягиваются при scale-drag примитива
All checks were successful
CI / Lint (pull_request) Successful in 1m7s
CI / Build (pull_request) Successful in 1m58s
CI / Secret scan (pull_request) Successful in 2m31s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
ea80ec3aa6
При scale-гизмо mesh.scaling тянул faceUV → studs превращались в полосы.
Фикс: во время drag прячем studs-текстуру (плоский цвет), в dragEnd меш
пересоздаётся с правильным faceUV. _recreateMesh для studs пересоздаёт
материал заново (свежий тайлинг + восстановление текстуры).
GizmoController: + onDrag (live) колбэк для scale.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
min added 1 commit 2026-05-31 11:04:14 +00:00
merge main into feat/studs-material-09
All checks were successful
CI / Lint (pull_request) Successful in 1m6s
CI / Build (pull_request) Successful in 1m56s
CI / Secret scan (pull_request) Successful in 2m33s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
7c95072e4f
min merged commit dd5099280e into main 2026-05-31 11:17:07 +00:00
min deleted branch feat/studs-material-09 2026-05-31 11:17:07 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rublox/studio#20
No description provided.