Project Overview
IFC Viewer is a lightweight, web-based 3D viewer for BIM (Building Information Modeling) models in IFC format. It provides an accessible way to view and interact with building models directly in the browser, without requiring specialized software installation.
Key Features
- Fast Loading: Optimized loading and rendering of large IFC files
- Interactive 3D View: Smooth navigation and model interaction
- Section Views: Dynamic sectioning tools for model exploration
- Measurement Tools: Distance, area, and angle measurements
- Property Information: Access to BIM object properties and metadata
- Mobile Responsive: Works on desktop and mobile devices
- Export Options: Screenshots and basic measurements export
Technical Implementation
Architecture
The viewer is built on modern web technologies with a focus on performance and usability:
class IFCViewer {
constructor() {
this.scene = new THREE.Scene();
this.renderer = new THREE.WebGLRenderer();
this.ifcLoader = new IFCLoader();
this.measurementTools = new MeasurementTools();
this.propertyManager = new PropertyManager();
}
async loadModel(url) {
const model = await this.ifcLoader.loadAsync(url);
this.scene.add(model);
this.setupPropertyTree(model);
}
}
Key Technologies
Frontend:
- Three.js: 3D visualization engine
- web-ifc: IFC parsing and processing
- WebGL: Hardware-accelerated rendering
- Web Workers: Background processing for large models
Features:
- Real-time section cutting
- Measurement tools
- Property tree navigation
- Model tree exploration
- Custom shader materials
Development Process
Challenges Overcome
- Performance Optimization
- Implemented level-of-detail systems
- Optimized geometry processing
- Added progressive loading
- Cross-browser Compatibility
- WebGL feature detection
- Fallback rendering modes
- Mobile touch controls
- Large Model Handling
- Streaming load system
- Octree-based culling
- Memory management
User Experience Focus
- Intuitive navigation controls
- Clear measurement interfaces
- Responsive property panels
- Fast initial load times
- Mobile-friendly UI
Features Deep Dive
Model Navigation



- Orbit, pan, and zoom controls
- First-person navigation mode
- Pre-set standard views
- View-point saving
Analysis Tools
- Distance measurements
- Area calculations
- Angle measurements
- Section analysis
- Clash detection
Property Management
- Full IFC property support
- Search and filter
- Custom property sets
- Export capabilities
Technical Details
Performance Metrics
- Initial load time: < 3 seconds for typical models
- Frame rate: 60 FPS target
- Memory usage: Optimized for 8GB RAM
- Maximum model size: 500MB (optimized)
Browser Support
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
- Mobile browsers (iOS 13+, Android 8+)
Future Development
Planned Features
- Cloud storage integration
- Collaboration tools
- Annotation system
- Version control
- Advanced measurements
- IFC writing capabilities
Community Feedback
Current user requests include:
- BCF support
- Multiple model comparison
- Custom property definitions
- Advanced filtering
Installation
# Clone the repository
git clone https://github.com/tadodev/ifc-viewer
# Install dependencies
npm install
# Start development server
npm run dev
Usage Examples
Basic Model Loading
const viewer = new IFCViewer('container');
await viewer.loadModel('path/to/model.ifc');
viewer.fitToView();
Measurement Mode
viewer.enableMeasurements();
const distance = await viewer.measureDistance();
console.log(`Measured distance: ${distance}m`);
Lessons Learned
- Performance First: Building for performance from the start is crucial
- User Testing: Early user feedback shaped the interface design
- Progressive Enhancement: Starting with core features and adding complexity
- Mobile Considerations: Designing for touch interfaces from the beginning
Related Documentation
The IFC Viewer project demonstrates the potential of web technologies in handling complex BIM data, making architectural and engineering information more accessible to everyone.