Evaluate the AutomationView desktop suite free for 30 days. No credit card required. Claim trial key →
arrow_back Back to Articles
HMI

Inside WebGL and Three.js for HMI: Architecting 3D Digital Twins in SCADA Dashboards

calendar_month
person Carvalho Raphael

Inside WebGL and Three.js for HMI: Architecting 3D Digital Twins in SCADA Dashboards

HMI
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    PLC["PLC / Fieldbus"]:::blue --> GW["Node-RED Gateway"]:::green
    GW -->|WebSockets| HMI["Three.js Digital Twin"]:::red
    
    classDef blue fill:#2563eb,color:#ffffff,stroke:#1e40af,stroke-width:2px;
    classDef green fill:#16a34a,color:#ffffff,stroke:#166534,stroke-width:2px;
    classDef red fill:#dc2626,color:#ffffff,stroke:#991b1b,stroke-width:2px;
AutomationView Icon AutomationView

Key Takeaways:

  • Architecting a SCADA 3D Digital Twin requires bridging high-frequency OT data with asynchronous web environments.
  • Three.js and WebGL enable hardware-accelerated 3D rendering natively in modern HMI web browsers.
  • Optimizing 3D models using GLTF/GLB formats with Draco compression is critical to prevent main thread blocking and memory leaks.
  • Middleware gateways (like Node-RED) and WebSockets provide the low-latency telemetry needed to synchronize the physical asset with the digital representation.

Building an interactive SCADA 3D Digital Twin used to require heavy, proprietary desktop software and specialized hardware. Today, the convergence of Industry 4.0 and modern web technologies allows automation engineers to render complex, real-time 3D environments directly in the browser using WebGL and Three.js. However, integrating high-frequency deterministic PLC data with an asynchronous GPU-accelerated frontend presents unique architectural challenges. This technical guide explores the three core layers required to build a high-performance, real-time 3D HMI.

The Bridge: Connecting OT Data to the Browser

Programmable Logic Controllers (PLCs) operate on deterministic, low-level protocols such as Modbus TCP, EtherNet/IP, or S7. These protocols cannot be natively parsed by a web browser. To feed telemetry to a SCADA 3D Digital Twin, engineers must deploy a middleware layer that acts as a protocol gateway.

Middleware Gateways and WebSockets

A common architecture involves using a Node.js server or Node-RED to poll the PLC or subscribe to an OPC UA server. The gateway then translates these raw industrial registers into structured JSON payloads. Because HTTP polling introduces unacceptable overhead and latency, bidirectional communication protocols like WebSockets or MQTT over WebSockets are mandatory for real-time state synchronization.

A critical challenge on the plant floor is network saturation. To minimize payload size, the gateway should implement a delta-update strategy. Rather than transmitting the entire machine state at 50Hz, the gateway only publishes changes in values (e.g., a cylinder position or motor speed), significantly reducing bandwidth consumption.

flowchart TD
    subgraph ot_layer ["OT Network"]
        PLC["PLC (Modbus/S7)"]:::blue --> GW["Protocol Gateway"]:::green
    end
    subgraph web_layer ["Web HMI"]
        GW -->|WebSockets (Delta JSON)| React["React / HMI State"]:::red
        React --> Canvas["Three.js Canvas"]:::red
    end
    classDef blue fill:#2563eb,color:#ffffff,stroke:#1e40af,stroke-width:2px;
    classDef green fill:#16a34a,color:#ffffff,stroke:#166534,stroke-width:2px;
    classDef red fill:#dc2626,color:#ffffff,stroke:#991b1b,stroke-width:2px;

The Visual Layer: Three.js and GLTF Optimization

Three.js acts as a powerful abstraction over the low-level WebGL API, making it feasible to render complex scenes. However, dropping raw mechanical CAD files directly into an HMI will immediately crash the browser.

Geometry Decimation and Instancing

Mechanical assemblies exported from SolidWorks or Autodesk Inventor (like STEP or IGES files) contain extreme geometric density, including hidden internal components and threads that are completely unnecessary for a visual SCADA 3D Digital Twin. The optimization pipeline requires:

  • Decimation: Reducing polygon counts using tools like Blender before exporting.
  • GLTF/GLB Format: Utilizing the GL Transmission Format, the industry standard for web-based 3D models.
  • Draco Compression: Applying mesh compression algorithms to drastically reduce the initial load payload.

When mapping telemetry to the 3D scene, engineers must tie JSON tags to specific Three.js Mesh identifiers. If a warehouse digital twin requires rendering 500 identical conveyor rollers, using InstancedMesh is non-negotiable. Instancing allows the GPU to render thousands of identical objects in a single draw call, maintaining the crucial 60 FPS target.

Performance: Managing the Main Thread

JavaScript runs on a single thread. In a web-based SCADA 3D Digital Twin, heavy data parsing, JSON deserialization, and state management can block the main thread, causing the 3D render loop to stutter or freeze. To mitigate this, intensive calculations and WebSocket handling should be offloaded to a Web Worker. This ensures the main thread is dedicated exclusively to UI updates and the Three.js requestAnimationFrame loop.

3D Asset Format Comparison

Format Use Case Web Performance File Size
Raw CAD (STEP, IGES) Manufacturing, Tooling Incompatible / Unusable Massive (>100MB)
Standard GLB Basic Web Viewing Moderate Medium (5MB – 20MB)
Draco Compressed GLB SCADA 3D Digital Twin Excellent Tiny (<2MB)

