This guide will help you get the entire stack running.
- Node.js 18+ and npm
- .NET 8 SDK
- Rust toolchain (cargo)
- A 3D model file (.glb or .gltf format)
cd src/client
npm install
npm run devClient will be available at http://localhost:5173
cd src/model_parser
# Build the tool (first time only)
cargo build --release
# Convert your 3D model
./target/release/model_parser \
--input /path/to/your/model.glb \
--output ../../pointcloud-data/my-model \
--format ept \
--point-count 50000 \
--strategy area-weightedThis creates:
pointcloud-data/
└── my-model/
├── ept.json # Metadata
├── ept-data/ # Binary tiles
└── ept-hierarchy/ # Octree structure
cd src/backend/HueGraphics.API
dotnet runAPI will be available at http://localhost:5000
- Swagger UI: http://localhost:5000/swagger
- API endpoint: http://localhost:5000/api/pointcloud
- Check API - Visit http://localhost:5000/swagger
- Test endpoint - GET http://localhost:5000/api/pointcloud
- Should return list of point clouds
- Check specific model - GET http://localhost:5000/api/pointcloud/my-model/metadata
- Test EPT data - GET http://localhost:5000/api/pointcloud/my-model/ept.json
Update your React client to fetch from the API:
// In your component
useEffect(() => {
fetch('http://localhost:5000/api/pointcloud')
.then(res => res.json())
.then(data => console.log('Point clouds:', data));
}, []);- Ensure
pointcloud-data/directory exists - Check that your model folder name matches the ID in the API request
- Verify EPT files were generated correctly
- Backend is configured for
localhost:5173andlocalhost:3000 - If using different port, update
Program.csin HueGraphics.API
- Ensure input file is valid GLTF/GLB format
- Check file permissions
- Try with smaller point count first (--point-count 1000)
- Integrate EPT Loader - See src/model_parser/STREAMING_API.md
- Customize Theme - See .dev-local/THEME-GUIDE.md
- Add More Models - Run model_parser on additional files
- Production Build - See deployment guides in respective READMEs
- Convert 3D model → Point cloud (model_parser)
- Place in
pointcloud-data/ - API serves it automatically
- Client visualizes with Three.js
src/
├── client/ # React + Three.js → localhost:5173
├── backend/ # .NET API → localhost:5000
└── model_parser/ # Rust CLI (offline tool)
pointcloud-data/ # Generated by model_parser, served by API