fix: chuẩn hóa tên ảnh tour về ASCII (chua-thai-lac/01..26.jpg)
Tên thư mục/file Unicode tiếng Việt bị lệch chuẩn hóa (thư mục NFC, file NFD) khiến URL ảnh 404 khi phục vụ tĩnh. Đổi sang đường dẫn ASCII ổn định, tránh lỗi mã hóa khi triển khai trên mọi máy chủ/CDN. Cập nhật content.ts và cấu hình tour theo số thứ tự cảnh; dọn scaffold svg mặc định. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,26 +1,29 @@
|
||||
// Cấu hình tour VR360 Chùa Thái Lạc (Pháp Vân tự) — Xã Như Quỳnh, Hưng Yên.
|
||||
// File chỉ chứa DỮ LIỆU (type-only import từ engine để tránh circular import runtime).
|
||||
// Engine `VirtualTour.tsx` import `chuaThaiLacTour` rồi bọc qua createTourConfig().
|
||||
//
|
||||
// Ảnh panorama đặt tại public/images/chua-thai-lac/01.jpg … 26.jpg
|
||||
// (đặt tên ASCII theo thứ tự cảnh để tránh lỗi mã hóa Unicode/đường dẫn khi triển khai).
|
||||
import type { TourConfig, TourScene, InfoMarker } from "@/app/components/VirtualTour";
|
||||
|
||||
const base = "/images/Đình Thái Lạc";
|
||||
const p = (file: string) => encodeURI(`${base}/${file}`);
|
||||
const base = "/images/chua-thai-lac";
|
||||
// Ảnh theo số thứ tự cảnh: scene-1 → 01.jpg, scene-2 → 02.jpg, …
|
||||
const imageFor = (index: number) => `${base}/${String(index + 1).padStart(2, "0")}.jpg`;
|
||||
|
||||
type SceneSeed = {
|
||||
title: string;
|
||||
location: string;
|
||||
file: string;
|
||||
initialYaw?: number;
|
||||
infoMarkers?: InfoMarker[];
|
||||
};
|
||||
|
||||
// Tuyến tham quan: cổng → đường/vòm → tiền đường & chính điện → khu thờ → ban tượng → cảnh quan.
|
||||
// yaw/pitch của hotspot để mặc định (tiến: 0, lùi: 180); tinh chỉnh trực quan ở bước chạy dev.
|
||||
// Thứ tự mảng = thứ tự ảnh (01..26). yaw/pitch hotspot để mặc định (tiến: 0, lùi: 180);
|
||||
// tinh chỉnh trực quan khi chạy dev.
|
||||
const seeds: SceneSeed[] = [
|
||||
{
|
||||
title: "Chính diện cổng chùa",
|
||||
location: "Khu cổng",
|
||||
file: "Chính Diện Cổng Chùa.jpg",
|
||||
infoMarkers: [
|
||||
{
|
||||
id: "gioi-thieu",
|
||||
@@ -36,19 +39,18 @@ const seeds: SceneSeed[] = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{ title: "Cổng bên phải", location: "Khu cổng", file: "Cổng Hữu.jpg" },
|
||||
{ title: "Cổng bên trái", location: "Khu cổng", file: "Cổng Bên Trái.jpg" },
|
||||
{ title: "Lối vào bên trái", location: "Khu cổng", file: "Lối Vào Been Trái.jpg" },
|
||||
{ title: "Đường bên phải", location: "Đường vào", file: "Đường Hữu.jpg" },
|
||||
{ title: "Đường bên trái qua vòm", location: "Đường vào", file: "Đường Tả Qua Vòm.jpg" },
|
||||
{ title: "Đường tả qua vòm", location: "Đường vào", file: "Duong Tả Vòm.jpg" },
|
||||
{ title: "Chính sảnh", location: "Tiền đường & Chính điện", file: "Chính Sảnh.jpg" },
|
||||
{ title: "Gian giữa", location: "Tiền đường & Chính điện", file: "Chính.jpg" },
|
||||
{ title: "Trung tâm chính điện", location: "Tiền đường & Chính điện", file: "Giuawx.jpg" },
|
||||
{ title: "Cổng bên phải", location: "Khu cổng" },
|
||||
{ title: "Cổng bên trái", location: "Khu cổng" },
|
||||
{ title: "Lối vào bên trái", location: "Khu cổng" },
|
||||
{ title: "Đường bên phải", location: "Đường vào" },
|
||||
{ title: "Đường bên trái qua vòm", location: "Đường vào" },
|
||||
{ title: "Đường tả qua vòm", location: "Đường vào" },
|
||||
{ title: "Chính sảnh", location: "Tiền đường & Chính điện" },
|
||||
{ title: "Gian giữa", location: "Tiền đường & Chính điện" },
|
||||
{ title: "Trung tâm chính điện", location: "Tiền đường & Chính điện" },
|
||||
{
|
||||
title: "Chính điện",
|
||||
location: "Tiền đường & Chính điện",
|
||||
file: "Chính Điện 3.jpg",
|
||||
infoMarkers: [
|
||||
{
|
||||
id: "cham-khac-go",
|
||||
@@ -64,18 +66,17 @@ const seeds: SceneSeed[] = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{ title: "Gian trong chính điện", location: "Tiền đường & Chính điện", file: "4.jpg" },
|
||||
{ title: "Ban thờ bên trái", location: "Khu thờ trong chùa", file: "Chùa 1 Tả.jpg" },
|
||||
{ title: "Ban thờ chính giữa", location: "Khu thờ trong chùa", file: "Chùa 1 Giữa.jpg" },
|
||||
{ title: "Ban thờ bên phải", location: "Khu thờ trong chùa", file: "Chùa 1 Hữu.jpg" },
|
||||
{ title: "Gian trong - giữa", location: "Khu thờ trong chùa", file: "Chùa 1 Trong - Giữa.jpg" },
|
||||
{ title: "Gian trong bên trái", location: "Khu thờ trong chùa", file: "Chùa 1 Trong Tả.jpg" },
|
||||
{ title: "Hành lang bên phải", location: "Khu thờ trong chùa", file: "Hữu 2.jpg" },
|
||||
{ title: "Hành lang bên phải (tiếp)", location: "Khu thờ trong chùa", file: "Hữu 3.jpg" },
|
||||
{ title: "Gian trong chính điện", location: "Tiền đường & Chính điện" },
|
||||
{ title: "Ban thờ bên trái", location: "Khu thờ trong chùa" },
|
||||
{ title: "Ban thờ chính giữa", location: "Khu thờ trong chùa" },
|
||||
{ title: "Ban thờ bên phải", location: "Khu thờ trong chùa" },
|
||||
{ title: "Gian trong - giữa", location: "Khu thờ trong chùa" },
|
||||
{ title: "Gian trong bên trái", location: "Khu thờ trong chùa" },
|
||||
{ title: "Hành lang bên phải", location: "Khu thờ trong chùa" },
|
||||
{ title: "Hành lang bên phải (tiếp)", location: "Khu thờ trong chùa" },
|
||||
{
|
||||
title: "Tượng Quan Âm",
|
||||
location: "Ban thờ tượng",
|
||||
file: "Tượng Quan Âm.jpg",
|
||||
infoMarkers: [
|
||||
{
|
||||
id: "dai-quan-am",
|
||||
@@ -90,12 +91,12 @@ const seeds: SceneSeed[] = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{ title: "Tượng La Hán bên trái", location: "Ban thờ tượng", file: "La Hán Tả.jpg" },
|
||||
{ title: "Nhà thờ Phật bên phải", location: "Ban thờ tượng", file: "Nhà Phật Hữu.jpg" },
|
||||
{ title: "Ao cá Koi", location: "Cảnh quan", file: "Ao Cá Koi.jpg" },
|
||||
{ title: "Gốc ngõa bên trái", location: "Cảnh quan", file: "Gốc Ngoã Tả.jpg" },
|
||||
{ title: "Gốc ngõa bên phải", location: "Cảnh quan", file: "Gốc Ngoã Hữu.jpg" },
|
||||
{ title: "Phía sau chùa", location: "Cảnh quan", file: "Sau Chùa.jpg" },
|
||||
{ title: "Tượng La Hán bên trái", location: "Ban thờ tượng" },
|
||||
{ title: "Nhà thờ Phật bên phải", location: "Ban thờ tượng" },
|
||||
{ title: "Ao cá Koi", location: "Cảnh quan" },
|
||||
{ title: "Gốc ngõa bên trái", location: "Cảnh quan" },
|
||||
{ title: "Gốc ngõa bên phải", location: "Cảnh quan" },
|
||||
{ title: "Phía sau chùa", location: "Cảnh quan" },
|
||||
];
|
||||
|
||||
const sceneId = (index: number) => `scene-${index + 1}`;
|
||||
@@ -131,7 +132,7 @@ const scenes: TourScene[] = seeds.map((seed, index) => {
|
||||
order: String(index + 1).padStart(2, "0"),
|
||||
title: seed.title,
|
||||
location: seed.location,
|
||||
image: p(seed.file),
|
||||
image: imageFor(index),
|
||||
initialYaw: seed.initialYaw ?? 0,
|
||||
mapPosition,
|
||||
hotspots,
|
||||
@@ -151,10 +152,10 @@ export const chuaThaiLacTour: Omit<TourConfig, "sceneById" | "locationGroups"> =
|
||||
welcomeAccent: "Pháp Vân tự",
|
||||
welcomeSubtitle:
|
||||
"Tham quan 360° ngôi chùa cổ thờ Pháp Vân, nổi tiếng với mảng chạm khắc gỗ thời Trần.",
|
||||
welcomeBackgroundImage: p("Chính Sảnh.jpg"),
|
||||
welcomeBackgroundImage: imageFor(7), // 08.jpg — Chính sảnh
|
||||
welcomeCards: [
|
||||
{ image: p("Chính Diện Cổng Chùa.jpg"), label: "Cổng chùa", rotate: "-rotate-6", sceneId: "scene-1" },
|
||||
{ image: p("Tượng Quan Âm.jpg"), label: "Đài Quan Âm", rotate: "rotate-5", sceneId: "scene-20" },
|
||||
{ image: imageFor(0), label: "Cổng chùa", rotate: "-rotate-6", sceneId: "scene-1" },
|
||||
{ image: imageFor(19), label: "Đài Quan Âm", rotate: "rotate-5", sceneId: "scene-20" },
|
||||
],
|
||||
backgroundAudio: "", // chưa có nhạc nền; engine bỏ qua chuỗi rỗng (không render thẻ audio)
|
||||
practicalInfo: {
|
||||
|
||||
Reference in New Issue
Block a user