跳一跳UV面切分改用blob+gradient自适应算法

重构alpha.rs洋红去背预设参数
新增jump_hop_atlas_slicing.rs独立切图模块
修复jump_hop.rs调用链接入新切图算法
This commit is contained in:
2026-06-10 19:49:39 +08:00
parent e29992cf01
commit 95df62fc82
4 changed files with 1826 additions and 124 deletions

View File

@@ -141,9 +141,12 @@ fn remove_generated_asset_sheet_green_screen_background(
return;
}
let alpha = pixels[pixel_index * 4 + 3];
// 中文注释:绿幕模式下 alpha 携带背景/前景信息;洋红/青色等非绿幕模式下
// 图像通常无 alpha 通道(全部为 255因此仅依赖 key_score 判断,不关 alpha。
let ignore_alpha = !options.key_color.is_green_screen();
let strong_candidate = alpha < 40
|| key_scores[pixel_index] >= GENERATED_ASSET_SHEET_HARD_GREEN_SCREEN_SCORE
|| (alpha < 224
|| ((ignore_alpha || alpha < 224)
&& key_scores[pixel_index] > GENERATED_ASSET_SHEET_GREEN_SCREEN_MIN_SCORE)
|| (options.remove_near_white_background && white_scores[pixel_index] > 0.32);
if !strong_candidate {
@@ -196,13 +199,16 @@ fn remove_generated_asset_sheet_green_screen_background(
let key_score = key_scores[next_pixel_index];
let white_score = white_scores[next_pixel_index];
let hint = background_hints[next_pixel_index];
// 中文注释:非绿幕模式(洋红/青色等)下图像无 alpha 通道,不依赖 alpha 判断边界。
let ignore_alpha = !options.key_color.is_green_screen();
let reachable_soft_edge = hint > 0.08
&& alpha < 224
&& (ignore_alpha || alpha < 224)
&& (key_score > 0.04
|| (options.remove_near_white_background && white_score > 0.08)
|| alpha < 180);
let key_background = key_score >= GENERATED_ASSET_SHEET_HARD_GREEN_SCREEN_SCORE
|| (alpha < 224 && key_score > GENERATED_ASSET_SHEET_GREEN_SCREEN_MIN_SCORE);
|| ((ignore_alpha || alpha < 224)
&& key_score > GENERATED_ASSET_SHEET_GREEN_SCREEN_MIN_SCORE);
if alpha < 40
|| key_background
|| (options.remove_near_white_background && white_score > 0.32)