From 9b66fb165a824b79d3efe7f6e0fe06237a0c1127 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 26 Apr 2024 11:04:00 +0800 Subject: [PATCH] update example project --- example/lib/menus/asset_submenu.dart | 36 +++++++++++++++++++++------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/example/lib/menus/asset_submenu.dart b/example/lib/menus/asset_submenu.dart index f30a0d95..b5f9d64d 100644 --- a/example/lib/menus/asset_submenu.dart +++ b/example/lib/menus/asset_submenu.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_filament/flutter_filament.dart'; import 'package:flutter_filament_example/main.dart'; import 'package:permission_handler/permission_handler.dart'; - +import 'package:animation_tools_dart/animation_tools_dart.dart'; import 'package:vector_math/vector_math_64.dart' as v; class AssetSubmenu extends StatefulWidget { @@ -96,20 +96,38 @@ class _AssetSubmenuState extends State { child: const Text("Show morph target names for Cylinder")), MenuItemButton( onPressed: () async { - widget.controller.setMorphTargetWeights( - widget.controller.scene.listEntities().last, - "Cylinder", - List.filled(4, 1.0)); + var cylinder = await widget.controller.getChildEntity( + widget.controller.scene.listEntities().last, "Cylinder"); + widget.controller + .setMorphTargetWeights(cylinder, List.filled(4, 1.0)); }, child: const Text("set Cylinder morph weights to 1")), MenuItemButton( onPressed: () async { - widget.controller.setMorphTargetWeights( - widget.controller.scene.listEntities().last, - "Cylinder", - List.filled(4, 0.0)); + var cylinder = await widget.controller.getChildEntity( + widget.controller.scene.listEntities().last, "Cylinder"); + widget.controller + .setMorphTargetWeights(cylinder, List.filled(4, 0.0)); }, child: const Text("Set Cylinder morph weights to 0")), + MenuItemButton( + onPressed: () async { + var morphTargets = await widget.controller.getMorphTargetNames( + widget.controller.scene.listEntities().last, "Cylinder"); + + var morphData = MorphAnimationData( + List.generate( + 60, + (frameNum) => + List.generate(4, (morphIndex) => frameNum / 60)), + morphTargets); + await widget.controller.setMorphAnimationData( + widget.controller.scene.listEntities().last, morphData, + targetMeshNames: [ + "Cylinder", + ]); + }, + child: const Text("create manual morph animation for Cylinder")), MenuItemButton( onPressed: () async { widget.controller.setPosition(