reorder
This commit is contained in:
@@ -2305,6 +2305,21 @@
|
|||||||
|
|
||||||
// --- HYDRATION_START ---
|
// --- HYDRATION_START ---
|
||||||
const PRELOADED_IMAGES = [
|
const PRELOADED_IMAGES = [
|
||||||
|
"20260628_061520_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_061440_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_061355_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_061322_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_061249_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_061152_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_061006_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_060550_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||||
|
"20260628_060113_sc_best_00_person_0.874_2026-06-27_12-18-49.png",
|
||||||
|
"20260628_055858_sc_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||||
|
"_turntable/cg_7ec17537/views/20260628_055541_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
|
"_turntable/cg_7ec17537/views/20260628_055501_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
|
"_turntable/cg_7ec17537/views/20260628_055207_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
|
"_turntable/cg_7ec17537/views/20260628_055134_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
|
"_turntable/cg_7ec17537/views/20260628_054950_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
"_turntable/cg_7ec17537/views/20260628_054328_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
"_turntable/cg_7ec17537/views/20260628_054328_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
"_turntable/cg_7ec17537/views/20260628_053717_sc_pad_20260628_035257_dup_20260628_033600_dup_view_000_000deg.nobg.nobg.nobg.png",
|
"_turntable/cg_7ec17537/views/20260628_053717_sc_pad_20260628_035257_dup_20260628_033600_dup_view_000_000deg.nobg.nobg.nobg.png",
|
||||||
"_turntable/cg_7ec17537/views/20260628_053620_sc_pad_20260628_035257_dup_20260628_033600_dup_view_000_000deg.nobg.nobg.nobg.png",
|
"_turntable/cg_7ec17537/views/20260628_053620_sc_pad_20260628_035257_dup_20260628_033600_dup_view_000_000deg.nobg.nobg.nobg.png",
|
||||||
@@ -3490,9 +3505,9 @@
|
|||||||
"_turntable/cg_7ec17537/views/view_003_045deg.png",
|
"_turntable/cg_7ec17537/views/view_003_045deg.png",
|
||||||
"_turntable/cg_7ec17537/views/view_002_030deg.png",
|
"_turntable/cg_7ec17537/views/view_002_030deg.png",
|
||||||
"_turntable/cg_7ec17537/views/view_001_015deg.png",
|
"_turntable/cg_7ec17537/views/view_001_015deg.png",
|
||||||
|
"_turntable/cg_7ec17537/views/20260628_033600_dup_view_000_000deg.png",
|
||||||
"_turntable/cg_7ec17537/views/view_000_000deg.png",
|
"_turntable/cg_7ec17537/views/view_000_000deg.png",
|
||||||
"_turntable/cg_7ec17537/views/20260628_033831_dup_20260628_033600_dup_view_000_000deg.png",
|
"_turntable/cg_7ec17537/views/20260628_033831_dup_20260628_033600_dup_view_000_000deg.png",
|
||||||
"_turntable/cg_7ec17537/views/20260628_033600_dup_view_000_000deg.png",
|
|
||||||
"_turntable/up_154b502c/views/view_023_345deg.png",
|
"_turntable/up_154b502c/views/view_023_345deg.png",
|
||||||
"_turntable/up_154b502c/views/view_022_330deg.png",
|
"_turntable/up_154b502c/views/view_022_330deg.png",
|
||||||
"_turntable/up_154b502c/views/view_021_315deg.png",
|
"_turntable/up_154b502c/views/view_021_315deg.png",
|
||||||
@@ -4946,8 +4961,8 @@
|
|||||||
"20260625_024438_dup_20260624_165109_0_20260622_091731_image.nobg.png",
|
"20260625_024438_dup_20260624_165109_0_20260622_091731_image.nobg.png",
|
||||||
"20260625_023536_dup_20260624_165109_0_20260622_091731_image.nobg.png",
|
"20260625_023536_dup_20260624_165109_0_20260622_091731_image.nobg.png",
|
||||||
"20260624_165109_0_20260622_091731_image.nobg.png",
|
"20260624_165109_0_20260622_091731_image.nobg.png",
|
||||||
"20260625_023536_dup_20260624_165109_0_20260622_091731_image.png",
|
|
||||||
"20260624_165109_0_20260622_091731_image.png",
|
"20260624_165109_0_20260622_091731_image.png",
|
||||||
|
"20260625_023536_dup_20260624_165109_0_20260622_091731_image.png",
|
||||||
"up_ab858b0a_face.png",
|
"up_ab858b0a_face.png",
|
||||||
"20260625_022332_dup_20260625_022250_sc_image.png",
|
"20260625_022332_dup_20260625_022250_sc_image.png",
|
||||||
"20260625_022250_sc_image.png",
|
"20260625_022250_sc_image.png",
|
||||||
@@ -5146,8 +5161,8 @@
|
|||||||
"20260624_182958_image.png",
|
"20260624_182958_image.png",
|
||||||
"20260624_174900_image.png",
|
"20260624_174900_image.png",
|
||||||
"20260624_174943_dup_20260624_173115_image.png",
|
"20260624_174943_dup_20260624_173115_image.png",
|
||||||
"20260624_175711_dup_20260624_174943_dup_20260624_173115_image.png",
|
|
||||||
"20260624_173115_image.png",
|
"20260624_173115_image.png",
|
||||||
|
"20260624_175711_dup_20260624_174943_dup_20260624_173115_image.png",
|
||||||
"20260624_174757_image.png",
|
"20260624_174757_image.png",
|
||||||
"20260624_174442_image.png",
|
"20260624_174442_image.png",
|
||||||
"20260624_172923_image.nobg.png",
|
"20260624_172923_image.nobg.png",
|
||||||
@@ -5661,8 +5676,8 @@
|
|||||||
"20260622_193411_1_20260622_193118_image.png",
|
"20260622_193411_1_20260622_193118_image.png",
|
||||||
"20260622_193354_0_20260622_193118_image.png",
|
"20260622_193354_0_20260622_193118_image.png",
|
||||||
"20260622_193118_image.png",
|
"20260622_193118_image.png",
|
||||||
"20260622_212012_dup_20260622_181910_0_20260619_124038_image.png",
|
|
||||||
"20260622_181910_0_20260619_124038_image.png",
|
"20260622_181910_0_20260619_124038_image.png",
|
||||||
|
"20260622_212012_dup_20260622_181910_0_20260619_124038_image.png",
|
||||||
"20260622_181734_0_20260619_124038_image.png",
|
"20260622_181734_0_20260619_124038_image.png",
|
||||||
"20260622_181720_0_20260619_124038_image.png",
|
"20260622_181720_0_20260619_124038_image.png",
|
||||||
"20260622_181634_0_20260619_124038_image.png",
|
"20260622_181634_0_20260619_124038_image.png",
|
||||||
@@ -9831,6 +9846,9 @@
|
|||||||
|
|
||||||
// --- clipboard paste support ---
|
// --- clipboard paste support ---
|
||||||
window.addEventListener('paste', async (e) => {
|
window.addEventListener('paste', async (e) => {
|
||||||
|
if (document.getElementById('studio').classList.contains('open') && _activeSidebarTab === 'scenery') {
|
||||||
|
return; // Let the document-level scenery paste listener handle this
|
||||||
|
}
|
||||||
const items = e.clipboardData.items;
|
const items = e.clipboardData.items;
|
||||||
const files = [];
|
const files = [];
|
||||||
for (const item of items) {
|
for (const item of items) {
|
||||||
@@ -10780,6 +10798,28 @@
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Clipboard paste image as background (Scenery tab)
|
||||||
|
document.addEventListener('paste', async e => {
|
||||||
|
if (!document.getElementById('studio').classList.contains('open')) return;
|
||||||
|
if (_activeSidebarTab !== 'scenery') return;
|
||||||
|
|
||||||
|
const items = (e.clipboardData || window.clipboardData)?.items;
|
||||||
|
if (!items) return;
|
||||||
|
|
||||||
|
for (const item of items) {
|
||||||
|
if (item.kind === 'file' && item.type.startsWith('image/')) {
|
||||||
|
const file = item.getAsFile();
|
||||||
|
if (file) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
await sceneUploadFile(file);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Privacy overlay — disguise the page as a study-chat on any focus loss.
|
// Privacy overlay — disguise the page as a study-chat on any focus loss.
|
||||||
@@ -11722,12 +11762,14 @@
|
|||||||
|
|
||||||
// ---- faceswap sidebar tab ----
|
// ---- faceswap sidebar tab ----
|
||||||
|
|
||||||
async function loadTemplateVideos() {
|
async function loadTemplateVideos(forceFresh = false) {
|
||||||
let data = null;
|
let data = null;
|
||||||
try {
|
if (!forceFresh) {
|
||||||
const r = await fetch(`${API}/output/_data/videos.json`, { signal: AbortSignal.timeout(3000) });
|
try {
|
||||||
if (r.ok) { data = await r.json(); }
|
const r = await fetch(`${API}/output/_data/videos.json`, { signal: AbortSignal.timeout(3000) });
|
||||||
} catch (_) {}
|
if (r.ok) { data = await r.json(); }
|
||||||
|
} catch (_) {}
|
||||||
|
}
|
||||||
if (!data) {
|
if (!data) {
|
||||||
try {
|
try {
|
||||||
const r = await fetch(`${API}/videos`);
|
const r = await fetch(`${API}/videos`);
|
||||||
@@ -12033,7 +12075,7 @@
|
|||||||
const d = await r.json();
|
const d = await r.json();
|
||||||
showToast('Clip saved: ' + d.output_name, 'success');
|
showToast('Clip saved: ' + d.output_name, 'success');
|
||||||
availableVideos = [];
|
availableVideos = [];
|
||||||
await loadTemplateVideos();
|
await loadTemplateVideos(true);
|
||||||
closeTrimPanel();
|
closeTrimPanel();
|
||||||
} catch (e) { if (statusEl) statusEl.textContent = 'Error: ' + e; }
|
} catch (e) { if (statusEl) statusEl.textContent = 'Error: ' + e; }
|
||||||
}
|
}
|
||||||
@@ -12500,7 +12542,7 @@
|
|||||||
_sceneRefs[0] = { kind: 'wireframe', name: d.filename }; // background → slot 0
|
_sceneRefs[0] = { kind: 'wireframe', name: d.filename }; // background → slot 0
|
||||||
_sceneRefresh(); // show the frozen frame + update slot badge
|
_sceneRefresh(); // show the frozen frame + update slot badge
|
||||||
// Reload template list so the new frame is instantly visible in the library
|
// Reload template list so the new frame is instantly visible in the library
|
||||||
loadTemplateVideos().then(() => _sceneRefresh());
|
loadTemplateVideos(true).then(() => _sceneRefresh());
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showToast('Frame extract error: ' + e, 'error');
|
showToast('Frame extract error: ' + e, 'error');
|
||||||
@@ -12508,10 +12550,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sceneHandleUpload(event) {
|
async function sceneUploadFile(file) {
|
||||||
const file = event.target.files[0];
|
|
||||||
if (!file) return;
|
|
||||||
|
|
||||||
showToast('Uploading background image to wireframe folder…', 'info');
|
showToast('Uploading background image to wireframe folder…', 'info');
|
||||||
const fd = new FormData();
|
const fd = new FormData();
|
||||||
fd.append('image', file);
|
fd.append('image', file);
|
||||||
@@ -12535,13 +12574,19 @@
|
|||||||
|
|
||||||
// Force a reload of template videos so the newly uploaded file is visible in the library
|
// Force a reload of template videos so the newly uploaded file is visible in the library
|
||||||
availableVideos = [];
|
availableVideos = [];
|
||||||
await loadTemplateVideos();
|
await loadTemplateVideos(true);
|
||||||
_sceneRefresh();
|
_sceneRefresh();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showToast('Upload error: ' + e, 'error');
|
showToast('Upload error: ' + e, 'error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function sceneHandleUpload(event) {
|
||||||
|
const file = event.target.files[0];
|
||||||
|
if (!file) return;
|
||||||
|
await sceneUploadFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
function sceneLoadPoseToPrompt(poseName) {
|
function sceneLoadPoseToPrompt(poseName) {
|
||||||
if (!poseName) return;
|
if (!poseName) return;
|
||||||
const el = document.getElementById('scenePromptInput');
|
const el = document.getElementById('scenePromptInput');
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ realistic.
|
|||||||
Stand with legs slightly apart, knees relaxed. Slightly turn hips to the side, arching back to accentuate buttocks and pelvis depth. Tilt chin slightly upwards, showing teeth in a playful, confident smile. Tilt head slightly, revealing the ear. Relax shoulders and extend arms at sides, drawing attention to the silhouette of the torso. Keep knees slightly bent, creating a gentle, inviting curvature of the spine. Allow the chest to gently protrude, highlighting breast size and natural cleavage. Maintain a relaxed facial expression, eyes gazing forward with a hint of arouse. The primary focus
|
Stand with legs slightly apart, knees relaxed. Slightly turn hips to the side, arching back to accentuate buttocks and pelvis depth. Tilt chin slightly upwards, showing teeth in a playful, confident smile. Tilt head slightly, revealing the ear. Relax shoulders and extend arms at sides, drawing attention to the silhouette of the torso. Keep knees slightly bent, creating a gentle, inviting curvature of the spine. Allow the chest to gently protrude, highlighting breast size and natural cleavage. Maintain a relaxed facial expression, eyes gazing forward with a hint of arouse. The primary focus
|
||||||
should be on the exposed genitals, capturing their natural form and contours with utmost clarity. Perfect anatomy, hyper realistic.
|
should be on the exposed genitals, capturing their natural form and contours with utmost clarity. Perfect anatomy, hyper realistic.
|
||||||
|
|
||||||
|
# Scene replace (18)
|
||||||
|
|
||||||
|
naturally replace the single female from Image 1 with the teenage female from image 2.
|
||||||
|
Keep characteristics of person in Image 2
|
||||||
|
|
||||||
# Undress
|
# Undress
|
||||||
|
|
||||||
masterpiece, high quality,
|
masterpiece, high quality,
|
||||||
|
|||||||
Reference in New Issue
Block a user