Skip to content

macOS: can`t run 3d model in flutter 3.29.2 master channel #65

@wangcker

Description

@wangcker

Error:

E/flutter (21967): [ERROR:flutter/impeller/renderer/render_pass.cc(64)] Break on 'ImpellerValidationBreak' to inspect point of failure: Attempted to add an invalid command to the render pass.
I/flutter (21967): AppCatchError>>>>>>>>>> 是否为release: false
[log] AppCatchError message:Exception: Failed to append draw,stack#0      RenderPass.draw (package:flutter_gpu/src/render_pass.dart:409:7)
      #1      SceneEncoder._encode (package:flutter_scene/src/scene_encoder.dart:58:17)
scene_encoder.dart:58
      #2      SceneEncoder.encode (package:flutter_scene/src/scene_encoder.dart:42:7)
scene_encoder.dart:42
      #3      Mesh.render (package:flutter_scene/src/mesh.dart:49:15)
mesh.dart:49
      #4      Node.render (package:flutter_scene/src/node.dart:510:13)
node.dart:510
      #5      Node.render (package:flutter_scene/src/node.dart:518:13)
node.dart:518
      #6      Node.render (package:flutter_scene/src/node.dart:518:13)
node.dart:518
      #7      Node.render (package:flutter_scene/src/node.dart:518:13)
node.dart:518
      #8      Node.render (package:flutter_scene/src/node.dart:518:13)
node.dart:518
      #9      Node.render (package:flutter_scene/src/node.dart:518:13)
node.dart:518
      #10     Node.render (package:flutter_scene/src/node.dart:518:13)
node.dart:518
      #11     Scene.render (package:flutter_scene/src/scene.dart:166:10)
scene.dart:166
      #12     ScenePainter.paint (package:*/widget/health/health_3d_page.dart:102:11)
health_3d_page.dart:102
      #13     RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:593:13)
custom_paint.dart:593
      #14     RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:641:7)
custom_paint.dart:641
      #15     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #16     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #17     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:81:15)
shifted_box.dart:81
      #18     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #19     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #20     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:81:15)
shifted_box.dart:81
      #21     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #22     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #23     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #24     RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:2343:11)
proxy_box.dart:2343
      #25     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #26     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #27     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:3360:15)
box.dart:3360
      #28     RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:424:5)
custom_layout.dart:424
      #29     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #30     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #31     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #32     _RenderInkFeatures.paint (package:flutter/src/material/material.dart:632:11)
material.dart:632
      #33     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #34     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #35     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #36     RenderPhysicalModel.paint.<anonymous closure> (package:flutter/src/rendering/proxy_box.dart:2083:15)
proxy_box.dart:2083
      #37     PaintingContext.pushClipRRect (package:flutter/src/rendering/object.dart:610:14)
object.dart:610
      #38     RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:2070:21)
proxy_box.dart:2070
      #39     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #40     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #41     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #42     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #43     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #44     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #45     _RenderVisibility.paint (package:flutter/src/widgets/visibility.dart:607:11)
visibility.dart:607
      #46     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #47     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #48     RenderIndexedStack.paintStack (package:flutter/src/rendering/stack.dart:864:13)
stack.dart:864
      #49     RenderStack.paint (package:flutter/src/rendering/stack.dart:720:7)
stack.dart:720
      #50     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #51     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #52     _RenderLayoutBuilder.paint (package:flutter/src/widgets/layout_builder.dart:413:15)
layout_builder.dart:413
      #53     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #54     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #55     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:3360:15)
box.dart:3360
      #56     RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:424:5)
custom_layout.dart:424
      #57     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #58     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #59     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #60     _RenderInkFeatures.paint (package:flutter/src/material/material.dart:632:11)
material.dart:632
      #61     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #62     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #63     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #64     RenderPhysicalModel.paint.<anonymous closure> (package:flutter/src/rendering/proxy_box.dart:2083:15)
proxy_box.dart:2083
      #65     PaintingContext.pushClipRRect (package:flutter/src/rendering/object.dart:610:14)
object.dart:610
      #66     RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:2070:21)
proxy_box.dart:2070
      #67     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #68     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #69     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #70     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #71     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:260:13)
object.dart:260
      #72     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
      #73     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3371:7)
object.dart:3371
      #74     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:175:11)
object.dart:175
      #75     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:120:5)
object.dart:120
      #76     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1251:31)
object.dart:1251
      #77     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1261:15)
object.dart:1261
      #78     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:618:23)
binding.dart:618
      #79     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1231:13)
binding.dart:1231
      #80     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:482:5)
binding.dart:482
      #81     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1442:15)
binding.dart:1442
      #82     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1355:9)
binding.dart:1355
      #83     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1208:5)
binding.dart:1208
      #84     _rootRun (dart:async/zone.dart:1525:13)
zone.dart:1525
      #85     _CustomZone.run (dart:async/zone.dart:1422:19)
zone.dart:1422
      #86     _CustomZone.runGuarded (dart:async/zone.dart:1321:7)
zone.dart:1321
      #87     _invoke (dart:ui/hooks.dart:318:10)
hooks.dart:318
      #88     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:428:5)
platform_dispatcher.dart:428
      #89     _drawFrame (dart:ui/hooks.dart:288:31)

Flutter doctor:

Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel [user-branch], 3.29.2, on macOS 14.6.1 23G93 darwin-arm64, locale zh-Hans-CN)
    ! Flutter version 3.29.2 on channel [user-branch] at /Users/wangcker/opt/flutter
      Currently on an unknown channel. Run `flutter channel` to switch to an official channel.
      If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/setup.
    ! Upstream repository unknown source is not a standard remote.
      Set environment variable "FLUTTER_GIT_URL" to unknown source to dismiss this error.
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
[!] Xcode - develop for iOS and macOS (Xcode 16.2)
    ! CocoaPods 1.15.2 out of date (1.16.2 is recommended).
        CocoaPods is a package manager for iOS or macOS platform code.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/to/platform-plugins
      To update CocoaPods, see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.3.4.1)
[✓] VS Code (version 1.98.2)
[✓] Connected device (5 available)            
[✓] Network resources

! Doctor found issues in 2 categories.

Application code:

import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter_scene/scene.dart' as fs;
import 'package:get/get.dart';
import 'package:vector_math/vector_math.dart' as vm;

import '../appbar/gradient_app_bar.dart';
import '../base_page.dart';

class Health3DPage extends BasePage {
  const Health3DPage({super.key});

  @override
  BasePageState getState() => _Health3DPageState();
}

class _Health3DPageState extends BasePageState<Health3DPage>
    with SingleTickerProviderStateMixin {
  int elapsedSeconds = 0;
  fs.Scene scene = fs.Scene();
  bool inited = false;
  @override
  void initState() {
    fs.Node.fromAsset('assets/build/models/young_man.model').then((model) {
      model.name = 'young_man';
      model.visible = true;
      //model.children[0].children[7].visible = false;

      //model.localTransform.scale(1, 1, 1);
      scene.add(model);

      inited = true;
      createTicker((elapsed) {
        //debugPrint("time ${(elapsed.inMilliseconds - elapsedSeconds)} ms");
        setState(() {
          //elapsedSeconds = elapsed.inMilliseconds;
        });
      }).start();
      //setState(() {});
    });

    super.initState();
    //FlutterNativeSplash.remove();
    // Future.delayed(Duration(seconds: 3), () {
    //   Get.to(Health3DPage());
    // });
  }

  @override
  Widget build(BuildContext context) {
    if (inited) {
      final painter = ScenePainter(
        scene: scene,
        camera: fs.PerspectiveCamera(
          position: vm.Vector3(
            sin(elapsedSeconds / 1000) * 1,
            1,
            cos(elapsedSeconds / 1000) * 1,
          ),
          target: vm.Vector3(0, 1, 0),
        ),
      );
      return Scaffold(
        // appBar: GradientAppBar(
        //   title: Text("3d 模型测试"),
        // ),
        body: Container(
          alignment: Alignment.center,
          decoration: const BoxDecoration(
            image: DecorationImage(
              fit: BoxFit.fitWidth,
              alignment: Alignment.topCenter,
              image: AssetImage("assets/images/health_top_bg.png"),
            ),
          ),
          child: CustomPaint(
            painter: painter,
            size: Size(Get.width, Get.height),
          ),
        ),
      );
    }
    return Scaffold(
      appBar: GradientAppBar(title: Text("3d 模型测试")),
      body: Container(
        width: Get.width,
        height: Get.height,
        child: Center(child: Text("加载中...")),
      ),
    );
  }
}

class ScenePainter extends CustomPainter {
  ScenePainter({required this.scene, required this.camera});
  fs.Scene scene;
  fs.Camera camera;

  @override
  void paint(Canvas canvas, Size size) {
    scene.render(camera, canvas, viewport: Offset.zero & size);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => true;
}

Metadata

Metadata

Assignees

Labels

buildProject building

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions