evomeme 0.1.7 → 0.1.9-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas-public/app.js +8517 -1692
- package/dist/canvas-public/assets/presets/catalog.json +47 -0
- package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
- package/dist/canvas-public/color-key-worker.js +280 -0
- package/dist/canvas-public/image-canvas-size-editor.js +254 -0
- package/dist/canvas-public/index.html +226 -119
- package/dist/canvas-public/perfect-pixel-worker.js +499 -0
- package/dist/canvas-public/smart-split.js +1 -1
- package/dist/canvas-public/styles.css +3902 -1225
- package/dist/canvas-public/tile-map-editor.js +2120 -0
- package/dist/canvas-public/ui-controls.js +95 -0
- package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
- package/dist/canvas-public/vendor/pixi.min.js +2340 -0
- package/dist/index.js +32263 -4187
- package/dist/stage-blender/bake_materials.py +102 -0
- package/dist/stage-blender/export_scene.py +275 -0
- package/dist/stage-blender/preview_camera.py +90 -0
- package/dist/stage-blender/repair_mesh.py +112 -0
- package/dist/stage-public/app.js +759 -0
- package/dist/stage-public/baked/bakePilot.js +44 -0
- package/dist/stage-public/baked/bakedScene.js +129 -0
- package/dist/stage-public/baked/sceneAppearance.js +225 -0
- package/dist/stage-public/baked/sceneCamera.js +45 -0
- package/dist/stage-public/comparison-contract.js +28 -0
- package/dist/stage-public/delivery.html +4 -0
- package/dist/stage-public/delivery.js +17 -0
- package/dist/stage-public/godot/appearance.gd +170 -0
- package/dist/stage-public/godot/preview.gd +79 -0
- package/dist/stage-public/index.html +141 -0
- package/dist/stage-public/review-app.js +289 -0
- package/dist/stage-public/review-runtime.js +63 -0
- package/dist/stage-public/review.css +24 -0
- package/dist/stage-public/review.html +47 -0
- package/dist/stage-public/scene-runtime.js +212 -0
- package/dist/stage-public/sceneContractRuntime.js +235 -0
- package/dist/stage-public/styles.css +328 -0
- package/dist/stage-public/three-appearance.js +104 -0
- package/dist/stage-public/vendor/three170/LICENSE +21 -0
- package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
- package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
- package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
- package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
- package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
- package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
- package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
- package/dist/tile-transition-mask.svg +40 -0
- package/package.json +77 -69
- package/skills/evomeme-canvas/SKILL.md +52 -0
- package/skills/evomeme-canvas/agents/openai.yaml +7 -0
- package/skills/evomeme-cover/SKILL.md +1 -1
- package/skills/evomeme-game-maker/SKILL.md +79 -8
- package/skills/game-asset-align/SKILL.md +45 -0
- package/skills/game-asset-align/agents/openai.yaml +8 -0
- package/skills/game-asset-align/references/alignment-contract.md +61 -0
- package/skills/game-asset-align/references/blender-scene-pipeline.md +45 -0
- package/skills/game-asset-align/references/canonical-package.md +26 -0
- package/skills/game-asset-align/references/engine-capabilities.md +14 -0
- package/skills/game-asset-align/references/lightweight-review.md +32 -0
- package/skills/game-asset-align/references/repair-policy.md +30 -0
- package/skills/game-asset-align/references/tool-contract.md +39 -0
- package/skills/game-asset-align/references/visual-review.md +26 -0
- package/skills/game-asset-image-generator/SKILL.md +1 -1
- package/skills/godot-3d-game/SKILL.md +39 -0
- package/skills/godot-3d-game/agents/openai.yaml +8 -0
- package/skills/godot-3d-game/references/alignment-gates.md +26 -0
- package/skills/godot-3d-game/references/appearance-alignment.md +52 -0
- package/skills/godot-3d-game/references/build-and-qa.md +22 -0
- package/skills/godot-3d-game/references/canonical-asset-runtime.md +27 -0
- package/skills/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
- package/skills/godot-3d-game/references/physics-colliders.md +13 -0
- package/skills/godot-3d-game/references/project-structure.md +22 -0
- package/skills/godot-3d-game/references/skeleton-animation.md +16 -0
- package/skills/threejs-3d-game/SKILL.md +6 -2
- package/skills/threejs-3d-game/references/engine-asset-pipeline.md +52 -15
- package/dist/canvas-public/sequence-sheet.js +0 -59
|
@@ -38,19 +38,48 @@
|
|
|
38
38
|
<button type="button" class="ghost-btn" id="inspector-close" title="取消选中">×</button>
|
|
39
39
|
</header>
|
|
40
40
|
<div class="inspector-body" id="inspector-body"></div>
|
|
41
|
+
<div
|
|
42
|
+
class="inspector-resize-handle"
|
|
43
|
+
id="inspector-resize-handle"
|
|
44
|
+
role="separator"
|
|
45
|
+
aria-label="调整左侧栏宽度"
|
|
46
|
+
aria-orientation="vertical"
|
|
47
|
+
tabindex="0"
|
|
48
|
+
></div>
|
|
41
49
|
</aside>
|
|
42
50
|
<div class="canvas-main">
|
|
43
51
|
<div class="canvas-shell">
|
|
44
52
|
<div class="canvas-toolbar">
|
|
53
|
+
<span class="product-brand">EVOMEME</span>
|
|
45
54
|
<div class="project-bar">
|
|
46
55
|
<span class="project-name" id="project-name" title="">未打开工程</span>
|
|
47
56
|
<button type="button" class="ghost-btn" id="switch-project-btn">切换工程</button>
|
|
48
57
|
</div>
|
|
49
58
|
<div class="toolbar-actions" id="toolbar-actions">
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
<div class="toolbar-primary" role="tablist" aria-label="画布功能分类">
|
|
60
|
+
<button type="button" class="toolbar-primary-button toolbar-category-tab" id="tool-add-assets" role="tab" aria-selected="false" aria-expanded="false" aria-controls="toolbar-asset-tools"><span>添加素材</span><i class="toolbar-category-indicator" aria-hidden="true"></i></button>
|
|
61
|
+
<button type="button" class="toolbar-primary-button toolbar-category-tab" id="toolbar-image-tab" role="tab" aria-selected="false" aria-expanded="false" aria-controls="toolbar-image-tools"><span>图片生成</span><i class="toolbar-category-indicator" aria-hidden="true"></i></button>
|
|
62
|
+
<button type="button" class="toolbar-primary-button toolbar-category-tab" id="toolbar-video-tab" role="tab" aria-selected="false" aria-expanded="false" aria-controls="toolbar-video-tools"><span>视频生成</span><i class="toolbar-category-indicator" aria-hidden="true"></i></button>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="toolbar-ribbon" id="toolbar-ribbon" hidden>
|
|
65
|
+
<div class="toolbar-ribbon-panel" id="toolbar-asset-tools" role="tabpanel" hidden>
|
|
66
|
+
<button type="button" class="toolbar-ribbon-tool toolbar-ribbon-action" id="tool-local-assets" title="从本地选择图片或视频"><span>本地导入</span></button>
|
|
67
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-official-assets" title="拖到画布指定位置打开官方素材库"><span>官方素材</span></button>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="toolbar-ribbon-panel" id="toolbar-image-tools" role="tabpanel" hidden>
|
|
70
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-image-gen" title="拖到画布指定位置创建图片生成元素"><span>图片生成</span></button>
|
|
71
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-game-ui-gen" title="拖到画布指定位置创建游戏 UI 组件生成元素"><span>游戏 UI 组件生成</span></button>
|
|
72
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-four-view" title="拖到画布指定位置创建空白四视图生成元素"><span>角色四视图生成</span></button>
|
|
73
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-eight-direction" title="拖到画布指定位置创建空白八方图生成元素"><span>角色八方图生成</span></button>
|
|
74
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-seamless-tile-gen" title="拖到画布指定位置创建无缝地块生成元素"><span>无缝地块生成</span></button>
|
|
75
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-tile-transition-atlas" title="拖到画布指定位置创建无缝地块集生成元素"><span>无缝地块集生成</span></button>
|
|
76
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-tile-map" title="先设置文件夹和瓦片分辨率,再创建地图"><span>地图绘制</span></button>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="toolbar-ribbon-panel" id="toolbar-video-tools" role="tabpanel" hidden>
|
|
79
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-video-gen" title="拖到画布指定位置创建视频生成元素"><span>视频生成</span></button>
|
|
80
|
+
<button type="button" class="toolbar-ribbon-tool" id="tool-animation-gen" title="拖到画布指定位置创建序列帧动画生成管线"><span>序列帧动画生成</span></button>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
54
83
|
</div>
|
|
55
84
|
</div>
|
|
56
85
|
<div class="canvas-viewport" id="viewport">
|
|
@@ -65,28 +94,110 @@
|
|
|
65
94
|
<div class="ctx-menu" id="ctx-menu" hidden>
|
|
66
95
|
<button type="button" data-action="copy">复制</button>
|
|
67
96
|
<button type="button" data-action="paste" hidden>粘贴</button>
|
|
68
|
-
<button type="button" data-action="
|
|
97
|
+
<button type="button" data-action="export-tile-map" hidden>导出 PNG</button>
|
|
98
|
+
<button type="button" data-action="image-canvas-size" hidden>图片大小编辑</button>
|
|
69
99
|
<button type="button" data-action="interactive-edit" hidden>交互编辑</button>
|
|
70
|
-
<button type="button" data-action="
|
|
71
|
-
<
|
|
100
|
+
<button type="button" data-action="perfect-pixel" hidden>完美像素化</button>
|
|
101
|
+
<div class="ctx-submenu" data-submenu="cutout" hidden>
|
|
102
|
+
<button type="button" class="ctx-submenu-trigger" aria-haspopup="menu" aria-expanded="false">
|
|
103
|
+
<span>抠图</span><span class="ctx-submenu-arrow" aria-hidden="true">›</span>
|
|
104
|
+
</button>
|
|
105
|
+
<div class="ctx-submenu-panel" role="menu">
|
|
106
|
+
<button type="button" role="menuitem" data-action="cutout" hidden>智能抠图</button>
|
|
107
|
+
<button type="button" role="menuitem" data-action="color-key" hidden>颜色剔除</button>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
72
110
|
<button type="button" data-action="video-cycle" hidden>智能周期提取</button>
|
|
73
|
-
<button type="button" data-action="video-to-
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
111
|
+
<button type="button" data-action="video-to-frame-sheet" hidden>视频转序列帧图</button>
|
|
112
|
+
<div class="ctx-submenu" data-submenu="image-split" hidden>
|
|
113
|
+
<button type="button" class="ctx-submenu-trigger" aria-haspopup="menu" aria-expanded="false">
|
|
114
|
+
<span>图片切分</span><span class="ctx-submenu-arrow" aria-hidden="true">›</span>
|
|
115
|
+
</button>
|
|
116
|
+
<div class="ctx-submenu-panel" role="menu">
|
|
117
|
+
<button type="button" role="menuitem" data-action="smart-split">智能切分</button>
|
|
118
|
+
<button type="button" role="menuitem" data-action="manual-split">手动切分</button>
|
|
119
|
+
<button type="button" role="menuitem" data-action="layer-decomposition" hidden>大模型图层分离</button>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
<div class="ctx-submenu" data-submenu="frame-sheet" hidden>
|
|
123
|
+
<button type="button" class="ctx-submenu-trigger" aria-haspopup="menu" aria-expanded="false">
|
|
124
|
+
<span>序列帧</span><span class="ctx-submenu-arrow" aria-hidden="true">›</span>
|
|
125
|
+
</button>
|
|
126
|
+
<div class="ctx-submenu-panel" role="menu">
|
|
127
|
+
<button type="button" role="menuitem" data-action="frame-sheet-preview" hidden>序列帧预览</button>
|
|
128
|
+
<button type="button" role="menuitem" data-action="frame-sheet-edit" hidden>序列帧编辑</button>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
<div class="ctx-submenu" data-submenu="character-views" hidden>
|
|
132
|
+
<button type="button" class="ctx-submenu-trigger" aria-haspopup="menu" aria-expanded="false">
|
|
133
|
+
<span>角色多视角生成</span><span class="ctx-submenu-arrow" aria-hidden="true">›</span>
|
|
134
|
+
</button>
|
|
135
|
+
<div class="ctx-submenu-panel" role="menu">
|
|
136
|
+
<button type="button" role="menuitem" data-action="four-view" hidden>四视图生成</button>
|
|
137
|
+
<button type="button" role="menuitem" data-action="eight-direction" hidden>八方图生成</button>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="ctx-submenu" data-submenu="map-tiles" hidden>
|
|
141
|
+
<button type="button" class="ctx-submenu-trigger" aria-haspopup="menu" aria-expanded="false">
|
|
142
|
+
<span>地图瓦片</span><span class="ctx-submenu-arrow" aria-hidden="true">›</span>
|
|
143
|
+
</button>
|
|
144
|
+
<div class="ctx-submenu-panel" role="menu">
|
|
145
|
+
<button type="button" role="menuitem" data-action="seam-elimination" hidden>瓦片缝隙消除</button>
|
|
146
|
+
<button type="button" role="menuitem" data-action="tile-transition-atlas" hidden>地图集生成</button>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
80
149
|
<button type="button" data-action="delete" class="ctx-danger">删除</button>
|
|
81
150
|
</div>
|
|
82
151
|
|
|
152
|
+
<div class="modal-backdrop modal-backdrop-dark" id="image-canvas-size-modal" hidden>
|
|
153
|
+
<div class="modal-dialog modal-dialog-image-canvas-size" role="group" aria-labelledby="image-canvas-size-title">
|
|
154
|
+
<div class="seq-panel-head">
|
|
155
|
+
<strong id="image-canvas-size-title">图片大小编辑</strong>
|
|
156
|
+
<button type="button" class="ghost-btn" id="image-canvas-size-close">关闭</button>
|
|
157
|
+
</div>
|
|
158
|
+
<div class="image-canvas-size-stage" id="image-canvas-size-stage">
|
|
159
|
+
<canvas id="image-canvas-size-preview"></canvas>
|
|
160
|
+
<div class="image-canvas-size-frame" id="image-canvas-size-frame">
|
|
161
|
+
<button type="button" class="image-canvas-size-edge is-top" data-edge="top" aria-label="拖动上边缘"></button>
|
|
162
|
+
<button type="button" class="image-canvas-size-edge is-right" data-edge="right" aria-label="拖动右边缘"></button>
|
|
163
|
+
<button type="button" class="image-canvas-size-edge is-bottom" data-edge="bottom" aria-label="拖动下边缘"></button>
|
|
164
|
+
<button type="button" class="image-canvas-size-edge is-left" data-edge="left" aria-label="拖动左边缘"></button>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
<div class="image-canvas-size-fields">
|
|
168
|
+
<label class="seq-field">
|
|
169
|
+
宽度
|
|
170
|
+
<input type="number" id="image-canvas-size-width" min="1" max="16384" step="1" />
|
|
171
|
+
<span>px</span>
|
|
172
|
+
</label>
|
|
173
|
+
<label class="seq-field">
|
|
174
|
+
高度
|
|
175
|
+
<input type="number" id="image-canvas-size-height" min="1" max="16384" step="1" />
|
|
176
|
+
<span>px</span>
|
|
177
|
+
</label>
|
|
178
|
+
</div>
|
|
179
|
+
<div class="modal-actions">
|
|
180
|
+
<button type="button" class="ghost-btn" id="image-canvas-size-reset">重置</button>
|
|
181
|
+
<button type="button" class="ghost-btn" id="image-canvas-size-cancel">取消</button>
|
|
182
|
+
<button type="button" class="tool-btn" id="image-canvas-size-confirm">应用</button>
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
|
|
83
187
|
<div class="modal-backdrop modal-backdrop-dark" id="interactive-edit-modal" hidden>
|
|
84
|
-
<div class="modal-dialog modal-dialog-interactive-edit" role="
|
|
188
|
+
<div class="modal-dialog modal-dialog-interactive-edit" role="group" aria-labelledby="interactive-edit-title">
|
|
85
189
|
<div class="seq-panel-head">
|
|
86
190
|
<strong id="interactive-edit-title">交互编辑</strong>
|
|
87
191
|
<button type="button" class="ghost-btn" id="interactive-edit-close">关闭</button>
|
|
88
192
|
</div>
|
|
89
|
-
<div class="interactive-editor-
|
|
193
|
+
<div class="interactive-editor-stage">
|
|
194
|
+
<div class="interactive-editor-host" id="interactive-editor-host"></div>
|
|
195
|
+
<label class="interactive-edit-zoom" for="interactive-edit-zoom">
|
|
196
|
+
<span>缩放</span>
|
|
197
|
+
<input type="range" id="interactive-edit-zoom" min="1" max="400" step="1" value="100" />
|
|
198
|
+
<output id="interactive-edit-zoom-value" for="interactive-edit-zoom">100%</output>
|
|
199
|
+
</label>
|
|
200
|
+
</div>
|
|
90
201
|
<div class="interactive-edit-compose">
|
|
91
202
|
<label class="layer-decomposition-prompt" for="interactive-edit-prompt">
|
|
92
203
|
编辑要求
|
|
@@ -96,7 +207,14 @@
|
|
|
96
207
|
placeholder="例如:将框选区域替换为木质宝箱,并保持其他内容不变"
|
|
97
208
|
></textarea>
|
|
98
209
|
</label>
|
|
99
|
-
<
|
|
210
|
+
<label class="interactive-edit-model" for="interactive-edit-model">
|
|
211
|
+
<span>模型</span>
|
|
212
|
+
<select id="interactive-edit-model">
|
|
213
|
+
<option value="asset-pro">Pro</option>
|
|
214
|
+
<option value="asset-max">Max</option>
|
|
215
|
+
</select>
|
|
216
|
+
</label>
|
|
217
|
+
<p class="modal-hint">画面标记和文字会合并到参考图中,再使用所选模型生成。</p>
|
|
100
218
|
<p class="modal-hint" id="interactive-edit-status" hidden></p>
|
|
101
219
|
<div class="modal-actions">
|
|
102
220
|
<button type="button" class="ghost-btn" id="interactive-edit-cancel">取消</button>
|
|
@@ -107,8 +225,42 @@
|
|
|
107
225
|
</div>
|
|
108
226
|
</div>
|
|
109
227
|
|
|
228
|
+
<div class="modal-backdrop modal-backdrop-dark" id="seam-elimination-modal" hidden>
|
|
229
|
+
<div class="modal-dialog modal-dialog-seam-elimination" role="group" aria-labelledby="seam-elimination-title">
|
|
230
|
+
<div class="seq-panel-head">
|
|
231
|
+
<strong id="seam-elimination-title">缝隙消除</strong>
|
|
232
|
+
<button type="button" class="ghost-btn" id="seam-elimination-close">关闭</button>
|
|
233
|
+
</div>
|
|
234
|
+
<div class="seam-elimination-preview">
|
|
235
|
+
<img id="seam-elimination-image" alt="待处理地砖预览" />
|
|
236
|
+
</div>
|
|
237
|
+
<label class="layer-decomposition-prompt" for="seam-elimination-prompt">
|
|
238
|
+
地砖描述
|
|
239
|
+
<textarea
|
|
240
|
+
id="seam-elimination-prompt"
|
|
241
|
+
rows="4"
|
|
242
|
+
placeholder="描述地砖的内容、材质和美术风格"
|
|
243
|
+
></textarea>
|
|
244
|
+
</label>
|
|
245
|
+
<label class="interactive-edit-model" for="seam-elimination-model">
|
|
246
|
+
<span>模型</span>
|
|
247
|
+
<select id="seam-elimination-model"></select>
|
|
248
|
+
</label>
|
|
249
|
+
<div class="seam-elimination-size-row">
|
|
250
|
+
<span>输出尺寸</span>
|
|
251
|
+
<output id="seam-elimination-size">读取中…</output>
|
|
252
|
+
</div>
|
|
253
|
+
<p class="modal-hint">输出尺寸锁定为输入图片的像素尺寸。</p>
|
|
254
|
+
<p class="modal-hint" id="seam-elimination-status" hidden></p>
|
|
255
|
+
<div class="modal-actions">
|
|
256
|
+
<button type="button" class="ghost-btn" id="seam-elimination-cancel">取消</button>
|
|
257
|
+
<button type="button" class="tool-btn" id="seam-elimination-confirm">开始处理</button>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
110
262
|
<div class="modal-backdrop modal-backdrop-dark" id="layer-decomposition-modal" hidden>
|
|
111
|
-
<div class="modal-dialog modal-dialog-layer-decomposition" role="
|
|
263
|
+
<div class="modal-dialog modal-dialog-layer-decomposition" role="group" aria-labelledby="layer-decomposition-title">
|
|
112
264
|
<div class="seq-panel-head">
|
|
113
265
|
<strong id="layer-decomposition-title">大模型图层分离</strong>
|
|
114
266
|
<button type="button" class="ghost-btn" id="layer-decomposition-close">关闭</button>
|
|
@@ -134,7 +286,7 @@
|
|
|
134
286
|
</div>
|
|
135
287
|
|
|
136
288
|
<div class="modal-backdrop modal-backdrop-dark" id="video-cycle-modal" hidden>
|
|
137
|
-
<div class="modal-dialog" role="
|
|
289
|
+
<div class="modal-dialog" role="group" aria-labelledby="video-cycle-title">
|
|
138
290
|
<div class="seq-panel-head">
|
|
139
291
|
<strong id="video-cycle-title">智能周期提取</strong>
|
|
140
292
|
<button type="button" class="ghost-btn" id="video-cycle-close">关闭</button>
|
|
@@ -175,15 +327,23 @@
|
|
|
175
327
|
</div>
|
|
176
328
|
|
|
177
329
|
<div class="modal-backdrop modal-backdrop-dark" id="smart-split-modal" hidden>
|
|
178
|
-
<div class="modal-dialog" role="
|
|
330
|
+
<div class="modal-dialog" role="group" aria-labelledby="smart-split-title">
|
|
179
331
|
<div class="seq-panel-head">
|
|
180
332
|
<strong id="smart-split-title">智能切分</strong>
|
|
181
333
|
<button type="button" class="ghost-btn" id="smart-split-close">关闭</button>
|
|
182
334
|
</div>
|
|
183
335
|
<p class="modal-hint">
|
|
184
|
-
|
|
336
|
+
自动识别并裁出彼此分离的主体;主体不会缩放。
|
|
185
337
|
</p>
|
|
186
|
-
<
|
|
338
|
+
<label class="smart-split-size-toggle">
|
|
339
|
+
<input type="checkbox" id="smart-split-pad-to-same-size" checked />
|
|
340
|
+
<span>
|
|
341
|
+
<strong>补全为相同图片大小</strong>
|
|
342
|
+
<small>只在裁切结果周围填充透明像素,不扩大原图裁切范围。</small>
|
|
343
|
+
</span>
|
|
344
|
+
</label>
|
|
345
|
+
<p class="modal-hint">透明补全时主体的对齐位置:</p>
|
|
346
|
+
<div class="split-anchor-grid" id="smart-split-anchor-grid" role="radiogroup" aria-label="透明补全对齐位置">
|
|
187
347
|
<button type="button" class="split-anchor-btn" data-anchor="top-left" role="radio" aria-checked="false"><span></span>左上</button>
|
|
188
348
|
<button type="button" class="split-anchor-btn" data-anchor="top" role="radio" aria-checked="false"><span></span>上</button>
|
|
189
349
|
<button type="button" class="split-anchor-btn" data-anchor="top-right" role="radio" aria-checked="false"><span></span>右上</button>
|
|
@@ -203,7 +363,7 @@
|
|
|
203
363
|
</div>
|
|
204
364
|
|
|
205
365
|
<div class="modal-backdrop modal-backdrop-dark" id="manual-split-modal" hidden>
|
|
206
|
-
<div class="modal-dialog" role="
|
|
366
|
+
<div class="modal-dialog" role="group" aria-labelledby="manual-split-title">
|
|
207
367
|
<div class="seq-panel-head">
|
|
208
368
|
<strong id="manual-split-title">手动切分</strong>
|
|
209
369
|
<button type="button" class="ghost-btn" id="manual-split-close">关闭</button>
|
|
@@ -232,137 +392,84 @@
|
|
|
232
392
|
</div>
|
|
233
393
|
|
|
234
394
|
<div class="modal-backdrop modal-backdrop-dark" id="frame-extract-modal" hidden>
|
|
235
|
-
<div class="modal-dialog" role="
|
|
395
|
+
<div class="modal-dialog" role="group" aria-labelledby="frame-extract-title">
|
|
236
396
|
<div class="seq-panel-head">
|
|
237
|
-
<strong id="frame-extract-title"
|
|
397
|
+
<strong id="frame-extract-title">视频转序列帧图</strong>
|
|
238
398
|
<button type="button" class="ghost-btn" id="frame-extract-close">关闭</button>
|
|
239
399
|
</div>
|
|
240
400
|
<p class="modal-hint">
|
|
241
|
-
|
|
401
|
+
均匀抽取视频帧后,自动按从左到右、从上到下的顺序拼成一张 PNG 图片。
|
|
242
402
|
</p>
|
|
243
403
|
<label class="seq-field frame-extract-field">
|
|
244
|
-
|
|
245
|
-
<input type="number" id="frame-extract-
|
|
246
|
-
<span class="frame-extract-range">
|
|
404
|
+
FPS
|
|
405
|
+
<input type="number" id="frame-extract-fps" min="0.1" max="60" step="0.1" value="8" />
|
|
406
|
+
<span class="frame-extract-range">0.1 – 60</span>
|
|
247
407
|
</label>
|
|
248
408
|
<p class="modal-hint" id="frame-extract-status" hidden></p>
|
|
249
409
|
<div class="modal-actions">
|
|
250
410
|
<button type="button" class="ghost-btn" id="frame-extract-cancel">取消</button>
|
|
251
|
-
<button type="button" class="tool-btn" id="frame-extract-confirm"
|
|
411
|
+
<button type="button" class="tool-btn" id="frame-extract-confirm">生成序列帧图</button>
|
|
252
412
|
</div>
|
|
253
413
|
</div>
|
|
254
414
|
</div>
|
|
255
415
|
|
|
256
|
-
<div class="modal-backdrop modal-backdrop-dark" id="
|
|
257
|
-
<div class="modal-dialog
|
|
416
|
+
<div class="modal-backdrop modal-backdrop-dark" id="frame-preview-modal" hidden>
|
|
417
|
+
<div class="modal-dialog" role="group" aria-labelledby="frame-preview-title">
|
|
258
418
|
<div class="seq-panel-head">
|
|
259
|
-
<strong id="
|
|
260
|
-
<button type="button" class="ghost-btn" id="
|
|
419
|
+
<strong id="frame-preview-title">序列帧预览</strong>
|
|
420
|
+
<button type="button" class="ghost-btn" id="frame-preview-close">关闭</button>
|
|
261
421
|
</div>
|
|
262
|
-
<p class="modal-hint"
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
<
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
</div>
|
|
275
|
-
<div class="trim-timeline" id="video-trim-timeline">
|
|
276
|
-
<div class="trim-track" id="video-trim-track">
|
|
277
|
-
<div class="trim-range" id="video-trim-range"></div>
|
|
278
|
-
<input
|
|
279
|
-
type="range"
|
|
280
|
-
class="trim-scrub-input"
|
|
281
|
-
id="video-trim-scrub"
|
|
282
|
-
min="0"
|
|
283
|
-
max="0"
|
|
284
|
-
step="0.001"
|
|
285
|
-
value="0"
|
|
286
|
-
aria-label="播放进度"
|
|
287
|
-
/>
|
|
288
|
-
<div
|
|
289
|
-
class="trim-handle trim-handle-start"
|
|
290
|
-
id="video-trim-handle-start"
|
|
291
|
-
title="入点"
|
|
292
|
-
role="slider"
|
|
293
|
-
tabindex="0"
|
|
294
|
-
></div>
|
|
295
|
-
<div
|
|
296
|
-
class="trim-handle trim-handle-end"
|
|
297
|
-
id="video-trim-handle-end"
|
|
298
|
-
title="出点"
|
|
299
|
-
role="slider"
|
|
300
|
-
tabindex="0"
|
|
301
|
-
></div>
|
|
302
|
-
</div>
|
|
303
|
-
</div>
|
|
304
|
-
<div class="trim-times">
|
|
305
|
-
<span>入点 <strong id="video-trim-start-label">0:00.000</strong></span>
|
|
306
|
-
<span>选区 <strong id="video-trim-dur-label">0:00.000</strong></span>
|
|
307
|
-
<span>出点 <strong id="video-trim-end-label">0:00.000</strong></span>
|
|
308
|
-
</div>
|
|
422
|
+
<p class="modal-hint">
|
|
423
|
+
将当前图片等分为网格,并按照从左到右、从上到下的顺序在画布内循环播放。不会修改图片文件。
|
|
424
|
+
</p>
|
|
425
|
+
<div class="seq-sheet-fields">
|
|
426
|
+
<label class="seq-field frame-extract-field">
|
|
427
|
+
行数
|
|
428
|
+
<input type="number" id="frame-preview-rows" min="1" max="64" step="1" value="2" />
|
|
429
|
+
</label>
|
|
430
|
+
<label class="seq-field frame-extract-field">
|
|
431
|
+
列数
|
|
432
|
+
<input type="number" id="frame-preview-columns" min="1" max="64" step="1" value="2" />
|
|
433
|
+
</label>
|
|
309
434
|
</div>
|
|
310
|
-
<p class="modal-hint" id="
|
|
435
|
+
<p class="modal-hint" id="frame-preview-info"></p>
|
|
436
|
+
<div class="seq-sheet-preview" id="frame-preview-grid" aria-hidden="true"></div>
|
|
437
|
+
<label class="seq-field frame-extract-field">
|
|
438
|
+
FPS
|
|
439
|
+
<input type="number" id="frame-preview-fps" min="0.000001" step="any" value="8" />
|
|
440
|
+
</label>
|
|
441
|
+
<p class="modal-hint" id="frame-preview-status" hidden></p>
|
|
311
442
|
<div class="modal-actions">
|
|
312
|
-
<button type="button" class="ghost-btn" id="
|
|
313
|
-
<button type="button" class="tool-btn" id="
|
|
443
|
+
<button type="button" class="ghost-btn" id="frame-preview-cancel">取消</button>
|
|
444
|
+
<button type="button" class="tool-btn" id="frame-preview-confirm">开始预览</button>
|
|
314
445
|
</div>
|
|
315
446
|
</div>
|
|
316
447
|
</div>
|
|
317
448
|
|
|
318
|
-
<div class="modal-backdrop modal-backdrop-dark" id="
|
|
319
|
-
<div class="modal-dialog" role="
|
|
449
|
+
<div class="modal-backdrop modal-backdrop-dark" id="frame-editor-split-modal" hidden>
|
|
450
|
+
<div class="modal-dialog" role="group" aria-labelledby="frame-editor-split-title">
|
|
320
451
|
<div class="seq-panel-head">
|
|
321
|
-
<strong id="
|
|
322
|
-
<button type="button" class="ghost-btn" id="
|
|
452
|
+
<strong id="frame-editor-split-title">创建序列帧编辑器</strong>
|
|
453
|
+
<button type="button" class="ghost-btn" id="frame-editor-split-close">关闭</button>
|
|
323
454
|
</div>
|
|
324
455
|
<p class="modal-hint">
|
|
325
|
-
|
|
456
|
+
请设置当前图片包含的行数和列数。已有序列帧预览时会自动填入相同配置;这里允许 1×1。
|
|
326
457
|
</p>
|
|
327
|
-
<p class="modal-hint" id="seq-sheet-frame-info">共 0 帧</p>
|
|
328
458
|
<div class="seq-sheet-fields">
|
|
329
459
|
<label class="seq-field frame-extract-field">
|
|
330
460
|
行数
|
|
331
|
-
<input type="number" id="
|
|
461
|
+
<input type="number" id="frame-editor-split-rows" min="1" max="64" step="1" value="2" />
|
|
332
462
|
</label>
|
|
333
463
|
<label class="seq-field frame-extract-field">
|
|
334
464
|
列数
|
|
335
|
-
<input type="number" id="
|
|
465
|
+
<input type="number" id="frame-editor-split-columns" min="1" max="64" step="1" value="2" />
|
|
336
466
|
</label>
|
|
337
467
|
</div>
|
|
338
|
-
<
|
|
339
|
-
<p class="modal-hint" id="
|
|
340
|
-
<div class="modal-actions">
|
|
341
|
-
<button type="button" class="ghost-btn" id="seq-sheet-cancel">取消</button>
|
|
342
|
-
<button type="button" class="tool-btn" id="seq-sheet-confirm">生成单图</button>
|
|
343
|
-
</div>
|
|
344
|
-
</div>
|
|
345
|
-
</div>
|
|
346
|
-
|
|
347
|
-
<div class="modal-backdrop" id="seq-modal" hidden>
|
|
348
|
-
<div class="modal-dialog" role="dialog" aria-modal="true" aria-labelledby="seq-panel-title">
|
|
349
|
-
<div class="seq-panel-head">
|
|
350
|
-
<strong id="seq-panel-title">编辑序列</strong>
|
|
351
|
-
<button type="button" class="ghost-btn" id="seq-panel-close">关闭</button>
|
|
352
|
-
</div>
|
|
353
|
-
<p class="modal-hint">调整播放速度、循环,以及帧顺序。</p>
|
|
354
|
-
<label class="seq-field">
|
|
355
|
-
播放速度 (FPS)
|
|
356
|
-
<input type="range" id="seq-fps" min="1" max="24" value="8" />
|
|
357
|
-
<span id="seq-fps-val">8</span>
|
|
358
|
-
</label>
|
|
359
|
-
<label class="seq-field seq-check">
|
|
360
|
-
<input type="checkbox" id="seq-loop" checked />
|
|
361
|
-
循环播放
|
|
362
|
-
</label>
|
|
363
|
-
<div class="seq-frames" id="seq-frames"></div>
|
|
468
|
+
<p class="modal-hint" id="frame-editor-split-info"></p>
|
|
469
|
+
<p class="modal-hint" id="frame-editor-split-status" hidden></p>
|
|
364
470
|
<div class="modal-actions">
|
|
365
|
-
<button type="button" class="ghost-btn" id="
|
|
471
|
+
<button type="button" class="ghost-btn" id="frame-editor-split-cancel">取消</button>
|
|
472
|
+
<button type="button" class="tool-btn" id="frame-editor-split-confirm">创建编辑器</button>
|
|
366
473
|
</div>
|
|
367
474
|
</div>
|
|
368
475
|
</div>
|