Tattoo test bed: Quaternius v3-v6 bakes + Lena pipeline (bake, de-mirror, re-UV, viewers)

Session 2026-07-23/24 additions on top of the existing Quaternius bed:
- bake_lena.gd: 6-piece bake on QuatSkin Lena (chiefs-mark/iron-spine arms,
  voyagers/storm-bearer legs, star-eye chest, hearth-warmth back); global-axis
  wrap frame + 3cm junction blend kill the elbow split line
- demirror_lena.gd: tri-level split of mirror-shared limb UVs (arms 100%->0%,
  legs 99%->5% crotch-only residual)
- reuv_lena.gd: Quaternius-style semantic re-UV (16 islands, cylinder limbs +
  cylinder head/torso with planar caps) + texture transfer; fixes armpit/chin/
  cheek planar smears; single 4096 atlas, per-side tattoos native
- main_lena / anim_lena viewers (18 UAL clips, U light toggle) + probes + shots

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Can Narin
2026-07-24 00:47:12 +03:00
commit ce4c4e7d13
105 changed files with 5090 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
# Prints image size + ink bounding box (brightness < 0.75) for each v3 mark.
extends SceneTree
const MARKS := "C:/Users/CAN/tinqs-ltd/docs/conceptart/generated-images/tattoo-marks/"
const FILES := [
"mark-01-chiefs-mark_arm_v3.png",
"mark-10-iron-spine_arm_v3.png",
"mark-02-voyagers-current_leg_v3.png",
"mark-07-storm-bearer_leg_v3.png",
"mark-06-hearth-warmth_back_v3.png",
"mark-09-star-eye_chest_v3.png",
]
func _init() -> void:
for f in FILES:
var img := Image.load_from_file(MARKS + f)
img.convert(Image.FORMAT_RGBA8)
var w := img.get_width()
var h := img.get_height()
var minx := w
var maxx := -1
var miny := h
var maxy := -1
for y in h:
for x in w:
var c := img.get_pixel(x, y)
if (c.r + c.g + c.b) / 3.0 < 0.75:
minx = mini(minx, x)
maxx = maxi(maxx, x)
miny = mini(miny, y)
maxy = maxi(maxy, y)
var bw := maxx - minx + 1
var bh := maxy - miny + 1
print("%s %dx%d bbox x %d..%d y %d..%d (%dx%d, aspect h/w %.2f)" %
[f, w, h, minx, maxx, miny, maxy, bw, bh, float(bh) / float(bw)])
quit()