ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
고대 이집트 관 6개를 인터랙티브 3D 모델로, 표면에 비문을 매핑해 상형문자·음역·번역으로 읽음
Six ancient Egyptian coffins as interactive 3D models, with their inscriptions mapped to the surface and read in hieroglyphs, transliteration and translation.
교육TypeScript · CSSGitHub @tantancodes온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Read ancient Egyptian coffins where the words were written. BD3D is a research viewer for six photogrammetric coffin models from the UC Berkeley Book of the Dead in 3D project. Every annotated inscription is mapped to its place on the surface and shown as hieroglyphs, transliteration and translation.
| Raking light: a real directional light with shadow maps | A transliterated word, its dictionary entry and its location |
| Search across all 314 entries | Phone layout |
/exhibits/psamtikseneb?region=text%3Acenter&light=180,12).R reset · 1–5 views · [ ] locations · O outlines · L light · F expand · / search · ? help.| Asset pipeline with provenance | OBJ + 4096 px JPEGs → meshopt-compressed, 16-bit quantized glTF and WebP tiers. Sources untouched; every derivative records its own and its source's SHA-256; tests check compressed geometry against the source within 1/10,000 of the object's length. |
| Progressive, device-aware loading | Geometry and 1024 px textures first, preloaded from the HTML and streamed with byte-level progress; then 2048 or 4096 px chosen from GPU limits, memory, connection and input type. Resources are disposed on exit. |
| Exact picking | The source viewer's projected-polygon rule, with back-face rejection; hover without per-move mesh raycasts. |
| Batched overlays | Region outlines in at most four draw calls (one per state) instead of up to 265. |
| Faithful colour | Khronos PBR Neutral tone mapping, sRGB textures, image-based ambient light, viewer-relative key and fill lights. |
| Validated research data | zod schema and two-way link checks on every edition at build time. |
| Tests | 82 unit tests, 46 Playwright end-to-end tests with axe accessibility scans, all in CI. |
Same harness before and after (details):
| Before | After | |
|---|---|---|
| Exhibit download (standard quality) | 4.8–20.2 MB | 1.9–6.1 MB |
| Geometry download | 1.9–3.3 MB | 0.4–1.0 MB |
| Geometry parse | 82–132 ms | 2–3 ms |
| GPU texture memory, phones and tablets (computed) | ≈341 MB | ≈85 MB |
| First frame with the model (software WebGL) | 1.8–4.2 s | 0.9–1.8 s |
Open issue: in software-rendered WebGL, reaching full-resolution textures is slower than before. The cost is in the texture upload and is not yet attributed; it is unmeasured on GPU hardware. See PERFORMANCE.md.
flowchart LR
SRC[Published editions<br/>OBJ · JPEG · HTML] -->|import + build-display-assets| DATA[(Validated JSON<br/>GLB · WebP · manifest)]
DATA --> PAGE[Next.js static pages]
PAGE --> STATE[useExhibitState]
STATE --> PANEL[Reading panel]
STATE --> VIEW[3D viewer<br/>R3F · three.js]
LIB[lib/: scene math, picking, camera,<br/>quality, vocabulary, search — unit tested] -.-> VIEW
LIB -.-> STATE
Requires Node.js 22.
npm ci
npm run dev # http://localhost:3000
Production build:
npm run build
npm run start -- --port 3101
No environment variables or database are needed. Set NEXT_PUBLIC_SITE_URL when deploying so social previews use absolute URLs.
npm run check # format, lint, types, unit tests
npm run verify:data # source asset checksums
npm run build && npm run start -- --port 3101 &
npm run test:e2e # Playwright against :3101
The end-to-end suite uses installed Google Chrome by default. On machines without Chrome or a GPU (as in CI):
npx playwright install chromium
PLAYWRIGHT_CHANNEL= PLAYWRIGHT_SOFTWARE_GL=1 PLAYWRIGHT_EXPECT_TIMEOUT=45000 npm run test:e2e
data/coffins/*.json: 314 entries and 607 regions imported from the published St Andrews editions by scripts/import-nederhof.mjs.data/import-manifest.json: source URLs, sizes and SHA-256 for every imported file.data/display-assets.json: web derivatives built by npm run build:assets, each with its source hash.Missing mappings are not invented, display units are not physical units, and no surface detail is inferred from photographs. The research page lists sources, transformations and open questions for scholarly review.
Annotation editions: Rita Lucarelli, Kea Johnston and Mark-Jan Nederhof (Psamtik-Seneb also Matthew Whealton). Models hosted by the University of St Andrews for the UC Berkeley project. Collection photographs © Chrysler Museum of Art, Fine Arts Museums of San Francisco and Phoebe A. Hearst Museum of Anthropology. Method: Lucarelli and Nederhof, “Digitizing and Annotating Ancient Egyptian Coffins: The Book of the Dead in 3D” (2023), doi:10.1163/9789004501294_011.
The original prototype's notes are in docs/ORIGINAL-PROTOTYPE.md; the redesign validation log is in docs/VALIDATION.md.