-
-
Notifications
You must be signed in to change notification settings - Fork 15
End to end 3D demo wiring Blincs SceneKit3D renderer up to
github-actions[bot] edited this page Jun 20, 2026
·
3 revisions
-
blinc_canvas_kit::SceneKit3D— the camera + light + mesh dispatch front-end used by any Blinc app that wants to drop 3D content into acanvas(). Same primitive demos use for a single spinning cube scale up to a full character rig unchanged. - [
blinc_game_kit::gltf] — glTF 2.0 loader. Parses the file tree once at startup into aGltfScene(meshes, nodes, skeletons, animation clips) that the demo holds behind anArc<Mutex<>>and borrows per frame. - [
blinc_game_kit::skeleton] — runtime poser.animate_scene_nodessamples the clip's TRS channels into the live node tree;scene_skinning_datawalks the posed tree to build the joint matrices the mesh shader consumes;animate_scene_morph_weightsdrives per-node blend-shape weights for facial expression.
The asset is "The Strangler" by Jungle Jim (CC-BY-4.0;
https://sketchfab.com/3d-models/the-strangler-06d56efabf7445e89bb1bf41a99d08cc),
shipped in the repo for offline reproducibility. Full
attribution lives alongside the asset in
examples/.../assets/3d/the_strangler/license.txt.
Per-frame flow:
-
animate_scene_nodes(&mut scene, anim, t)— writes sampled TRS onto scene nodes -
scene_skinning_data(&scene, &skeleton)— returnsSkinningData(joint world matrices × inverse-bind) -
animate_scene_morph_weights(anim, t)— returns aHashMap<node_index, Vec<f32>>of current weights - For each drawable node: shallow-clone its
MeshData(Arc<Vec<_>>inners → refcount bumps, no vertex copy), stamp the frame's skinning + morph_weights, dispatch viaDrawContext::draw_mesh_data.
Ordering (OPAQUE before BLEND) is enforced framework-side in
blinc_app::dispatch_pending_meshes, so the demo submits in
scene-graph order without its own sort.
cargo run -p blinc_app_examples --example strangler_demo \
--features gltf --releaseTip: Some demos are best viewed in a full browser window. Click "Open in a new tab" below for the full experience.
Getting Started
Mobile Development
Example Gallery
- Example Gallery
- Canvas Element
- Canvas Kit Interactive
- Carousel Demo - Selector API Showcase
- Chrome-Style Tabs
- blinc_cn Components
- Code Element
- Complex SVG
- CSS Debug
- CSS Visual Features
- Layer Effects
- Emoji and HTML Entities
- @flow Shader
- Fluid Surface
- Skeleton animation with glTF +
blinc_canvas_kit. DrawContext::run_gpu_passend-to-end demo.- Image CSS Styling
- Image Layer Test
- Keyframe Animation Canvas
- Markdown Editor
- 3D Mesh Demo — renders the Khronos glTF
DamagedHelmetsample model - Motion Demo
- Music Player Glass Card
- Node-editor demo — pre-wired graph with three node types, typed
- Notch Menu Bar
- Overflow Fade
- Overlay System
- Pointer Query
- Rich Text Element
- Rich Text Editor
- Scroll Container
- Semantic @flow
- Sortable
- Stateful API + Signal-bound modifiers demo.
- End-to-end 3D demo wiring Blinc's SceneKit3D renderer up to
- Unified Styling API
- SVG Animation
- Table Builder
- Tabler Icons
- Minimal text positioning test
- Text Input Widgets
- KHR_texture_transform
- Theme System
- Timeline Animation
- Typography
- Video Player
- Wet Glass
- Windowed Application
Web Development
Core Concepts
- Elements & Layout
- Styling & Materials
- CSS Styling
- Theming
- Event Handling
- State Management
- Element Refs
Animation
Components
Component Library (blinc_cn)
Widgets
- Buttons & Inputs
- Text & Rich Text
- Code Editor
- Scroll Containers
- Virtualized List
- Canvas Drawing
- Images & SVG
- Audio & Video
- Markdown Rendering
Canvas Kit
Advanced
- Routing & Navigation
- Multi-Window
- System Integration
- Element Query API
- Overlay System
- Custom State Machines
- Pointer Query
- Performance Tips
- Flow Shaders
- 3D Rendering
- Custom GPU Passes
- Hot-reload (experimental)
Architecture
Contributing