refactor: update scene configuration and navigation after removing unused scenes
This commit is contained in:
+165
-184
@@ -20,11 +20,11 @@ type SceneSeed = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
// Danh sách cảnh sau khi XOÁ 3 cảnh (ảnh 20/21/22) và ĐÁNH SỐ LẠI liền mạch 1..23.
|
// Danh sách cảnh sau khi XOÁ 5 cảnh (ảnh 04/13/20/21/22 không dùng) và ĐÁNH SỐ LẠI liền mạch 1..21.
|
||||||
// Mỗi cảnh giữ nguyên ảnh gốc qua `imageFile`; số cảnh hiển thị = vị trí trong mảng.
|
// Mỗi cảnh giữ nguyên ảnh gốc qua `imageFile`; số cảnh hiển thị = vị trí trong mảng.
|
||||||
// Tên cảnh & nhóm khu vực được đặt lại theo đúng nội dung từng ảnh panorama:
|
// Tên cảnh & nhóm khu vực được đặt lại theo đúng nội dung từng ảnh panorama:
|
||||||
// 1-4 Khu cổng · 5-7 Cảnh quan vườn · 8-11 Sân chùa & Tam quan ·
|
// 1-3 Khu cổng · 4-6 Cảnh quan vườn · 7-10 Sân chùa & Tam quan ·
|
||||||
// 12-17 Khu nhà Tổ & nhà khách · 18-23 Điện thờ & hành lang tượng.
|
// 11-15 Khu nhà Tổ & nhà khách · 16-21 Điện thờ & hành lang tượng.
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
const seeds: SceneSeed[] = [
|
const seeds: SceneSeed[] = [
|
||||||
// 1 — ảnh 01: cổng chùa, cây cổ thụ và ghế đá trong sân
|
// 1 — ảnh 01: cổng chùa, cây cổ thụ và ghế đá trong sân
|
||||||
@@ -51,35 +51,31 @@ const seeds: SceneSeed[] = [
|
|||||||
{ title: "Cổng chùa bên đường", location: "Khu cổng", imageFile: 2 },
|
{ title: "Cổng chùa bên đường", location: "Khu cổng", imageFile: 2 },
|
||||||
// 3 — ảnh 03: đường trước cổng, cột cờ
|
// 3 — ảnh 03: đường trước cổng, cột cờ
|
||||||
{ title: "Đường vào cổng chùa", location: "Khu cổng", imageFile: 3 },
|
{ title: "Đường vào cổng chùa", location: "Khu cổng", imageFile: 3 },
|
||||||
// 4 — ảnh 04: cổng vòm nhỏ dẫn vào sân chùa
|
// 4 — ảnh 05: sân vườn, ghế đá, bảng nội quy
|
||||||
{ title: "Cổng vào khuôn viên", location: "Khu cổng", imageFile: 4 },
|
|
||||||
// 5 — ảnh 05: sân vườn, ghế đá, bảng nội quy
|
|
||||||
{ title: "Vườn chùa", location: "Cảnh quan vườn chùa", imageFile: 5 },
|
{ title: "Vườn chùa", location: "Cảnh quan vườn chùa", imageFile: 5 },
|
||||||
// 6 — ảnh 06: lối đi rợp bóng hàng cây, tường vàng
|
// 5 — ảnh 06: lối đi rợp bóng hàng cây, tường vàng
|
||||||
{ title: "Lối vào rợp bóng cây", location: "Cảnh quan vườn chùa", imageFile: 6 },
|
{ title: "Lối vào rợp bóng cây", location: "Cảnh quan vườn chùa", imageFile: 6 },
|
||||||
// 7 — ảnh 07: hồ nước cảnh quan, lan can đá, gò non bộ
|
// 6 — ảnh 07: hồ nước cảnh quan, lan can đá, gò non bộ
|
||||||
{ title: "Hồ nước cảnh quan", location: "Cảnh quan vườn chùa", imageFile: 7 },
|
{ title: "Hồ nước cảnh quan", location: "Cảnh quan vườn chùa", imageFile: 7 },
|
||||||
// 8 — ảnh 08: sân lớn lát đá trước gác chuông tam quan đồ sộ
|
// 7 — ảnh 08: sân lớn lát đá trước gác chuông tam quan đồ sộ
|
||||||
{ title: "Gác chuông Tam quan", location: "Sân chùa & Tam quan", imageFile: 8 },
|
{ title: "Gác chuông Tam quan", location: "Sân chùa & Tam quan", imageFile: 8 },
|
||||||
// 9 — ảnh 09: sân gạch, tam quan bên trái, đài Quan Âm bên phải
|
// 8 — ảnh 09: sân gạch, tam quan bên trái, đài Quan Âm bên phải
|
||||||
{ title: "Sân chùa và đài Quan Âm", location: "Sân chùa & Tam quan", imageFile: 9 },
|
{ title: "Sân chùa và đài Quan Âm", location: "Sân chùa & Tam quan", imageFile: 9 },
|
||||||
// 10 — ảnh 10: đài Quan Âm lộ thiên, sân lát gạch đỏ
|
// 9 — ảnh 10: đài Quan Âm lộ thiên, sân lát gạch đỏ
|
||||||
{ title: "Đài Quan Âm lộ thiên", location: "Sân chùa & Tam quan", imageFile: 10 },
|
{ title: "Đài Quan Âm lộ thiên", location: "Sân chùa & Tam quan", imageFile: 10 },
|
||||||
// 11 — ảnh 11: vườn tháp, tháp mộ gạch cổ
|
// 10 — ảnh 11: vườn tháp, tháp mộ gạch cổ
|
||||||
{ title: "Vườn tháp cổ", location: "Sân chùa & Tam quan", imageFile: 11 },
|
{ title: "Vườn tháp cổ", location: "Sân chùa & Tam quan", imageFile: 11 },
|
||||||
// 12 — ảnh 12: lối đi hẹp giữa các dãy nhà, chậu cảnh
|
// 11 — ảnh 12: lối đi hẹp giữa các dãy nhà, chậu cảnh
|
||||||
{ title: "Lối vào khu nhà Tổ", location: "Khu nhà Tổ & nhà khách", imageFile: 12 },
|
{ title: "Lối vào khu nhà Tổ", location: "Khu nhà Tổ & nhà khách", imageFile: 12 },
|
||||||
// 13 — ảnh 13: sân trong khu nhà ngang, cây cổ thụ
|
// 12 — ảnh 14: hiên nhà có hàng cột, giàn cây xanh che mát
|
||||||
{ title: "Sân nhà Tổ", location: "Khu nhà Tổ & nhà khách", imageFile: 13 },
|
|
||||||
// 14 — ảnh 14: hiên nhà có hàng cột, giàn cây xanh che mát
|
|
||||||
{ title: "Hiên nhà dưới giàn cây", location: "Khu nhà Tổ & nhà khách", imageFile: 14 },
|
{ title: "Hiên nhà dưới giàn cây", location: "Khu nhà Tổ & nhà khách", imageFile: 14 },
|
||||||
// 15 — ảnh 15: sân sau, hiên gạch đỏ của dãy nhà
|
// 13 — ảnh 15: sân sau, hiên gạch đỏ của dãy nhà
|
||||||
{ title: "Sân sau nhà khách", location: "Khu nhà Tổ & nhà khách", imageFile: 15 },
|
{ title: "Sân sau nhà khách", location: "Khu nhà Tổ & nhà khách", imageFile: 15 },
|
||||||
// 16 — ảnh 16: sân trong giếng trời, cây cổ thụ tỏa bóng, bàn ghế đá
|
// 14 — ảnh 16: sân trong giếng trời, cây cổ thụ tỏa bóng, bàn ghế đá
|
||||||
{ title: "Sân trong giếng trời", location: "Khu nhà Tổ & nhà khách", imageFile: 16 },
|
{ title: "Sân trong giếng trời", location: "Khu nhà Tổ & nhà khách", imageFile: 16 },
|
||||||
// 17 — ảnh 17: nhà khách, hàng ghế gỗ dài, tường treo ảnh
|
// 15 — ảnh 17: nhà khách, hàng ghế gỗ dài, tường treo ảnh
|
||||||
{ title: "Nhà khách", location: "Khu nhà Tổ & nhà khách", imageFile: 17 },
|
{ title: "Nhà khách", location: "Khu nhà Tổ & nhà khách", imageFile: 17 },
|
||||||
// 18 — ảnh 18: hành lang gỗ cổ với hàng tượng, cột & vì kèo cổ (chạm khắc thời Trần)
|
// 16 — ảnh 18: hành lang gỗ cổ với hàng tượng, cột & vì kèo cổ (chạm khắc thời Trần)
|
||||||
{
|
{
|
||||||
title: "Hành lang tượng cổ",
|
title: "Hành lang tượng cổ",
|
||||||
location: "Điện thờ & hành lang tượng",
|
location: "Điện thờ & hành lang tượng",
|
||||||
@@ -99,91 +95,83 @@ const seeds: SceneSeed[] = [
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
// 19 — ảnh 19: sân thiên tỉnh, hòm công đức, hòn non bộ
|
// 17 — ảnh 19: sân thiên tỉnh, hòm công đức, hòn non bộ
|
||||||
{ title: "Sân thiên tỉnh", location: "Điện thờ & hành lang tượng", imageFile: 19 },
|
{ title: "Sân thiên tỉnh", location: "Điện thờ & hành lang tượng", imageFile: 19 },
|
||||||
// 20 — ảnh 23: hàng tượng thờ bên hành lang, sân vườn cây lựu
|
// 18 — ảnh 23: hàng tượng thờ bên hành lang, sân vườn cây lựu
|
||||||
{ title: "Hành lang tượng và sân vườn", location: "Điện thờ & hành lang tượng", imageFile: 23 },
|
{ title: "Hành lang tượng và sân vườn", location: "Điện thờ & hành lang tượng", imageFile: 23 },
|
||||||
// 21 — ảnh 24: gian thờ bên trong, vách gỗ bức bàn, ban thờ hai bên
|
// 19 — ảnh 24: gian thờ bên trong, vách gỗ bức bàn, ban thờ hai bên
|
||||||
{ title: "Gian thờ bên trong", location: "Điện thờ & hành lang tượng", imageFile: 24 },
|
{ title: "Gian thờ bên trong", location: "Điện thờ & hành lang tượng", imageFile: 24 },
|
||||||
// 22 — ảnh 25: thượng điện, khám thờ gỗ, cột cổ, ban thờ hai bên
|
// 20 — ảnh 25: thượng điện, khám thờ gỗ, cột cổ, ban thờ hai bên
|
||||||
{ title: "Thượng điện", location: "Điện thờ & hành lang tượng", imageFile: 25 },
|
{ title: "Thượng điện", location: "Điện thờ & hành lang tượng", imageFile: 25 },
|
||||||
// 23 — ảnh 26: hậu đường, hàng cột, ban thờ tượng dọc tường
|
// 21 — ảnh 26: hậu đường, hàng cột, ban thờ tượng dọc tường
|
||||||
{ title: "Hậu đường", location: "Điện thờ & hành lang tượng", imageFile: 26 },
|
{ title: "Hậu đường", location: "Điện thờ & hành lang tượng", imageFile: 26 },
|
||||||
];
|
];
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
// ĐỒ THỊ HƯỚNG ĐI (có hướng) — khoá là SỐ CẢNH MỚI (1..23), giá trị là danh sách
|
// ĐỒ THỊ HƯỚNG ĐI (có hướng) — khoá là SỐ CẢNH (1..21), giá trị là danh sách
|
||||||
// các cảnh mà từ đó có thể đi tới. Đây chính là các mũi tên hiển thị trong ảnh 360.
|
// các cảnh mà từ đó có thể đi tới. Đây chính là các mũi tên hiển thị trong ảnh 360.
|
||||||
// Lấy theo yêu cầu (đã quy đổi số cũ → số mới: 23→20, 24→21, 25→22, 26→23):
|
// Đã xoá cảnh 04 (Cổng vào khuôn viên) và cảnh 13 (Sân nhà Tổ); hướng đi bypass:
|
||||||
// cũ 8→…,25 ⇒ 8→…,22 | cũ 19→…,23 ⇒ 19→…,20 | cũ 23→19,(24),25 ⇒ 20→19,21,22
|
// cũ 3→4→5 ⇒ 3→4(mới) | cũ 12→13→14 ⇒ 11→12(mới) (số mới sau đánh lại).
|
||||||
// cũ 25→23,26,8 ⇒ 22→20,23,8 | cũ 24→23 ⇒ 21→20 | thêm 23→22 để có lối quay lại.
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
const adjacency: Record<number, number[]> = {
|
const adjacency: Record<number, number[]> = {
|
||||||
1: [2, 3, 8],
|
1: [2, 3, 7],
|
||||||
2: [1, 9],
|
2: [1, 8],
|
||||||
3: [1, 4],
|
3: [1, 4],
|
||||||
4: [5, 7],
|
4: [5, 6, 7],
|
||||||
5: [4, 6, 7, 8],
|
5: [4, 15],
|
||||||
6: [5, 17],
|
6: [4],
|
||||||
7: [4, 5],
|
7: [1, 4, 8, 20],
|
||||||
8: [1, 5, 9, 22],
|
8: [2, 7, 9, 11],
|
||||||
9: [2, 8, 10, 12],
|
9: [8, 10],
|
||||||
10: [9, 11],
|
10: [8, 9],
|
||||||
11: [9, 10],
|
11: [8, 12],
|
||||||
12: [9, 13],
|
12: [11, 13],
|
||||||
13: [12, 14],
|
13: [12, 14],
|
||||||
14: [13, 15],
|
14: [13, 15],
|
||||||
15: [14, 16],
|
15: [14, 17, 5],
|
||||||
16: [15, 17],
|
16: [15, 17],
|
||||||
17: [16, 19, 6],
|
17: [15, 16, 18],
|
||||||
18: [17, 19],
|
18: [17, 19],
|
||||||
19: [17, 18, 20],
|
19: [18, 20],
|
||||||
20: [19, 21],
|
20: [19, 21, 7],
|
||||||
21: [20, 22],
|
21: [20],
|
||||||
22: [21, 23, 8],
|
|
||||||
23: [22],
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Toạ độ sơ đồ (mini-map): x trái→phải, y trên(0)→dưới(100).
|
// Toạ độ sơ đồ (mini-map): x trái→phải, y trên(0)→dưới(100).
|
||||||
// Cổng ở dưới, tiến dần lên trên qua chính điện → khu thờ → cảnh quan sau chùa.
|
// Cổng ở dưới, tiến dần lên trên qua chính điện → khu thờ → cảnh quan sau chùa.
|
||||||
// Bố cục này quyết định luôn HƯỚNG mũi tên trong ảnh 360 (tính theo phương vị bản đồ).
|
// Bố cục này quyết định luôn HƯỚNG mũi tên trong ảnh 360 (tính theo phương vị bản đồ).
|
||||||
// Ràng buộc hình học:
|
// Ràng buộc hình học:
|
||||||
// • 1-2-9-8 là một hình vuông (2,9 bên trái), 1-3-5-8 là một hình vuông (3,5 bên phải);
|
// • 1-2-8-7 là một hình vuông (2,8 bên trái), 1-3-4-7 là một hình vuông (3,4 bên phải);
|
||||||
// hai hình vuông dùng chung cạnh đứng 1-8 ở giữa (x=50).
|
// hai hình vuông dùng chung cạnh đứng 1-7 ở giữa (x=50).
|
||||||
// • 3,4,5,6 nằm trên một cột dọc bên phải (x=68); 3-4-5 thẳng hàng tạo cạnh phải hình vuông.
|
// • 3,4,5 nằm trên một cột dọc bên phải (x=68); 3-4 thẳng hàng tạo cạnh phải hình vuông.
|
||||||
// • 9,12,13,14 nằm trên một cột dọc bên trái (x=32); 10,11 nằm trên một cột dọc (x=18).
|
// • 8,11,12 nằm trên một cột dọc bên trái (x=32); 9,10 nằm trên cột dọc (x~16-18).
|
||||||
// • Cột dọc 12-13-14 (x=32) VUÔNG GÓC với hàng ngang 14-15-16 (y=22), gặp nhau tại 14;
|
// • Cột dọc 11-12 (x=32) VUÔNG GÓC với hàng ngang 12-13-14 (y=12), gặp nhau tại 12.
|
||||||
// khoảng cách 13↔14 được giãn rộng.
|
// • 1-7-20-17-13 cùng cột dọc giữa (x=50); 3-4-5-14 cùng cột dọc phải (x=68).
|
||||||
// • 1-8-22-19-15 cùng cột dọc giữa (x=50); 3-4-5-6-16 cùng cột dọc phải (x=68);
|
// • 19-20-21 cùng một hàng ngang (y=56); 16-18 cùng khu hàng ngang (y~40-42).
|
||||||
// 7-17 cùng cột dọc (x=82).
|
// • Nhóm giữa 16-17-18 được kéo lên cao, giãn xa khỏi hàng dưới 11-19-20-21.
|
||||||
// • 21-22-23 cùng một hàng ngang (y=56); 13-20 cùng một hàng ngang (y=40).
|
// • Band 11-19-20-21-5 (y~56) được giãn cách khỏi hàng 8-7-4 (y=72).
|
||||||
// • Nhóm giữa 13-18-19-20 được kéo lên cao, giãn xa khỏi hàng dưới 12-21-22-23;
|
|
||||||
// 19 cao hơn (y nhỏ hơn) cả 20 và 13.
|
|
||||||
// • Band 12-21-22-23-6 (y=56) được giãn cách khỏi hàng 9-8-5 (y=72).
|
|
||||||
const mapPositions: Record<number, { x: number; y: number }> = {
|
const mapPositions: Record<number, { x: number; y: number }> = {
|
||||||
1: { x: 50, y: 100 },
|
1: { x: 50, y: 100 },
|
||||||
2: { x: 32, y: 90 },
|
2: { x: 32, y: 90 },
|
||||||
3: { x: 68, y: 90 },
|
3: { x: 68, y: 90 },
|
||||||
4: { x: 68, y: 81 },
|
4: { x: 68, y: 72 },
|
||||||
5: { x: 68, y: 72 },
|
5: { x: 68, y: 56 },
|
||||||
6: { x: 68, y: 56 },
|
6: { x: 78, y: 76 },
|
||||||
7: { x: 78, y: 76 },
|
7: { x: 50, y: 72 },
|
||||||
8: { x: 50, y: 72 },
|
8: { x: 32, y: 72 },
|
||||||
9: { x: 32, y: 72 },
|
9: { x: 16, y: 72 },
|
||||||
10: { x: 16, y: 72 },
|
10: { x: 18, y: 58 },
|
||||||
11: { x: 18, y: 58 },
|
11: { x: 32, y: 56 },
|
||||||
12: { x: 32, y: 56 },
|
12: { x: 32, y: 12 },
|
||||||
13: { x: 32, y: 40 },
|
13: { x: 50, y: 12 },
|
||||||
14: { x: 32, y: 12 },
|
14: { x: 68, y: 12 },
|
||||||
15: { x: 50, y: 12 },
|
15: { x: 82, y: 34 },
|
||||||
16: { x: 68, y: 12 },
|
16: { x: 64, y: 42 },
|
||||||
17: { x: 82, y: 34 },
|
17: { x: 50, y: 32 },
|
||||||
18: { x: 64, y: 42 },
|
18: { x: 42, y: 40 },
|
||||||
19: { x: 50, y: 32 },
|
19: { x: 40, y: 56 },
|
||||||
20: { x: 42, y: 40 },
|
20: { x: 50, y: 56 },
|
||||||
21: { x: 40, y: 56 },
|
21: { x: 60, y: 56 },
|
||||||
22: { x: 50, y: 56 },
|
|
||||||
23: { x: 60, y: 56 },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const sceneId = (sceneNumber: number) => `scene-${sceneNumber}`;
|
const sceneId = (sceneNumber: number) => `scene-${sceneNumber}`;
|
||||||
@@ -220,11 +208,11 @@ const DEFAULT_ARROW_PITCH = -8; // độ chúc xuống mặc định cho mọi m
|
|||||||
|
|
||||||
// ① CẤU HÌNH TỪNG MŨI TÊN — tất cả tham số của một mũi tên gom vào MỘT dòng cho dễ chỉnh.
|
// ① CẤU HÌNH TỪNG MŨI TÊN — tất cả tham số của một mũi tên gom vào MỘT dòng cho dễ chỉnh.
|
||||||
type ArrowAdjust = {
|
type ArrowAdjust = {
|
||||||
yaw?: number; // góc NGANG (trái/phải). Bỏ trống → tự tính theo mini-map.
|
yaw?: number; // góc NGANG (trái/phải). Bỏ trống → tự tính theo mini-map.
|
||||||
pitch?: number; // góc DỌC (lên/xuống). Bỏ trống → DEFAULT_ARROW_PITCH.
|
pitch?: number; // góc DỌC (lên/xuống). Bỏ trống → DEFAULT_ARROW_PITCH.
|
||||||
rotation?: number; // xoay hình icon mũi tên (độ) — chỉnh chiều vẽ của mũi tên.
|
rotation?: number; // xoay hình icon mũi tên (độ) — chỉnh chiều vẽ của mũi tên.
|
||||||
nextYaw?: number; // hướng camera quay về SAU khi bấm sang cảnh đích. Bỏ trống → bằng yaw.
|
nextYaw?: number; // hướng camera quay về SAU khi bấm sang cảnh đích. Bỏ trống → bằng yaw.
|
||||||
scale?: number; // xa/gần (kích thước): 1 = mặc định, >1 to/gần hơn, <1 nhỏ/xa hơn.
|
scale?: number; // xa/gần (kích thước): 1 = mặc định, >1 to/gần hơn, <1 nhỏ/xa hơn.
|
||||||
};
|
};
|
||||||
|
|
||||||
// ┌─ VÍ DỤ MẪU — copy phần trong { } rồi dán đè vào mũi tên cần chỉnh ───────────┐
|
// ┌─ VÍ DỤ MẪU — copy phần trong { } rồi dán đè vào mũi tên cần chỉnh ───────────┐
|
||||||
@@ -237,111 +225,101 @@ type ArrowAdjust = {
|
|||||||
// └─────────────────────────────────────────────────────────────────────────────┘
|
// └─────────────────────────────────────────────────────────────────────────────┘
|
||||||
const arrowConfig: Record<string, ArrowAdjust> = {
|
const arrowConfig: Record<string, ArrowAdjust> = {
|
||||||
// Cảnh 1 — Cổng chùa Thái Lạc
|
// Cảnh 1 — Cổng chùa Thái Lạc
|
||||||
"1->2" : { yaw: 88, pitch: -2, rotation: 20 }, // → 2. Cổng chùa bên đường
|
"1->2": { yaw: 88, pitch: -2, rotation: 20 }, // → 2. Cổng chùa bên đường
|
||||||
"1->3" : { yaw: -170, pitch: -5, rotation: -10 }, // → 3. Đường vào cổng chùa
|
"1->3": { yaw: -170, pitch: -5, rotation: -10 }, // → 3. Đường vào cổng chùa
|
||||||
"1->8" : { yaw: 140, pitch: -6, rotation: 0 }, // → 8. Gác chuông Tam quan
|
"1->7": { yaw: 140, pitch: -6, rotation: 0 }, // → 7. Gác chuông Tam quan
|
||||||
// Cảnh 2 — Cổng chùa bên đường
|
// Cảnh 2 — Cổng chùa bên đường
|
||||||
"2->1" : { yaw: -90, pitch: -18, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
|
"2->1": { yaw: -90, pitch: -18, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
|
||||||
"2->9" : { yaw: 140, pitch: -20, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
|
"2->8": { yaw: 140, pitch: -20, rotation: 0 }, // → 8. Sân chùa và đài Quan Âm
|
||||||
// Cảnh 3 — Đường vào cổng chùa
|
// Cảnh 3 — Đường vào cổng chùa
|
||||||
"3->1" : { yaw: 10, pitch: -18, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
|
"3->1": { yaw: 10, pitch: -18, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
|
||||||
"3->4" : { yaw: 120, pitch: -18, rotation: 0 }, // → 4. Cổng vào khuôn viên
|
"3->4": {}, // → 4. Vườn chùa (chỉnh lại nếu lệch)
|
||||||
// Cảnh 4 — Cổng vào khuôn viên
|
// Cảnh 4 — Vườn chùa
|
||||||
"4->5" : { yaw: 120, pitch: -5, rotation: 0 }, // → 5. Vườn chùa
|
"4->5": { yaw: 100, pitch: -18, rotation: 0 }, // → 5. Lối vào rợp bóng cây
|
||||||
"4->7" : { yaw: 150, pitch: -8, rotation: 0 }, // → 7. Hồ nước cảnh quan
|
"4->6": { yaw: -120, pitch: -22, rotation: -20 }, // → 6. Hồ nước cảnh quan
|
||||||
// Cảnh 5 — Vườn chùa
|
"4->7": { yaw: -60, pitch: -20, rotation: 30 }, // → 7. Gác chuông Tam quan
|
||||||
"5->4" : { yaw: -88, pitch: -15, rotation: 0 }, // → 4. Cổng vào khuôn viên
|
// Cảnh 5 — Lối vào rợp bóng cây
|
||||||
"5->6" : { yaw: 100, pitch: -18, rotation: 0 }, // → 6. Lối vào rợp bóng cây
|
"5->4": { yaw: 290, pitch: -26, rotation: -30 }, // → 4. Vườn chùa
|
||||||
"5->7" : { yaw: -120, pitch: -22, rotation: -20 }, // → 7. Hồ nước cảnh quan
|
"5->15": { yaw: 32, pitch: -8, rotation: 0 }, // → 15. Nhà khách
|
||||||
"5->8" : { yaw: -60, pitch: -20, rotation: 30 }, // → 8. Gác chuông Tam quan
|
// Cảnh 6 — Hồ nước cảnh quan
|
||||||
// Cảnh 6 — Lối vào rợp bóng cây
|
"6->4": { yaw: 39, pitch: -18, rotation: 30 }, // → 4. Vườn chùa
|
||||||
"6->5" : { yaw: 290, pitch: -26, rotation: -30 }, // → 5. Vườn chùa
|
// Cảnh 7 — Gác chuông Tam quan
|
||||||
"6->17" : { yaw: 32, pitch: -8, rotation: 0 }, // → 17. Nhà khách
|
"7->1": { yaw: 313, pitch: -8, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
|
||||||
// Cảnh 7 — Hồ nước cảnh quan
|
"7->4": { yaw: 210, pitch: -8, rotation: 0 }, // → 4. Vườn chùa
|
||||||
"7->4" : { yaw: 0, pitch: -18, rotation: -20 }, // → 4. Cổng vào khuôn viên
|
"7->8": { yaw: 30, pitch: -8, rotation: 0 }, // → 8. Sân chùa và đài Quan Âm
|
||||||
"7->5" : { yaw: 39, pitch: -18, rotation: 30 }, // → 5. Vườn chùa
|
"7->20": { yaw: 115, pitch: -15, rotation: 0 }, // → 20. Thượng điện
|
||||||
// Cảnh 8 — Gác chuông Tam quan
|
// Cảnh 8 — Sân chùa và đài Quan Âm
|
||||||
"8->1" : { yaw: 313, pitch: -8, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
|
"8->2": { yaw: 300, pitch: -8, rotation: 0 }, // → 2. Cổng chùa bên đường
|
||||||
"8->5" : { yaw: 210, pitch: -8, rotation: 0 }, // → 5. Vườn chùa
|
"8->7": { yaw: 200, pitch: -13, rotation: 0 }, // → 7. Gác chuông Tam quan
|
||||||
"8->9" : { yaw: 30, pitch: -8, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
|
"8->9": { yaw: 23, pitch: -8, rotation: 0 }, // → 9. Đài Quan Âm lộ thiên
|
||||||
"8->22" : { yaw: 115, pitch: -15, rotation: 0 }, // → 22. Thượng điện
|
"8->11": { yaw: 117, pitch: -8, rotation: 0 }, // → 11. Lối vào khu nhà Tổ
|
||||||
// Cảnh 9 — Sân chùa và đài Quan Âm
|
// Cảnh 9 — Đài Quan Âm lộ thiên
|
||||||
"9->2" : { yaw: 300, pitch: -8, rotation: 0 }, // → 2. Cổng chùa bên đường
|
"9->8": { yaw: 290, pitch: -18, rotation: 0 }, // → 8. Sân chùa và đài Quan Âm
|
||||||
"9->8" : { yaw: 200, pitch: -13, rotation: 0 }, // → 8. Gác chuông Tam quan
|
"9->10": { yaw: 210, pitch: -22, rotation: 0 }, // → 10. Vườn tháp cổ
|
||||||
"9->10" : { yaw: 23, pitch: -8, rotation: 0 }, // → 10. Đài Quan Âm lộ thiên
|
// Cảnh 10 — Vườn tháp cổ
|
||||||
"9->12" : { yaw: 117, pitch: -8, rotation: 0 }, // → 12. Lối vào khu nhà Tổ
|
"10->8": { yaw: 231, pitch: -28, rotation: 0 }, // → 8. Sân chùa và đài Quan Âm
|
||||||
// Cảnh 10 — Đài Quan Âm lộ thiên
|
"10->9": { yaw: 350, pitch: -11, rotation: -20 }, // → 9. Đài Quan Âm lộ thiên
|
||||||
"10->9" : { yaw: 290, pitch: -18, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
|
// Cảnh 11 — Lối vào khu nhà Tổ
|
||||||
"10->11": { yaw: 210, pitch: -22, rotation: 0 }, // → 11. Vườn tháp cổ
|
"11->8": { yaw: 292, pitch: -8, rotation: 0 }, // → 8. Sân chùa và đài Quan Âm
|
||||||
// Cảnh 11 — Vườn tháp cổ
|
"11->12": {}, // → 12. Hiên nhà dưới giàn cây (chỉnh lại nếu lệch)
|
||||||
"11->9" : { yaw: 231, pitch: -28, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
|
// Cảnh 12 — Hiên nhà dưới giàn cây
|
||||||
"11->10": { yaw: 350, pitch: -11, rotation: -20 }, // → 10. Đài Quan Âm lộ thiên
|
"12->11": {}, // → 11. Lối vào khu nhà Tổ (chỉnh lại nếu lệch)
|
||||||
// Cảnh 12 — Lối vào khu nhà Tổ
|
"12->13": { yaw: 115, pitch: -12, rotation: 0 }, // → 13. Sân sau nhà khách
|
||||||
"12->9" : { yaw: 292, pitch: -8, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
|
// Cảnh 13 — Sân sau nhà khách
|
||||||
"12->13": { yaw: 122, pitch: -8, rotation: 0 }, // → 13. Sân nhà Tổ
|
"13->12": { yaw: -70, pitch: -8, rotation: 0 }, // → 12. Hiên nhà dưới giàn cây
|
||||||
// Cảnh 13 — Sân nhà Tổ
|
"13->14": { yaw: 115, pitch: -8, rotation: 0 }, // → 14. Sân trong giếng trời
|
||||||
"13->12": { yaw: -30, pitch: -18, rotation: 0 }, // → 12. Lối vào khu nhà Tổ
|
// Cảnh 14 — Sân trong giếng trời
|
||||||
"13->14": { yaw: -150, pitch: -18, rotation: 0 }, // → 14. Hiên nhà dưới giàn cây
|
"14->13": { yaw: -22, pitch: -18, rotation: 0 }, // → 13. Sân sau nhà khách
|
||||||
// Cảnh 14 — Hiên nhà dưới giàn cây
|
"14->15": { yaw: 230, pitch: -8, rotation: 0 }, // → 15. Nhà khách
|
||||||
"14->13": { yaw: 228, pitch: -12, rotation: 0 }, // → 13. Sân nhà Tổ
|
// Cảnh 15 — Nhà khách
|
||||||
"14->15": { yaw: 115, pitch: -12, rotation: 0 }, // → 15. Sân sau nhà khách
|
"15->14": { yaw: -28, pitch: -18, rotation: 30 }, // → 14. Sân trong giếng trời
|
||||||
// Cảnh 15 — Sân sau nhà khách
|
"15->17": { yaw: -90, pitch: -18, rotation: 0 }, // → 17. Sân thiên tỉnh
|
||||||
"15->14": { yaw: -70, pitch: -8, rotation: 0 }, // → 14. Hiên nhà dưới giàn cây
|
"15->5": { yaw: -97, pitch: -18, rotation: -40 }, // → 5. Lối vào rợp bóng cây
|
||||||
"15->16": { yaw: 115, pitch: -8, rotation: 0 }, // → 16. Sân trong giếng trời
|
// Cảnh 16 — Hành lang tượng cổ
|
||||||
// Cảnh 16 — Sân trong giếng trời
|
"16->15": { yaw: -62, pitch: -8, rotation: 20 }, // → 15. Nhà khách
|
||||||
"16->15": { yaw: -22, pitch: -18, rotation: 0 }, // → 15. Sân sau nhà khách
|
"16->17": { yaw: -80, pitch: -8, rotation: -20 }, // → 17. Sân thiên tỉnh
|
||||||
"16->17": { yaw: 230, pitch: -8, rotation: 0 }, // → 17. Nhà khách
|
// Cảnh 17 — Sân thiên tỉnh
|
||||||
// Cảnh 17 — Nhà khách
|
"17->15": { yaw: 205, pitch: -12, rotation: 0 }, // → 15. Nhà khách
|
||||||
"17->16": { yaw: -28, pitch: -18, rotation: 30 }, // → 16. Sân trong giếng trời
|
"17->16": { yaw: 220, pitch: -12, rotation: 10 }, // → 16. Hành lang tượng cổ
|
||||||
"17->19": { yaw: -90, pitch: -18, rotation: 0 }, // → 19. Sân thiên tỉnh
|
"17->18": { yaw: 10, pitch: -12, rotation: -10 }, // → 18. Hành lang tượng và sân vườn
|
||||||
"17->6" : { yaw: -97, pitch: -18, rotation: -40 }, // → 6. Lối vào rợp bóng cây
|
// Cảnh 18 — Hành lang tượng và sân vườn
|
||||||
// Cảnh 18 — Hành lang tượng cổ
|
"18->17": { yaw: -110, pitch: -18, rotation: 0 }, // → 17. Sân thiên tỉnh
|
||||||
"18->17": { yaw: -62, pitch: -8, rotation: 20 }, // → 17. Nhà khách
|
"18->19": { yaw: 78, pitch: -18, rotation: 0 }, // → 19. Gian thờ bên trong
|
||||||
"18->19": { yaw: -80, pitch: -8, rotation: -20 }, // → 19. Sân thiên tỉnh
|
// Cảnh 19 — Gian thờ bên trong
|
||||||
// Cảnh 19 — Sân thiên tỉnh
|
"19->18": { yaw: 50, pitch: -22, rotation: 10 }, // → 18. Hành lang tượng và sân vườn
|
||||||
"19->17": { yaw: 205, pitch: -12, rotation: 0 }, // → 17. Nhà khách
|
"19->20": { yaw: 190, pitch: -18, rotation: 0 }, // → 20. Thượng điện
|
||||||
"19->18": { yaw: 220, pitch: -12, rotation: 10 }, // → 18. Hành lang tượng cổ
|
// Cảnh 20 — Thượng điện
|
||||||
"19->20": { yaw: 10, pitch: -12, rotation: -10 }, // → 20. Hành lang tượng và sân vườn
|
"20->19": { yaw: 40, pitch: -18, rotation: 0 }, // → 19. Gian thờ bên trong
|
||||||
// Cảnh 20 — Hành lang tượng và sân vườn
|
"20->21": { yaw: 200, pitch: -18, rotation: 0 }, // → 21. Hậu đường
|
||||||
"20->19": { yaw: -110, pitch: -18, rotation: 0 }, // → 19. Sân thiên tỉnh
|
"20->7": { yaw: 295, pitch: -18, rotation: 0 }, // → 7. Gác chuông Tam quan
|
||||||
"20->21": { yaw: 78, pitch: -18, rotation: 0 }, // → 21. Gian thờ bên trong
|
// Cảnh 21 — Hậu đường
|
||||||
// Cảnh 21 — Gian thờ bên trong
|
"21->20": { yaw: 30, pitch: -18, rotation: 0 }, // → 20. Thượng điện
|
||||||
"21->20": { yaw: 50, pitch: -22, rotation: 10 }, // → 20. Hành lang tượng và sân vườn
|
|
||||||
"21->22": { yaw: 190, pitch: -18, rotation: 0 }, // → 22. Thượng điện
|
|
||||||
// Cảnh 22 — Thượng điện
|
|
||||||
"22->21": { yaw: 40, pitch: -18, rotation: 0 }, // → 21. Gian thờ bên trong
|
|
||||||
"22->23": { yaw: 200, pitch: -18, rotation: 0 }, // → 23. Hậu đường
|
|
||||||
"22->8" : { yaw: 295, pitch: -18, rotation: 0 }, // → 8. Gác chuông Tam quan
|
|
||||||
// Cảnh 23 — Hậu đường
|
|
||||||
"23->22": { yaw: 30, pitch: -18, rotation: 0 }, // → 22. Thượng điện
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ③ Góc nhìn MẶC ĐỊNH của mỗi cảnh — camera tự quay về hướng này khi vừa vào cảnh.
|
// ③ Góc nhìn MẶC ĐỊNH của mỗi cảnh — camera tự quay về hướng này khi vừa vào cảnh.
|
||||||
// yaw = quay ngang (0 = hướng gốc của ảnh), pitch = ngẩng/cúi (0 = ngang tầm mắt).
|
// yaw = quay ngang (0 = hướng gốc của ảnh), pitch = ngẩng/cúi (0 = ngang tầm mắt).
|
||||||
const sceneDefaultView: Record<number, { yaw: number; pitch: number }> = {
|
const sceneDefaultView: Record<number, { yaw: number; pitch: number }> = {
|
||||||
1: { yaw: 140, pitch: 18 }, // Cổng chùa Thái Lạc
|
1: { yaw: 140, pitch: 18 }, // Cổng chùa Thái Lạc
|
||||||
2: { yaw: 140, pitch: 10 }, // Cổng chùa bên đường
|
2: { yaw: 140, pitch: 10 }, // Cổng chùa bên đường
|
||||||
3: { yaw: 120, pitch: 0 }, // Đường vào cổng chùa
|
3: { yaw: 120, pitch: 0 }, // Đường vào cổng chùa
|
||||||
4: { yaw: 120, pitch: 10 }, // Cổng vào khuôn viên
|
4: { yaw: 120, pitch: 0 }, // Vườn chùa
|
||||||
5: { yaw: 120, pitch: 0 }, // Vườn chùa
|
5: { yaw: -80, pitch: -3 }, // Lối vào rợp bóng cây
|
||||||
6: { yaw: -80, pitch: -3 }, // Lối vào rợp bóng cây
|
6: { yaw: 110, pitch: 0 }, // Hồ nước cảnh quan
|
||||||
7: { yaw: 110, pitch: 0 }, // Hồ nước cảnh quan
|
7: { yaw: 90, pitch: 0 }, // Gác chuông Tam quan
|
||||||
8: { yaw: 90, pitch: 0 }, // Gác chuông Tam quan
|
8: { yaw: 20, pitch: 8 }, // Sân chùa và đài Quan Âm
|
||||||
9: { yaw: 20, pitch: 8 }, // Sân chùa và đài Quan Âm
|
9: { yaw: 110, pitch: 0 }, // Đài Quan Âm lộ thiên
|
||||||
10: { yaw: 110, pitch: 0 }, // Đài Quan Âm lộ thiên
|
10: { yaw: 115, pitch: 0 }, // Vườn tháp cổ
|
||||||
11: { yaw: 115, pitch: 0 }, // Vườn tháp cổ
|
11: { yaw: 120, pitch: 0 }, // Lối vào khu nhà Tổ
|
||||||
12: { yaw: 120, pitch: 0 }, // Lối vào khu nhà Tổ
|
12: { yaw: -150, pitch: 0 }, // Hiên nhà dưới giàn cây
|
||||||
13: { yaw: 220, pitch: 0 }, // Sân nhà Tổ
|
13: { yaw: 130, pitch: 0 }, // Sân sau nhà khách
|
||||||
14: { yaw: -150, pitch: 0 }, // Hiên nhà dưới giàn cây
|
14: { yaw: 230, pitch: 0 }, // Sân trong giếng trời
|
||||||
15: { yaw: 130, pitch: 0 }, // Sân sau nhà khách
|
15: { yaw: -60, pitch: 0 }, // Nhà khách
|
||||||
16: { yaw: 230, pitch: 0 }, // Sân trong giếng trời
|
16: { yaw: -80, pitch: 0 }, // Hành lang tượng cổ
|
||||||
17: { yaw: -60, pitch: 0 }, // Nhà khách
|
17: { yaw: 110, pitch: 0 }, // Sân thiên tỉnh
|
||||||
18: { yaw: -80, pitch: 0 }, // Hành lang tượng cổ
|
18: { yaw: 140, pitch: 0 }, // Hành lang tượng và sân vườn
|
||||||
19: { yaw: 110, pitch: 0 }, // Sân thiên tỉnh
|
19: { yaw: 130, pitch: 0 }, // Gian thờ bên trong
|
||||||
20: { yaw: 140, pitch: 0 }, // Hành lang tượng và sân vườn
|
20: { yaw: 110, pitch: 0 }, // Thượng điện
|
||||||
21: { yaw: 130, pitch: 0 }, // Gian thờ bên trong
|
21: { yaw: 150, pitch: 0 }, // Hậu đường
|
||||||
22: { yaw: 110, pitch: 0 }, // Thượng điện
|
|
||||||
23: { yaw: 150, pitch: 0 }, // Hậu đường
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const scenes: TourScene[] = seeds.map((seed, index) => {
|
const scenes: TourScene[] = seeds.map((seed, index) => {
|
||||||
@@ -408,10 +386,10 @@ export const chuaThaiLacTour: Omit<TourConfig, "sceneById" | "locationGroups"> =
|
|||||||
welcomeAccent: "Pháp Vân tự",
|
welcomeAccent: "Pháp Vân tự",
|
||||||
welcomeSubtitle:
|
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.",
|
"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: imageForFile(8), // 08.webp — Chính sảnh
|
welcomeBackgroundImage: imageForFile(8), // 08.webp — Gác chuông Tam quan
|
||||||
welcomeCards: [
|
welcomeCards: [
|
||||||
{ image: imageForFile(1), label: "Cổng chùa", rotate: "-rotate-6", sceneId: "scene-1" },
|
{ image: imageForFile(1), label: "Cổng chùa", rotate: "-rotate-6", sceneId: "scene-1" },
|
||||||
{ image: imageForFile(10), label: "Đài Quan Âm", rotate: "rotate-5", sceneId: "scene-10" },
|
{ image: imageForFile(10), label: "Đài Quan Âm", rotate: "rotate-5", sceneId: "scene-9" },
|
||||||
],
|
],
|
||||||
backgroundAudio: "", // chưa có nhạc nền; engine bỏ qua chuỗi rỗng (không render thẻ audio)
|
backgroundAudio: "", // chưa có nhạc nền; engine bỏ qua chuỗi rỗng (không render thẻ audio)
|
||||||
practicalInfo: {
|
practicalInfo: {
|
||||||
@@ -420,7 +398,10 @@ export const chuaThaiLacTour: Omit<TourConfig, "sceneById" | "locationGroups"> =
|
|||||||
{ label: "Địa chỉ", value: "Xã Như Quỳnh, tỉnh Hưng Yên." },
|
{ label: "Địa chỉ", value: "Xã Như Quỳnh, tỉnh Hưng Yên." },
|
||||||
{ label: "Người phụ trách", value: "Đang cập nhật." },
|
{ label: "Người phụ trách", value: "Đang cập nhật." },
|
||||||
{ label: "Số điện thoại", value: "Đang cập nhật." },
|
{ label: "Số điện thoại", value: "Đang cập nhật." },
|
||||||
{ label: "Giờ mở cửa", value: "Đón khách theo giờ hành chính và lịch sinh hoạt của nhà chùa." },
|
{
|
||||||
|
label: "Giờ mở cửa",
|
||||||
|
value: "Đón khách theo giờ hành chính và lịch sinh hoạt của nhà chùa.",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
notes: [
|
notes: [
|
||||||
"Giữ trang phục lịch sự, đi nhẹ nói khẽ, không tự ý di chuyển đồ thờ.",
|
"Giữ trang phục lịch sự, đi nhẹ nói khẽ, không tự ý di chuyển đồ thờ.",
|
||||||
|
|||||||
Reference in New Issue
Block a user