🧵 Trạm Tương Tác "Khí Văn Tân Sinh" (器纹新生) — Thêu Ngược Dao Đỏ DIY
Lấy cảm hứng từ trạm tương tác "Khí Văn Tân Sinh" tại Bảo tàng Đại Vấn Khẩu: Bạn hãy chọn đồ hình thêu ngược (thêu từ mặt trái vải chàm mà mặt phải hiện lên chính xác từng sợi) để tạo thẻ lưu niệm văn hóa Dao Đỏ (Vùng Xanh — Cho phép sáng tạo).
1. Chọn Đồ Hình Hoa Văn Gốc (Vùng Xanh / Vàng)
2. Chọn Tông Màu Chỉ Tơ Tằm Nhuộm Tự Nhiên
3. Lời Chúc Nôm Dao In Trên Thẻ Lưu Niệm
☁️ Triển Khai Phòng Triển Lãm 3D Lên Cloudflare (Workers & Pages)
🚀 Cách 1: Kéo-Thả Trực Tiếp Lên Cloudflare Pages (Nhanh nhất — 30 giây, không cần cấu hình)
1. Đổi tên file Yao_Mien_Bao_Tang_3D_Exhibition.html thành index.html và nén vào 1 thư mục (hoặc chọn trực tiếp thư mục chứa file).
2. Truy cập Cloudflare Dashboard → Workers & Pages → Create → Pages → Upload Assets.
3. Kéo thả thư mục chứa index.html vào và nhấn Deploy Site. Bạn sẽ có ngay đường dẫn https://yao-mien-3d-museum.pages.dev chạy mượt trên cả máy tính, điện thoại và kính VR!
⚡ Cách 2: Dán Vào Cloudflare Worker (All-in-One kèm KV Lưu Trữ Thuyết Minh)
Sử dụng file cloudflare-worker-3d-museum.js đính kèm bên ngoài hoặc sao chép đoạn mã Worker rút gọn dưới đây để chạy kèm Cloudflare KV (BAO_TANG_KV):
// Cloudflare Worker All-in-One cho Bảo Tàng 3D Di Sản Dao Đỏ (Iu Mien)
// Hỗ trợ: GET / (Giao diện 3D WebGL), GET /api/exhibits, POST /api/exhibits (Lưu thuyết minh vào KV)
export default {
async fetch(request, env) {
const url = new URL(request.url);
if (url.pathname === "/api/exhibits" && request.method === "GET") {
const data = env.BAO_TANG_KV ? await env.BAO_TANG_KV.get("exhibits_meta") : null;
return new Response(data || JSON.stringify({ status: "ok", mode: "default_embedded" }), {
headers: { "Content-Type": "application/json; charset=utf-8" }
});
}
if (url.pathname === "/api/exhibits" && request.method === "POST") {
const body = await request.text();
if (env.BAO_TANG_KV) await env.BAO_TANG_KV.put("exhibits_meta", body);
return new Response(JSON.stringify({ saved: true }), {
headers: { "Content-Type": "application/json; charset=utf-8" }
});
}
return new Response(HTML_3D_MUSEUM, {
headers: { "Content-Type": "text/html; charset=utf-8", "Cache-Control": "public, max-age=3600" }
});
}
};