Conclusion

Architecting a SCADA 3D Digital Twin with WebGL and Three.js offers unparalleled accessibility, allowing operators to monitor complex automated systems from any standard web browser. By leveraging middleware for protocol translation, optimizing CAD assets into compressed GLB files, and utilizing modern web performance techniques, engineers can build immersive, real-time interfaces that rival native desktop applications. For advanced automation components and tools, explore the AutomationView Store.

FAQ

Why can’t I load SolidWorks files directly into Three.js?

SolidWorks files are mathematically defined solid models designed for manufacturing accuracy. WebGL requires polygonal meshes (triangles) to render graphics. The conversion process is necessary to translate mathematical solids into optimized polygons that a GPU can efficiently process.

How do I handle alarm states in a 3D Digital Twin?

The best practice is a hybrid UI approach. The Three.js scene can highlight the faulted machine part in red using a custom shader or material change, while a standard DOM overlay (using HTML/CSS) displays the detailed alarm text, acknowledging buttons, and historical context.

Does a SCADA 3D Digital Twin require a dedicated graphics card?

While basic models can run on integrated graphics, complex industrial scenes heavily benefit from dedicated hardware acceleration. Panel PCs deployed on the plant floor must be specified with modern processors and adequate GPU capabilities to maintain smooth frame rates.

Share this article

Stay Updated with HMI

Get the latest articles and news delivered directly to your inbox.

Log in to Subscribe

You must be registered and logged in to manage subscriptions.

Recommended for you

Inside Agentic HMI: Architecting Multi-Agent Workflows for Predictive SCADA

HMI
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
      A["Legacy SCADA"]:::gray --> B["Agentic HMI"]:::blue
      B --> C["Predictive Maintenance"]:::green
      B --> D["Process Optimization"]:::purple
      classDef gray fill:#64748b,color:#ffffff,stroke:none
      classDef blue fill:#2563eb,color:#ffffff,stroke:none
      classDef green fill:#16a34a,color:#ffffff,stroke:none
      classDef purple fill:#9333ea,color:#ffffff,stroke:none
AutomationView Icon AutomationView
calendar_month

Inside Agentic HMI: Architecting Multi-Agent Workflows for Predictive SCADA

The traditional SCADA interface relies heavily on reactive operator intervention: an alarm triggers, a human acknowledges it, and manual troubleshooting begins. However, the integration of autonomous systems has introduced Agentic HMI—a paradigm shift where the interface is no longer a static pane of glass but an active participant in plant operations. By architecting multi-agent workflows, […]

Read Article arrow_forward

Next-Gen WebAssembly HMI: Native Performance for SCADA

HMI
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    A["Legacy SCADA"]:::redNode -->|"Compute Constraints"| B["WebAssembly HMI"]:::blueNode
    B -->|"Native Speed"| C["Edge Gateways"]:::greenNode
    B -->|"Portability"| D["Browser Displays"]:::greenNode
    
    classDef redNode fill:#dc2626,stroke:#b91c1c,color:#ffffff
    classDef blueNode fill:#2563eb,stroke:#1d4ed8,color:#ffffff
    classDef greenNode fill:#16a34a,stroke:#15803d,color:#ffffff
AutomationView Icon AutomationView
calendar_month

Next-Gen WebAssembly HMI: Native Performance for SCADA

Key Takeaways: WebAssembly bypasses standard JavaScript interpreters, delivering highly deterministic execution for compute-intensive industrial interfaces. Hybrid approaches are dominating: standard web technologies handle the DOM layout while WebAssembly processes real-time math and heavy signal rendering. Portability allows automation engineers to write core logic in memory-safe languages and deploy identical binaries to edge gateways and control […]

Read Article arrow_forward

Offline-First SCADA Dashboards: PWA & Service Worker Implementation

HMI
%%{init: {'theme':'dark', 'themeVariables': { 'background': '#001c38' }}}%%
flowchart LR
    client["PWA Dashboard"]:::clientStyle
    sw["Service Worker"]:::swStyle
    cache["Local Cache (IndexedDB)"]:::cacheStyle
    server["SCADA Server"]:::serverStyle
    
    client -->|Requests Data| sw
    sw -->|Network Available| server
    sw -->|Network Down| cache
    server -->|Updates| cache
    
    classDef clientStyle fill:#2563eb,stroke:#fff,stroke-width:2px,color:#fff
    classDef swStyle fill:#16a34a,stroke:#fff,stroke-width:2px,color:#fff
    classDef cacheStyle fill:#dc2626,stroke:#fff,stroke-width:2px,color:#fff
    classDef serverStyle fill:#9333ea,stroke:#fff,stroke-width:2px,color:#fff
AutomationView Icon AutomationView
calendar_month

Offline-First SCADA Dashboards: PWA & Service Worker Implementation

The Reality of Plant Floor Connectivity Walk the floor of any heavy manufacturing facility, and you will quickly realize that ubiquitous, high-speed Wi-Fi is a myth. Dead zones behind massive metal enclosures, high electromagnetic interference (EMI) from variable frequency drives, and network congestion frequently cause transient connection drops. For an operator monitoring a critical process […]

Read Article arrow_forward