Перейти к содержимому

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.

  • 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
  • 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)
  • 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

Add this to your package’s pubspec.yaml file:

dependencies:
flutter_freedome_player: ^1.0.0
import 'package:flutter_freedome_player/flutter_freedome_player.dart';
// Create a simple player widget
FreeDomePlayerWidget(
filePath: 'assets/models/buddha.dae',
showControls: true,
autoPlay: true,
onContentLoaded: () {
print('Content loaded successfully!');
},
onError: (error) {
print('Error: $error');
},
)
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();
}
}
// Load and display comics
final comicsContent = FreeDomePlayer.createMediaContent(
filePath: 'assets/comics/chapter1.comics',
format: MediaFormat.comics,
);
FreeDomePlayerWidget(
content: comicsContent,
config: PlayerConfig.defaultComics,
showControls: true,
)
// Load and display 3D model
final modelContent = FreeDomePlayer.createMediaContent(
filePath: 'assets/models/buddha.dae',
format: MediaFormat.collada,
playbackMode: PlaybackMode.ar, // Enable AR
);
FreeDomePlayerWidget(
content: modelContent,
config: PlayerConfig.default3D,
showControls: true,
)
// Load Boranko content for dome projection
final 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,
)
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(
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 Screen AR VR Dome
Android ✅ ✅ ✅ ✅
iOS ✅ ✅ ✅ ✅
Web ✅ ❌ ❌ ✅
macOS ✅ ❌ ❌ ✅
Linux ✅ ❌ ❌ ✅
Windows ✅ ❌ ❌ ✅

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
// Send OSC commands to dome
await domeService.sendOSCCommand('/dome/radius', [5.0]);
await domeService.sendOSCCommand('/quantum/frequency', [108.0]);
await domeService.sendOSCCommand('/projection/mode', ['fisheye']);

This plugin depends on:

  • flutter_3d_controller - 3D rendering
  • model_viewer_plus - Web 3D viewer
  • vector_math - 3D mathematics
  • xml - COLLADA parsing
  • archive - Comics file handling
  • http - FreeDome Engine communication
  • provider - State management

This project is licensed under the NativeMindNONC License - see the LICENSE file for details.

  • 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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

For support and questions, please open an issue in the [freedome_dart repository](freedome_dart

See CHANGELOG.md for a list of changes.


Licence: NativeMindNONC — see LICENSE.

Commercial use → NativeMind sales