flutter_freedome_player
Dome features run over
freedome_client— see doc/migration-to-freedome_client.md.
Flutter plugin for playing 3D/AR/VR content and various media formats including .comics, .boranko, collada and others. Supports both screen display and dome projections.
Features
Section titled “Features”Supported Formats
Section titled “Supported Formats”- Comics (.comics) - ZIP archives with images and metadata
- Boranko (.boranko) - Advanced 2D format with Z-depth for dome projection
- COLLADA (.dae) - XML-based 3D model format
- OBJ (.obj) - Simple 3D model format
- glTF (.gltf) - Modern 3D transmission format
- glTF Binary (.glb) - Binary version of glTF
Playback Modes
Section titled “Playback Modes”- Screen - Standard display on device screen
- Dome - FreeDome dome projection with quantum properties
- AR - Augmented Reality (for 3D models)
- VR - Virtual Reality (for 3D models and Boranko content)
Advanced Features
Section titled “Advanced Features”- Quantum Properties - Spiritual resonance frequencies (108 Hz)
- FreeDome Integration - Direct connection to FreeDome Engine
- OSC Protocol - Real-time dome control
- Z-Depth Effects - Advanced 2D to 3D conversion for Boranko format
- Chakra Frequencies - Support for meditation and consciousness content
Installation
Section titled “Installation”Add this to your package’s pubspec.yaml file:
dependencies: flutter_freedome_player: ^1.0.0Basic Usage
Section titled “Basic Usage”import 'package:flutter_freedome_player/flutter_freedome_player.dart';
// Create a simple player widgetFreeDomePlayerWidget( filePath: 'assets/models/buddha.dae', showControls: true, autoPlay: true, onContentLoaded: () { print('Content loaded successfully!'); }, onError: (error) { print('Error: $error'); },)Advanced Usage with Controller
Section titled “Advanced Usage with Controller”import 'package:flutter_freedome_player/flutter_freedome_player.dart';
class MyPlayerScreen extends StatefulWidget { @override _MyPlayerScreenState createState() => _MyPlayerScreenState();}
class _MyPlayerScreenState extends State<MyPlayerScreen> { late FreeDomePlayerController controller;
@override void initState() { super.initState();
// Create controller with custom config final config = PlayerConfig( enableAR: true, enableDomeProjection: true, autoRotate: true, backgroundColor: 0xFF000000, domeConfig: DomeConfig( projectionType: DomeProjectionType.fisheye, domeRadius: 5.0, freedomeEngineUrl: 'http://localhost:8080', quantumProperties: QuantumProperties( resonanceFrequency: 108.0, interferencePattern: 'spiritual', ), ), );
controller = FreeDomePlayer().createController(config); loadContent(); }
Future<void> loadContent() async { final content = FreeDomePlayer.createMediaContent( filePath: 'assets/comics/mahabharata_ch1.comics', name: 'Mahabharata Chapter 1', format: MediaFormat.comics, description: 'First chapter of the great epic', author: 'Igor Baranko', );
controller.loadMediaContent(content); await controller.play(); }
@override Widget build(BuildContext context) { return Scaffold( body: FreeDomePlayerWidget( content: controller.currentContent, config: controller.config, showControls: true, onContentLoaded: () { // Content loaded callback }, onError: (error) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('Error: $error')), ); }, ), ); }
@override void dispose() { controller.dispose(); super.dispose(); }}Comics Player
Section titled “Comics Player”// Load and display comicsfinal comicsContent = FreeDomePlayer.createMediaContent( filePath: 'assets/comics/chapter1.comics', format: MediaFormat.comics,);
FreeDomePlayerWidget( content: comicsContent, config: PlayerConfig.defaultComics, showControls: true,)3D Model Player
Section titled “3D Model Player”// Load and display 3D modelfinal modelContent = FreeDomePlayer.createMediaContent( filePath: 'assets/models/buddha.dae', format: MediaFormat.collada, playbackMode: PlaybackMode.ar, // Enable AR);
FreeDomePlayerWidget( content: modelContent, config: PlayerConfig.default3D, showControls: true,)Boranko Player with Dome Projection
Section titled “Boranko Player with Dome Projection”// Load Boranko content for dome projectionfinal domeConfig = DomeConfig( projectionType: DomeProjectionType.fisheye, domeRadius: 5.0, freedomeEngineUrl: 'http://freedome-engine:8080', quantumProperties: QuantumProperties( resonanceFrequency: 108.0, consciousnessLevel: 'meditation', ),);
final borankoContent = FreeDomePlayer.createMediaContent( filePath: 'assets/boranko/meditation.boranko', format: MediaFormat.boranko, playbackMode: PlaybackMode.dome,);
FreeDomePlayerWidget( content: borankoContent, config: PlayerConfig.domeProjection(domeConfig), showControls: true,)Configuration
Section titled “Configuration”PlayerConfig
Section titled “PlayerConfig”PlayerConfig( enableAR: true, // Enable AR functionality enableVR: false, // Enable VR functionality enableDomeProjection: true, // Enable dome projection autoRotate: true, // Auto-rotate 3D models cameraControls: true, // Enable camera controls backgroundColor: 0xFF2A2A2A, // Background color renderQuality: 1.0, // Render quality (0.1 - 2.0) domeConfig: domeConfig, // Dome configuration)DomeConfig
Section titled “DomeConfig”DomeConfig( projectionType: DomeProjectionType.fisheye, domeRadius: 5.0, projectorCount: 1, edgeBlending: false, colorCorrection: true, freedomeEngineUrl: 'http://localhost:8080', oscPort: 8000, oscHost: 'localhost', quantumProperties: QuantumProperties( resonanceFrequency: 108.0, interferencePattern: 'spiritual', consciousnessLevel: 'meditation', quantumElements: 108, fractalDimension: 2.618, ),)Platform Support
Section titled “Platform Support”| Platform | Screen | AR | VR | Dome |
|---|---|---|---|---|
| Android | ✅ | ✅ | ✅ | ✅ |
| iOS | ✅ | ✅ | ✅ | ✅ |
| Web | ✅ | ❌ | ❌ | ✅ |
| macOS | ✅ | ❌ | ❌ | ✅ |
| Linux | ✅ | ❌ | ❌ | ✅ |
| Windows | ✅ | ❌ | ❌ | ✅ |
FreeDome Integration
Section titled “FreeDome Integration”This plugin integrates with the FreeDome ecosystem:
- FreeDome Engine - Rust-based dome projection engine
- FreeDome Sphere - Flutter application for dome content
- Quantum Calibration - Advanced projection calibration
- OSC Protocol - Real-time dome control
OSC Commands
Section titled “OSC Commands”// Send OSC commands to domeawait domeService.sendOSCCommand('/dome/radius', [5.0]);await domeService.sendOSCCommand('/quantum/frequency', [108.0]);await domeService.sendOSCCommand('/projection/mode', ['fisheye']);Dependencies
Section titled “Dependencies”This plugin depends on:
flutter_3d_controller- 3D renderingmodel_viewer_plus- Web 3D viewervector_math- 3D mathematicsxml- COLLADA parsingarchive- Comics file handlinghttp- FreeDome Engine communicationprovider- State management
License
Section titled “License”This project is licensed under the NativeMindNONC License - see the LICENSE file for details.
License Summary
Section titled “License Summary”- Free for Non-Commercial Use: Educational institutions, schools, universities, training, research, and personal learning
- Commercial Use Requires License: Written agreement required for any commercial activities
- Developer Rights: Developers can present their work at conferences but commercial licensing must go through the company
- Available in 3 Languages: English, Russian, and Thai versions included
For full license terms, please see the LICENSE file.
Contributing
Section titled “Contributing”- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Support
Section titled “Support”For support and questions, please open an issue in the [freedome_dart repository](freedome_dart
Changelog
Section titled “Changelog”See CHANGELOG.md for a list of changes.
Licence: NativeMindNONC — see LICENSE.
Commercial use → NativeMind sales