macbear_3d 0.5.0
macbear_3d: ^0.5.0 copied to clipboard
Macbear 3D is a lightweight 3D rendering engine for Flutter, built on Google ANGLE (OpenGL ES).
import 'package:flutter/material.dart' hide Colors;
// Macbear3D engine
import 'package:macbear_3d/macbear_3d.dart';
void main() {
M3AppEngine.instance.onDidInit = onDidInit;
runApp(const MyApp());
}
Future<void> onDidInit() async {
debugPrint('main.dart: onDidInit');
final appEngine = M3AppEngine.instance;
appEngine.renderEngine.createShadowMap(width: 1024, height: 1024);
await appEngine.setScene(MyScene());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Macbear 3D Example')),
body: const M3View(),
),
);
}
}
// Define a simple scene
class MyScene extends M3Scene {
@override
Future<void> load() async {
if (isLoaded) return;
await super.load();
camera.setEuler(pi / 6, -pi / 6, 0, distance: 8);
camera.csmCount = 0;
// add geometry
addMesh(M3Mesh(M3BoxGeom(1.0, 1.0, 1.0)), Vector3(0, 0, 2.5)).color = Colors.blue;
addMesh(M3Mesh(M3SphereGeom(0.5)), Vector3(0, 0, 0)).color = Colors.red;
addMesh(M3Mesh(M3TorusGeom(1, 0.2)), Vector3(0, 0, 0)).color = Colors.green;
addMesh(M3Mesh(M3CylinderGeom(0.5, 0.1, 1.0)), Vector3(0, 0, 1.2)).color = Colors.yellow;
addMesh(M3Mesh(M3PlaneGeom(10, 10)), Vector3(0, 0, -1)).color = Colors.skyBlue;
}
}