GOMERA is an experimental, modular IFC file viewer built with Open BIM Components (OBC).
GomeraX IFC Viewer with AI-Powered BIM Assistant
- ๐ IFC File Loading: Load and view Industry Foundation Classes (IFC) files
- โก Fragments Support: Fast loading with pre-converted Fragments format
- ๐จ Cast Shadows Rendering: Professional cast shadows with ambient occlusion
- ๐ Performance Monitoring: Real-time FPS, memory usage, and render time stats
- ๐พ Export Functionality: Export loaded models and data as Fragments (.frag), glTF (.gltf), GLB (.glb), USDZ (.usdz), Screenshot (PNG), and Properties (JSON)
- ๐ฑ Responsive Design: Works on desktop and mobile devices
- ๐๏ธ Modular Architecture: Clean, maintainable code structure
- ๐ Modern UI: Bottom floating toolbar with professional Font Awesome icons
- ๐ Automatic Alignment: Models align to site coordinates automatically
- ๐ง Smart Coordinate System: Automatic far-origin model detection and handling
โ ๏ธ Visual Warnings: Professional alerts for far-origin models (>100km from origin)- ๐ก๏ธ Alignment Protection: Prevents mixing incompatible coordinate systems
- ๐ Model Information: Hover badge displays model names and UUIDs
- ๐จ Professional Design: Purple gradient buttons with glassmorphic styling
- ๐ญ Expandable Menus: Organized actions in Load, View, Info, and Clipper groups
- ๐งญ ViewCube Navigation: Interactive 3D cube for quick camera orientation
- โ๏ธ Advanced Sectioning: Cut through models with preset planes or custom cuts
- ๐ Section Flip: View both sides of any section plane
- ๐๏ธ Properties Panel: IFC tree view and element property inspection
- ๐๏ธ Space Visibility: Toggle IfcSpace elements on/off
First-Person Walk Mode with Gravity
- ๐ถ First-Person Walk Mode with Gravity: FPS-style navigation with collision detection and gravity
- ๐ Measurement Tools: Length, Area, and Volume measurements with perpendicular guides
- ๐ฏ Model Alignment Tool: Drag-and-drop panel for precise multi-model positioning with AEC-standard coordinates
- ๐ข Floor Plan Views: Interactive 2D floor plan views with pan/zoom navigation
- ๐ Property Table: Excel-like interactive table for bulk property inspection and filtering
Element Clustering - Spatial organization of building elements
- ๐งฉ Element Clustering: Spatial organization tool that groups building elements by IFC category with:
- Automatic Grouping: Physically separates elements by type (walls, doors, windows, etc.)
- Visual Bounding Boxes: Each cluster displays with labeled bounds for easy identification
- Color Coding: Clusters are color-coded for quick visual distinction
- Interactive Selection: Click clusters to inspect grouped elements
- One-Click Reset: Return all elements to original positions instantly
AI Assistant - Natural language commands for BIM model interaction
- ๐ค AI-Powered BIM Assistant: Natural language interface for model interaction with:
- On-Device LLM: Privacy-first AI running entirely in-browser via WebLLM Qwen3
- Natural Language Commands: Select, hide, isolate elements using natural language ("show me all doors")
- Smart Context: Understands pronouns and follow-ups ("hide them", "zoom to those")
- Element Queries: Count and analyze model elements ("how many windows are there?")
- Camera Control: Navigate via voice ("show front view", "zoom to columns")
- Storey Navigation: Jump to floors by name ("go to Level 2")
- IFC Type Recognition: Automatically maps natural language to IFC types
- Real-time Stats: GPU usage, decode speed, and token metrics display
AI Assistant - Natural language commands for BIM model interaction
- ๐ฎ Experimental WebGPU Mode: Next-generation rendering for massive models with:
- Instant Highlighting: Zero-latency selection using GPU-shared buffers
- LOD (Level of Detail): Automatic geometry simplification for distant objects
- Atmospheric Fog: Linear and exponential fog for enhanced depth perception
- Professional Outlines: Clean selection highlighting using multi-pass rendering
- GPU Color Picking: Instant element identification in merged geometries
- Chunked Scene Rebuilding: Smooth isolation/un-isolation without UI freezing
- Adaptive Quality: Automatic performance scaling based on hardware
- Shadow Optimizations: High-performance shadows with "ghost mode" support
- Frustum Culling: Optimized edge rendering for complex geometries
- Performance Stats Overlay: Detailed hardware, memory, and rendering metrics
Model Dashboard and Data Slicer for BIM analytics and filtering
- ๐ Model Dashboard: Power BI-style analytics panel with:
- Element Statistics: Total counts by IFC category (walls, doors, windows, etc.)
- Interactive Charts: Pie charts and bar graphs for visual data exploration
- Storey Breakdown: Element distribution across building levels
- Volume Analytics: Material quantities and space calculations
- JSON Export: Download statistics for external reporting
- ๐ช Data Slicer: Interactive filtering tool for model exploration with:
- Multi-Property Filtering: Filter by storey, category, material, or any IFC property
- Visual Feedback: Real-time 3D highlighting of filtered elements
- Cross-Filtering: Multiple slicers work together for complex queries
- Split-Screen Mode: Side-by-side slicer panel with 3D view
- Export Filtered Data: Download filtered results as JSON
- Node.js (v18 or higher recommended)
- npm, yarn, or pnpm
- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:3000
๐ No coding experience required! This guide will walk you through testing GOMERA X on your own computer in about 5 minutes.
Node.js is a free tool that runs the viewer. You only need to install it once.
- Go to nodejs.org
- Click the big green button labeled "LTS" (on the left side)
- Run the downloaded installer and click Next through all steps
- โ Done! You now have Node.js installed
๐ก Tip: To verify installation, open Terminal/Command Prompt and type
node --version. You should see a version number likev20.x.x
- On this GitHub page, click the green
< > Codebutton (near the top) - Select "Download ZIP" from the dropdown menu
- Once downloaded, extract/unzip the folder:
- Windows: Right-click the ZIP โ Extract All...
- Mac: Double-click the ZIP file
- Move the extracted folder to an easy location (Desktop or Documents)
โ ๏ธ Important: Remember where you saved this folder โ you'll need it in the next step!
| Operating System | How to Open |
|---|---|
| Windows | Press Windows key, type cmd, press Enter |
| Mac | Press Command + Space, type Terminal, press Enter |
| Linux | Press Ctrl + Alt + T |
You should see a black or white window with a blinking cursor โ this is your terminal.
In your terminal, type the following (don't press Enter yet):
cd ๐ Note: Make sure there's a space after
cd
Now, drag and drop the extracted folder from your file explorer directly into the terminal window. The path will appear automatically!
Press Enter.
Example of what you might see:
cd /Users/YourName/Desktop/OBC-IFCViewer-mainType this command and press Enter:
npm installโณ Wait 1-2 minutes while it downloads the required components. You'll see text scrolling โ this is normal!
โ Success indicator: When it's done, you'll see your cursor again without any red "ERROR" messages.
Type this command and press Enter:
npm run devYou should see something like this:
VITE v5.x.x ready in xxx ms
โ Local: http://localhost:3000/
โ Network: http://192.168.x.x:3000/
๐ The viewer is now running! Keep this terminal window open.
- Copy the link shown in the terminal (usually
http://localhost:3000) - Open Google Chrome or Microsoft Edge (recommended browsers)
- Paste the link into the address bar and press Enter
You should now see the GOMERA X viewer interface!
- Look at the bottom toolbar of the viewer
- Click the ๐ folder icon (Load button)
- Select "Upload IFC" or "Upload Fragments"
- Choose an IFC file from your computer
- Wait for the model to load and appear in 3D
๐ Congratulations! You're now viewing your BIM model in GOMERA X!
When you're done testing:
- Go back to your terminal window
- Press
Ctrl + C(on both Windows and Mac) - The server will stop, and you can close the terminal
| Problem | Solution |
|---|---|
npm: command not found |
Node.js wasn't installed correctly. Restart Step 1 |
ENOENT: no such file or directory |
You're not in the right folder. Redo Step 4 |
ERESOLVE unable to resolve dependency tree |
Run npm install --legacy-peer-deps instead |
| Page won't load in browser | Make sure the terminal still shows the server running |
| Model loads but looks wrong | Try a different IFC file, or check if it's a valid IFC |
๐ฌ Still stuck? Open an issue on this GitHub page describing your problem!
npm run buildThe built files will be in the dist directory.
npm run previewOBC-IFCViewer/
โโโ index.html # HTML entry point
โโโ package.json # Dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
โโโ vite.config.ts # Vite bundler configuration
โโโ public/
โ โโโ worker.mjs # Web worker for background tasks
โโโ src/
โโโ main.ts # Application entry point
โโโ IFCViewer.ts # Main viewer orchestration class
โโโ styles.css # Global styles
โโโ modules/
โโโ UIManager.ts # UI Orchestration
โ
โโโ core/ # ๐ง Core Application Modules
โ โโโ IFCLoaderModule.ts # IFC & Fragments loading
โ โโโ PropertiesPanelModule.ts # IFC tree and properties
โ โโโ PropertyTableModule.ts # Excel-like property table
โ โโโ PerformanceMonitor.ts # FPS & memory tracking
โ โโโ ViewerInitializer.ts # Viewer setup & config
โ โโโ AIAssistantModule.ts # ๐ค AI Assistant integration
โ โโโ ai/ # AI Engine Components
โ โ โโโ WebLLMEngine.ts # Local LLM (WebLLM/Qwen)
โ โ โโโ ConversationalEngine.ts # Chat orchestration
โ โ โโโ ConversationContext.ts # Context management
โ โ โโโ AIIntentEngine.ts # User intent detection
โ โ โโโ AIBimActions.ts # BIM-specific actions
โ โ โโโ AIRuleEngine.ts # Rule-based responses
โ โ โโโ actions/ # Action handlers
โ โ โโโ agent/ # Agent components
โ โ โโโ webllm/ # WebLLM utilities
โ โโโ properties/ # Property Management
โ โโโ SelectionManager.ts # Element selection
โ โโโ PropertyDisplayManager.ts # Property display
โ โโโ TreeManager.ts # IFC tree structure
โ โโโ StoreyDataManager.ts # Storey/level data
โ โโโ GhostModeManager.ts # Ghost mode rendering
โ โโโ table/ # Table components
โ
โโโ webgl/ # ๐ฎ WebGL Feature Modules
โ โโโ index.ts # Module exports
โ โโโ WorldManager.ts # 3D world (scene, camera, renderer)
โ โโโ ClipperModule.ts # Advanced sectioning
โ โโโ ClipStylerModule.ts # Section styling
โ โโโ MeasurementModule.ts # Length/Area/Volume tools
โ โโโ FloorPlanModule.ts # 2D floor plan views
โ โโโ ViewCubeModule.ts # 3D navigation cube
โ โโโ MinimapModule.ts # Minimap overlay
โ โโโ FirstPersonControlsModule.ts # FPS-style navigation
โ โโโ ClusterModule.ts # Element clustering
โ โโโ ColorSplashModule.ts # Color highlighting
โ โโโ SpaceVisibilityModule.ts # IfcSpace toggle
โ โโโ ModelTransformModule.ts # Model positioning
โ โโโ AdaptiveQualityController.ts # Quality scaling
โ
โโโ webgpu/ # โก WebGPU Feature Modules
โ โโโ index.ts # Module exports
โ โโโ README.md # WebGPU documentation
โ โโโ WebGPURendererModule.ts # Main renderer entry
โ โโโ ViewerWebGPUAPI.ts # Public WebGPU API
โ โโโ managers/ # WebGPU Sub-managers
โ โโโ index.ts # Manager exports
โ โโโ WebGPULODManager.ts # Level of Detail
โ โโโ WebGPUFog.ts # Atmospheric fog
โ โโโ WebGPUOutlineManager.ts # Selection outlines
โ โโโ WebGPUElementSelector.ts # GPU picking
โ โโโ WebGPUColorPicker.ts # Color picking
โ โโโ WebGPUEdgeManager.ts # Edge rendering
โ โโโ WebGPUShadowManager.ts # Shadow optimization
โ โโโ WebGPUAmbientOcclusion.ts # AO effects
โ โโโ WebGPUMaterialFactory.ts # Material creation
โ โโโ WebGPUCategoryPalette.ts # Category colors
โ โโโ WebGPUGeometryUtils.ts # Geometry helpers
โ โโโ WebGPUOptimizations.ts # Performance utils
โ โโโ WebGPUProxySceneBuilder.ts # Scene building
โ โโโ WebGPUStatsManager.ts # Stats tracking
โ โโโ WebGPUStatsOverlay.ts # Stats UI overlay
โ โโโ WebGPUTypes.ts # TypeScript types
โ
โโโ ui/ # ๐จ UI Components
โโโ ToolbarBuilder.ts # Toolbar structure
โโโ ToolbarHandlers.ts # Toolbar event handlers
โโโ UIStyles.ts # Shared CSS styles
โโโ LoadingUIManager.ts # Loading indicators
โโโ NotificationUIManager.ts # Notifications
โโโ NotificationHelper.ts # Notification utils
โโโ SelectionUIManager.ts # Selection UI
โโโ NavigationUIManager.ts # Navigation controls
โโโ ClipperUIManager.ts # Clipper controls
โโโ MeasurementUIManager.ts # Measurement UI
โโโ FloorPlanUIManager.ts # Floor plan UI
โโโ ClusterUIManager.ts # Cluster visualization
โโโ WebGPUUIManager.ts # WebGPU settings UI
โโโ ModelAlignmentManager.ts # Model alignment panel
โโโ ModelDashboard.ts # Model statistics
โโโ SlicerDashboard.ts # Data slicer panel
โโโ AIAssistantUIManager.ts # ๐ค AI chat UI manager
โโโ ai/ # AI UI Components
โ โโโ AIChatManager.ts # Chat message handling
โ โโโ AIDomManager.ts # DOM element creation
โ โโโ AIStyleManager.ts # AI panel styling
โโโ dashboard/ # Dashboard Components
โโโ UIManager.ts # Dashboard UI
โโโ DataManager.ts # Data processing
โโโ ChartManager.ts # Chart rendering
โโโ SlicerUIManager.ts # Slicer UI
โโโ SlicerDataManager.ts # Slicer data
โโโ SlicerChartManager.ts # Slicer charts
- IFC file conversion to Fragments
- Direct Fragments loading
- Model management and export
- IFC hierarchical tree view
- Element property inspection
- Collapsible side panel
- Excel-like interactive table
- Bulk property inspection
- Advanced filtering and sorting
- Real-time FPS tracking
- Frame time and memory usage
- 3D environment setup (scene, camera, renderer)
- Grid and visual aids
- Lighting configuration
- Advanced model sectioning
- Preset planes (X/Y/Z following AEC conventions)
- Custom double-click sections
- Flip and clear functionality
- Length, Area, and Volume measurements
- Perpendicular guides and snapping
- Professional dimensioning
- Interactive 2D floor plan views
- Automatic camera positioning
- Pan/zoom navigation
- Experimental high-performance rendering engine
- Orchestrates all WebGPU sub-managers
- Optimized for massive models with millions of triangles
- Automatic Level of Detail (LOD) system
- Distance-based geometry simplification
- Significant performance gains for large scenes
- Atmospheric fog effects (Linear/Exponential)
- Enhanced depth perception
- Works with MSAA anti-aliasing
- Professional selection highlighting
- Multi-pass outline rendering
- Configurable colors and thickness
- Modern floating toolbar with glassmorphic styling
- Expandable submenu system
- Model count badge with tooltips
- Event handling and state management
- Click the Load button (folder icon) in the bottom toolbar
- Select upload option from the submenu
- Choose an
.ifcor.fragfile from your computer - Wait for conversion (if IFC) or instant loading (if Fragments)
- Interact with the 3D model using mouse/touch controls
The application features a modern floating toolbar at the bottom with the following controls:
Main Actions:
- ๐ Load: Upload IFC/Fragments files or load sample models (expandable)
- ๐พ Export: Download model/data in multiple formats (expandable)
- Fragments (.frag)
- glTF (.gltf)
- GLB (.glb)
- USDZ (.usdz)
- Screenshot (PNG)
- Properties (JSON)
- ๐๏ธ View: Camera controls and space visibility (expandable)
- โ๏ธ Clipper: Sectioning tool with presets (expandable)
- Section X/Y/Z (AEC convention aligned)
- Flip Side (show opposite cut)
- Clear All sections
- โน๏ธ Info: Model information and statistics (expandable)
- ๐๏ธ Clear: Remove all loaded models
- โ๏ธ Settings: Scene customization and performance (expandable)
- Renderer Mode: Switch between WebGL and experimental WebGPU
- Shadow Quality: Adjust shadow resolution for performance
- Background Color: Customize the viewer environment
Model Count Badge:
- Displays total number of loaded models
- Hover to see detailed tooltip with model names and UUIDs
- Positioned on the Load button for easy access
ViewCube (Top-Right):
- Click any face for instant camera orientation
- Perfect for switching between plan/elevation views
- Smooth animated transitions
- Background Color: Change the scene background
- Directional Light: Adjust main light intensity
- Ambient Light: Adjust ambient illumination
Models automatically align to their site coordinates when loaded. No manual alignment required! The viewer uses COORDINATE_TO_ORIGIN = false in the FragmentsManager to preserve original project coordinates, ensuring multi-discipline models (Architectural, Structural, MEP, etc.) align correctly.
Mouse Controls:
- Rotate: Left mouse button (or one finger drag on mobile)
- Pan: Right mouse button (or two finger drag on mobile)
- Zoom: Mouse wheel (or pinch on mobile)
- Select: Single-click on elements to view properties
ViewCube Navigation:
- Click any face (front/back/left/right/top/bottom) for instant orientation
- Automatic smooth camera transitions
- Perfect for reviewing floor plans and elevations
Enable: Click the scissors icon โ๏ธ in the toolbar
Section Methods:
- Section X: Side view cut (perpendicular to X axis)
- Section Y: Horizontal floor plan cut (top view, AEC standard)
- Section Z: Vertical elevation cut (front view, AEC standard)
- Custom Sections: Double-click on model to create plane at that point
Additional Controls:
- Flip Side: Show opposite side of section cut
- Clear All: Remove all section planes
- Delete Key: Remove sections when clipper is enabled
Sectioning Tips:
- Preset sections auto-replace previous ones for cleaner workflow
- Flip is stable even when moving the mouse
- Follow AEC conventions (Y=horizontal plan, Z=vertical elevation)
Enable: Click View โ Align Models in the toolbar
Features:
- Model Selection: Choose any loaded model from dropdown
- Position Display: Current X, Y, Z coordinates (AEC standard with Z as elevation)
- Manual Input: Type precise coordinate values (0.1m precision)
- Arrow Key Controls:
- โ/โ: Move along X axis (left/right)
- โ/โ: Move along Y axis (forward/backward)
- Shift + โ/โ: Move along Z axis (elevation)
- Step Size: Configurable increment for arrow keys (default: 1m)
- Draggable Panel: Reposition panel anywhere on screen
- Minimize/Expand: Collapse panel when not needed
- Apply/Reset: Update position or return to origin (0, 0, 0)
Use Cases:
- Align models from different coordinate systems
- Position far-origin models (>100km from origin)
- Fine-tune multi-discipline model placement
- Verify model elevations and offsets
Workflow:
- Load multiple IFC models
- Open Model Alignment panel from View menu
- Select model to reposition from dropdown
- Adjust using manual inputs or arrow keys
- Click Apply to update position
- Drag panel to preferred location, minimize when done
- @thatopen/components (3.2.0) - Core BIM components
- @thatopen/components-front (3.2.0) - Frontend BIM tools
- @thatopen/ui (3.2.0) - UI component library
- @thatopen/ui-obc (3.2.1) - OBC-specific UI elements (ViewCube)
- Three.js (0.175.0) - 3D graphics library
- web-ifc - IFC file parser
- Font Awesome (6.5.1) - Professional icon library
- Vite - Fast build tool
- TypeScript - Type-safe development
This is a demonstration project. Feel free to fork and modify for your needs.
MIT License
Copyright (c) 2026 GomeraX Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
GomeraX is provided for informational and experimental purposes only.
No Engineering or Legal Advice: The visualization, data parsing, and AI features within GomeraX are not a substitute for professional engineering, architectural, or legal advice. While this application uses the OpenBIM Components (OBC) framework to render IFC files, users must verify all dimensions, properties, and structural data using certified industry-standard software before making construction decisions.
AI Limitations (WebLLM / Local Models): This application integrates local AI models (e.g., Qwen via WebLLM) to assist with data analysis.
- Possibility of Error: AI models can "hallucinate" or generate incorrect information, especially regarding technical building codes, structural calculations, or compliance standards.
- User Responsibility: You are solely responsible for reviewing and verifying any output generated by the AI assistant. The developers of GomeraX accept no liability for actions taken based on AI-generated suggestions.
Experimental Features: Features utilizing WebGPU are experimental and may not perform consistently across all hardware configurations. The software is provided "as is" under the MIT License, without warranty of any kind.
- That Open Company for the excellent Open BIM Components (OBC) libraries
- Three.js team for the amazing 3D engine
- BuildingSMART for the IFC standard
- WebLLM for enabling on-device LLM inference in the browser
- Qwen3 by Alibaba Cloud for the AI language models used in the BIM assistant