is interactive § works on different platforms and devices § uses native hardware (WebGL) https://github.com/thinktecture/webinar-3d- visualisierung-babylonjs-angular DEMO Demo Example App Try now! https://qrgo.page.link/15 mwG 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
everywhere • On location & remote planning and editing • Shareable with a simple URL • Easy integration web technology Web 3D benefits over native 3D 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
for web • WebGL hardware acceleration • Complete 3D-Engine • Currently V5.x Alternatives: Playcanvas, A-Frame ( Non-Web: Unity, Unreal Engine ), Three.js BabylonJS 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
AR Marker Tracking • Included Physics • Texture Decals • GUI Editor • Fluid Rendering • Performance Priority Mode Babylon.js 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
hold visual objects and much more • The root of all possible things • Mesh à Visual objects • Scene (Stage) à holds all information • Engine à renders the Scene Babylon.js Babylonjs.com 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
steps relative to each frame • Setup everything then modify something • Step by step, no reordering etc. Babylon.js 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
Services, Contexts, Components • NgZone (ZoneJS) • DOM Integration BabylonJS • 3D • Engine lifecycle • Scene • Event-based system • Scene Graph 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
Rendering Engine feed instructions update model Web APIs render 3D content WebGL (WebGPU) OS API Hardware View render HTML trigger function Architecture Overview (simplified) 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
Static execution order • Move from “manipulate it now” to “I instruct you to manipulate it at the correct time” mindset • see: Angular’s changeDetectorRef.markForCheck • Syncs the “state” with the “view” (physics not included) Babylon.js 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
• Loop à e.g. dispose on next iteration • Different timings can cause synchronization problems à Lifecycles should be separated à No dependency from BabylonJS to the Angular lifecycle / change detection cycle à “Add box to scene” becomes “Add box on next iteration” 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
event Integration BabylonJS • Event-based communication • Events on every frame (60 FPS!) • Exclude BabylonJS from the NgZone à ngZone.runOutsideAngular( … ); • Stop zone.js to observe animation frame requests à (window as any).__Zone_disable_requestAnimationFrame = true; 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop
• Extend existing Babylon.js classes • Scene • Mesh • TransformNode • Don’t mix (a mesh must not be a component) My integration key points 3D im Web mit Babylon.js – Ihre Web-App in Szene gesetzt Workshop