如何使用点击功能从 flutter 中的 3d 模型获取坐标?

问题描述 投票:0回答:1

我在我的 flutter 中添加了一个 3-d 模型。让我向您介绍一些有关我的应用程序的背景信息。我有一个足部护理应用程序,用户可以通过敲击应用程序中的 3D 足部模型来精确定位他/她感到疼痛的位置,该点将被存储并发送给医生以诊断我正在使用的

 model_viewer_plus
用于显示模型的包,但我不知道如何在应用程序中实现点击和获取点参考功能。这是我的应用程序的屏幕截图

enter image description here

到目前为止,我已经尝试过这段代码,但这对我没有帮助。

ModelViewer(
              src: 'assets/models/feet.glb',
              alt: 'A 3D model of an astronaut',
              id: "feet",
              ar: true,
              disableZoom: true,
              cameraControls: true,
              onWebViewCreated: (controller) {
                controller.addJavaScriptChannel(
                  "onModelClick",
                  onMessageReceived: (message) {
                    log("Tapped Position: ${message.message}");
                    setState(() {
                      tappedPosition = message.message;
                    });
                  },
                );

                controller.addJavaScriptChannel(
                  "onClick",
                  onMessageReceived: (message) {
                    log("Tapped Position: ${message.message}");
                    setState(() {
                      tappedPosition = message.message;
                    });
                  },
                );
                controller.runJavaScriptReturningResult('''
                        const modelViewer = document.getElementById('feet');
                        modelViewer.addEventListener('click', (event) => {
                          const intersection = modelViewer.positionAndNormalFromPoint(event.clientX, event.clientY);
                          if (intersection) {
                            onModelClick.postMessage(JSON.stringify(intersection));
                          }
                          Print.postMessage('Hello from Dart');
                        });
                      ''');

                controller.runJavaScript('''
                        const modelViewer = document.querySelector('model-viewer');
                        modelViewer.addEventListener('click', (event) => {
                          const intersection = modelViewer.positionAndNormalFromPoint(event.clientX, event.clientY);
                          if (intersection) {
                            onModelClick.postMessage(JSON.stringify(intersection));
                          }
                        });
                      ''');
              },
            )

怎么做你能帮我吗 谢谢

flutter 3d raycast
1个回答
0
投票

我也有同样的疑问和问题。你解决了吗?将非常感谢您的回复和帮助

© www.soinside.com 2019 - 2024. All rights reserved.