Project Info
This project did not submit a demo video on Devpost.
A point cloud reconstruction tool that repairs and completes damaged 3D monument scans. It ships with built-in test monuments and also accepts your own custom .ply uploads. Test Subjects Built-in Test Cases Each built-in monument includes four deterministic test cases, including the deliberately extreme non-symmetric half-chop demolition. Case 1 — Local demolition Case 2 — Second demolition Case 3 — Diagonal / severe damage Case 4 — Absurd half-chop demolition Custom Upload Modes When you select Test subject → Custom monument (upload PLY), the panel reveals a Custom reconstruction mode control: Leaning or slanted objects: Balanced and Aggressive apply an adaptive height-wise centerline before symmetry reflection. This reconstructs uploaded towers and slanted monuments more accurately than the older rigid vertical-plane method. Supported PLY Files ASCII PLY with x y z vertices Binary little-endian PLY with x y z vertices Binary big-endian PLY with x y z vertices Getting Started Then open: In the browser Test subject → Custom monument (upload PLY) Custom reconstruction mode → Balanced or Aggressive Upload your .ply file View → Reconstructed particles or Completed cloud Changing the custom mode reprocesses the uploaded PLY directly in the browser. It does not overwrite the Roman Arena, Palmyra Arch, or Leaning Tower outputs. Notes Custom PLY reconstruction is generic — it doesn't know the monument type, so results depend on how symmetric and clean your uploaded point cloud is. Balanced is the best default for most uploaded objects. Use Aggressive when the red reconstruction comes out too sparse.
berkeley_hackathon
This build keeps the existing monument test cases and adds an improved Custom monument PLY upload workflow.
The core reconstruction pipeline remains unchanged:
python/completion_pipeline.py
Included subjects
Broken Roman Arena
Broken Palmyra Arch
Demolished Leaning Tower of Pisa
Custom monument (upload PLY)
Built-in test cases
Each built-in monument includes four deterministic test cases, including the absurd non-symmetric half-chop demolition case.
Case 1 - local demolition case
Case 2 - second demolition case
Case 3 - diagonal/severe damage case
Case 4 - Absurd half-chop demolition
New custom upload control
When you select:
Test subject -> Custom monument (upload PLY)
the panel now shows:
Custom reconstruction mode:
- Conservative
- Balanced
- Aggressive
Use them like this:
Conservative = safest, fewer red particles
Balanced = recommended default
Aggressive = fills larger missing regions, may add more red particles
For leaning or slanted custom objects, Balanced and Aggressive use an adaptive height-wise centerline before symmetry reflection. This makes uploaded towers or slanted monuments reconstruct better than the older rigid vertical-plane method.
Supported PLY files
ASCII PLY with x y z vertices
Binary little-endian PLY with x y z vertices
Binary big-endian PLY with x y z vertices
Run
cd "Yourpath\multi-monument-completion-custom-upload-modes"
py -m pip install -r python/requirements.txt
py python/run_subject.py --all --regenerate
py -m http.server 8000
Open:
http://localhost:8000/index.html
Then choose:
Test subject -> Custom monument (upload PLY)
Custom reconstruction mode -> Balanced or Aggressive
Upload your .ply file
View -> Reconstructed particles or Completed cloud
Changing the custom mode reprocesses the uploaded PLY in the browser. It does not overwrite Roman Arena, Palmyra Arch, or Leaning Tower outputs.
Notes
Custom PLY reconstruction is generic. It does not know the monument type, so results depend on how symmetric and clean the uploaded point cloud is. Balanced is the best default for most uploaded objects. Use Aggressive when the red reconstruction is too sparse.
Analysis
View
Metric
- 3
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- FlaskIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
176 KB
Source files
13
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
hvhasabnis/berkeley_hackathon
162 files · 57.4 MB · @ 53f32fb
Structure
Interface
4 files · 2%Screens, components and styles rendered to the user.
Application logic
153 files · 94%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python61%
- JavaScript29%
- CSS5%
- HTML4%
- Markdown1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
geometrical_symmetry_method/python/requirements.txt
pypi · 4- anthropic
- flask
- numpy
- scipy
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
Adaptive height-wise centerline for leaning/slanted objects in Balanced/Aggressive modesVerified
Balanced and Aggressive apply an adaptive height-wise centerline before symmetry reflection, improving reconstruction of leaning towers vs. rigid vertical-plane method
Claimed on Devposthigh confidencegeometrical_symmetry_method/js/viewer.js:66— useAdaptiveCenterline: true set for balanced and aggressive modes, false for conservativegeometrical_symmetry_method/js/viewer.js:730— estimateCenterline computes a per-height-bin centerlinegeometrical_symmetry_method/js/viewer.js:808— comment and logic show centerline normalization applied before symmetry reflection when mode.useAdaptiveCenterline is set
Built-in monument test subjects (Roman Arena, Palmyra Arch, Leaning Tower of Pisa)Verified
Ships with built-in test monuments: Broken Roman Arena, Broken Palmyra Arch, Demolished Leaning Tower of Pisa
Claimed on readmehigh confidencegeometrical_symmetry_method/python/generate_subject_data.py:25— ROMAN_CASES, PALMYRA_CASES, LEANING_TOWER_CASES dicts define the three built-in monument subjects
Core reconstruction pipeline (completion_pipeline.py) unchanged / underlying repair algorithmVerified
The core reconstruction pipeline remains unchanged: python/completion_pipeline.py repairs and completes damaged 3D monument scans
Claimed on readmemedium confidencegeometrical_symmetry_method/python/completion_pipeline.py:1— File exists and implements the point cloud completion pipeline used by run_subject.py for built-in subjects; 'unchanged' relative to a prior version cannot be verified from this clone alone
Custom monument PLY upload workflowVerified
Accepts custom .ply uploads via a 'Custom monument (upload PLY)' test subject option
Claimed on readmehigh confidencegeometrical_symmetry_method/index.html:84— customUploadBox UI with file input customPlyInput accepting .plygeometrical_symmetry_method/js/viewer.js:977— handleCustomPlyFile parses the uploaded file and triggers processCustomPointCloudgeometrical_symmetry_method/js/viewer.js:457— addCustomSubject registers custom_monument as a selectable Test subject
Custom PLY reprocessing does not overwrite built-in monument outputsVerified
Changing the custom mode reprocesses the uploaded PLY directly in the browser and does not overwrite the Roman Arena, Palmyra Arch, or Leaning Tower outputs
Claimed on readmehigh confidencegeometrical_symmetry_method/js/viewer.js:289— mode change handler calls processCustomPointCloud purely client-side and only updates customState, not the built-in subjects' generated datageometrical_symmetry_method/js/viewer.js:1028— UI hint text confirms custom upload does not overwrite saved monument test cases
Custom reconstruction mode control (Conservative/Balanced/Aggressive)Verified
Panel reveals a Custom reconstruction mode control with Conservative, Balanced, Aggressive options
Claimed on Devposthigh confidencegeometrical_symmetry_method/index.html:90— customModeSelect dropdown with conservative/balanced/aggressive optionsgeometrical_symmetry_method/js/viewer.js:46— CUSTOM_RECONSTRUCTION_MODES object defines the three modes with distinct parameters
Four deterministic built-in test cases per monument, including absurd half-chopVerified
Each built-in monument includes four deterministic test cases: local demolition, second demolition, diagonal/severe damage, and absurd non-symmetric half-chop demolition
Claimed on readmehigh confidencegeometrical_symmetry_method/python/generate_subject_data.py:25— Each monument's case set has exactly 4 entries, including absurd_half_chop shared across all threegeometrical_symmetry_method/python/generate_subject_data.py:179— absurd_half_chop branch implements the non-symmetric half-demolition case logic
Support for ASCII, binary little-endian, and binary big-endian PLY with x y z verticesVerified
Supported PLY files: ASCII, binary little-endian, and binary big-endian PLY with x y z vertices
Claimed on readmehigh confidencegeometrical_symmetry_method/js/viewer.js:893— PLY header parser reads format fieldgeometrical_symmetry_method/js/viewer.js:942— ascii branch parses vertex textgeometrical_symmetry_method/js/viewer.js:953— binary_little_endian and binary_big_endian branches both handled, throws for unsupported formats
View modes for custom upload: Reconstructed particles / Completed cloudVerified
View → Reconstructed particles or Completed cloud for the custom upload
Claimed on readmehigh confidencegeometrical_symmetry_method/js/viewer.js:1010— loadCustomViewer branches on viewMode to render reconstructed (red particles) vs completed cloud
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.