How to remove a AR core node in flutter

227

You can do so by using the removeNode function. It takes one parameter, the name of the node you want to remove.

So the way of doing so in your code is:

@override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(entity),
        ),
        body: ArCoreView(
          onArCoreViewCreated: _onArCoreViewCreated,
          enableTapRecognizer: true,
        ),
      ),
    );
  }
void _onArCoreViewCreated(ArCoreController controller) {
    arCoreController = controller;
    _addEntityNode(arCoreController);
  }

void _addEntityNode(ArCoreController controller) {
    final entityNode = ArCoreReferenceNode(
        name: entity,
        objectUrl:
        "${objectKeys[entity.toLowerCase()]["3d_model_URI"]}",
        position: vector.Vector3(
          0, 0, -1
        ),
    );

    arCoreController.addArCoreNode(entityNode);
/*below code is for making the execution sleep for 10 seconds so you can see the node
initialize and then disappear after ten seconds. The main part to note is the removeNode
function*/ 
    await Future.delayed(const Duration(seconds: 10));
    arCoreController.removeNode(entityNode);
  }

BTW, it's a miracle we both have the same usernames, LOL

Share:
227
Joel
Author by

Joel

Updated on December 29, 2022

Comments

  • Joel
    Joel over 1 year

    I am new to flutter, especially arcore_flutter_plugin. I have accomplished initializing and showing ArCoreNodes, but I am unable to find a way to remove/delete these already initialized nodes. How I initialize nodes:

    @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text(entity),
            ),
            body: ArCoreView(
              onArCoreViewCreated: _onArCoreViewCreated,
              enableTapRecognizer: true,
            ),
          ),
        );
      }
    void _onArCoreViewCreated(ArCoreController controller) {
        arCoreController = controller;
        _addEntityNode(arCoreController);
      }
    
    void _addEntityNode(ArCoreController controller) {
        final entityNode = ArCoreReferenceNode(
            name: entity,
            objectUrl:
            "${objectKeys[entity.toLowerCase()]["3d_model_URI"]}",
            position: vector.Vector3(
              0, 0, -1
            ),
        );
    
        arCoreController.addArCoreNode(entityNode);
      }
    

    The purpose is to remove nodes when they aren't in context/are not selcted.