This commit is contained in:
Nick Fisher
2023-04-19 18:06:48 +08:00
parent 7f4ca7e69b
commit a162ff2400
30 changed files with 3604 additions and 2293 deletions

View File

@@ -19,12 +19,12 @@ class MyApp extends StatefulWidget {
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final FilamentController _filamentController = PolyvoxFilamentController();
class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
late FilamentController _filamentController;
FilamentAsset? _cube;
FilamentAsset? _flightHelmet;
FilamentLight? _light;
FilamentEntity? _cube;
FilamentEntity? _flightHelmet;
FilamentEntity? _light;
final weights = List.filled(255, 0.0);
List<String> _targetNames = [];
@@ -37,6 +37,7 @@ class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
_filamentController = FilamentController(this);
}
void onClick(int index) async {
@@ -45,7 +46,7 @@ class _MyAppState extends State<MyApp> {
await _filamentController.initialize();
break;
case -2:
await _filamentController.render();
_filamentController.render();
break;
case -4:
setState(() {
@@ -61,55 +62,48 @@ class _MyAppState extends State<MyApp> {
break;
case 0:
await _filamentController.setBackgroundImage('assets/background.ktx');
_filamentController.setBackgroundImage('assets/background.ktx');
break;
case 1:
await _filamentController
_filamentController
.loadSkybox('assets/default_env/default_env_skybox.ktx');
break;
case -3:
await _filamentController
.loadIbl('assets/default_env/default_env_ibl.ktx');
_filamentController.loadIbl('assets/default_env/default_env_ibl.ktx');
break;
case 2:
await _filamentController.removeSkybox();
_filamentController.removeSkybox();
break;
case 3:
_cube = await _filamentController.loadGlb('assets/cube.glb');
_animationNames = await _filamentController.getAnimationNames(_cube!);
_cube = _filamentController.loadGlb('assets/cube.glb');
_animationNames = _filamentController.getAnimationNames(_cube!);
break;
case 4:
if (_cube != null) {
await _filamentController.removeAsset(_cube!);
_filamentController.removeAsset(_cube!);
}
_cube =
await _filamentController.loadGltf('assets/cube.gltf', 'assets');
print(await _filamentController.getAnimationNames(_cube!));
_cube = _filamentController.loadGltf('assets/cube.gltf', 'assets');
break;
case 5:
if (_flightHelmet == null) {
_flightHelmet = await _filamentController.loadGltf(
'assets/FlightHelmet/FlightHelmet.gltf', 'assets/FlightHelmet');
}
_flightHelmet ??= _filamentController.loadGltf(
'assets/FlightHelmet/FlightHelmet.gltf', 'assets/FlightHelmet');
break;
case 6:
await _filamentController.removeAsset(_cube!);
_filamentController.removeAsset(_cube!);
break;
case 7:
await _filamentController.setMorphTargetWeights(
_cube!, List.filled(8, 1.0));
_filamentController.setMorphTargetWeights(_cube!, List.filled(8, 1.0));
break;
case 8:
await _filamentController.setMorphTargetWeights(
_cube!, List.filled(8, 0));
_filamentController.setMorphTargetWeights(_cube!, List.filled(8, 0));
break;
case 9:
_filamentController.playAnimations(
_cube!, List.generate(_animationNames.length, (i) => i),
loop: _loop);
for (int i = 0; i < _animationNames.length; i++) {
_filamentController.playAnimation(_cube!, i, loop: _loop);
}
break;
case 10:
_filamentController.stopAnimation(_cube!, 0);
@@ -145,39 +139,38 @@ class _MyAppState extends State<MyApp> {
// _filamentController.setAnimation(_cube!, animation);
break;
case 16:
_targetNames =
await _filamentController.getMorphTargetNames(_cube!, "Cube");
_targetNames = _filamentController.getMorphTargetNames(_cube!, "Cube");
setState(() {});
break;
case 17:
_animationNames = await _filamentController.getAnimationNames(_cube!);
_animationNames = _filamentController.getAnimationNames(_cube!);
setState(() {});
break;
case 18:
await _filamentController.panStart(1, 1);
await _filamentController.panUpdate(1, 2);
await _filamentController.panEnd();
_filamentController.panStart(1, 1);
_filamentController.panUpdate(1, 2);
_filamentController.panEnd();
break;
case 19:
await _filamentController.panStart(1, 1);
await _filamentController.panUpdate(0, 0);
await _filamentController.panEnd();
_filamentController.panStart(1, 1);
_filamentController.panUpdate(0, 0);
_filamentController.panEnd();
break;
case 20:
await _filamentController.clearAssets();
_filamentController.clearAssets();
break;
case 21:
await _filamentController.setTexture(_cube!, "assets/background.png");
_filamentController.setTexture(_cube!, "assets/background.png");
break;
case 22:
await _filamentController.transformToUnitCube(_cube!);
_filamentController.transformToUnitCube(_cube!);
break;
case 23:
await _filamentController.setPosition(_cube!, 1.0, 1.0, -1.0);
_filamentController.setPosition(_cube!, 1.0, 1.0, -1.0);
break;
case 24:
await _filamentController.setRotation(_cube!, pi / 2, 0.0, 1.0, 0.0);
_filamentController.setRotation(_cube!, pi / 2, 0.0, 1.0, 0.0);
break;
case 25:
setState(() {
@@ -185,35 +178,34 @@ class _MyAppState extends State<MyApp> {
});
break;
case 26:
await _filamentController.setCameraPosition(0, 0, 3);
await _filamentController.setCameraRotation(0, 0, 1, 0);
_filamentController.setCameraPosition(0, 0, 3);
_filamentController.setCameraRotation(0, 0, 1, 0);
break;
case 27:
_framerate = _framerate == 60 ? 30 : 60;
await _filamentController.setFrameRate(_framerate);
_filamentController.setFrameRate(_framerate);
break;
case 28:
await _filamentController.setBackgroundImagePosition(25, 25);
_filamentController.setBackgroundImagePosition(25, 25);
break;
case 29:
_light = await _filamentController.addLight(
_light = _filamentController.addLight(
1, 6500, 15000000, 0, 1, 0, 0, -1, 0, true);
_light = await _filamentController.addLight(
_light = _filamentController.addLight(
2, 6500, 15000000, 0, 0, 1, 0, 0, -1, true);
break;
case 30:
if (_light != null) {
await _filamentController.removeLight(_light!);
_filamentController.removeLight(_light!);
}
break;
case 31:
await _filamentController.clearLights();
_filamentController.clearLights();
break;
case 32:
await _filamentController
.setCameraModelMatrix(List<double>.filled(16, 1.0));
_filamentController.setCameraModelMatrix(List<double>.filled(16, 1.0));
// await _filamentController.setBoneTransform(
// _filamentController.setBoneTransform(
// _cube!,
// "Bone.001",
// "Cube.001",

View File

@@ -41,7 +41,7 @@ endif()
# of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_14)
target_compile_options(${TARGET} PRIVATE -Wall -Werror -Wno-unused-function)
target_compile_options(${TARGET} PRIVATE -Wall -Werror -Wno-unused-function -Wno-unused-variable)
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
endfunction()