如何从 Next.js 中的 iframe 启动 WebXR?

How do I start WebXR from an iframe within Next.js?

提问人:Rooster 提问时间:10/18/2023 更新时间:10/18/2023 访问量:34

问:

我有一个 Next.js 应用程序

当我单击左下角的 AR 按钮(“在 AR betrachten 中”)时,它应该在 Android Chrome 上打开 WebXR。但它回退到 Android Scene Viewer。

iframe 源 https://polygoningenieur.dev/。 如果我直接在浏览器中转到 https://polygoningenieur.dev/,它可以工作,WebXR 正在打开。

Screenshots from Scene Viewer and WebXR

沙盒是一个标准的next.js应用程序,next.config.js如下所示:

module.exports = {
  async headers() {
    return [
      {
        source: "/",
        headers: [
          {
            key: "Permissions-Policy",
            value: "xr-spatial-tracking=()"
          }
        ]
      }
    ];
  }
};

index.tsx 是这样的:

import React from "react";
import { render } from "react-dom";
import "./style.css";

const App = () => (
  <div>
    <div id="ar-layout">
      <iframe
        src="https://polygoningenieur.dev"
        id="ar-showcase"
        title="AR-App Example"
        width="800"
        height="600"
        allow="xr-spatial-tracking"
        allowFullScreen
      ></iframe>
    </div>
  </div>
);

render(<App />, document.getElementById("root"));

所以我不确定我在这里错过了什么。AR 应用程序位于 https 域上,iframe 具有 allow=“xr-spatial-tracking”,并且我在 next.config.js 中将权限策略标头设置为允许 xr-spatial-tracking。 (Codesandbox 说 allow on iframe 是一个未知的道具,但在我的本地环境中没有对此的抱怨。

(附加信息:我在 Android 上使用 Chrome,AR-App 是用模型查看器构建的,并且是静态的,使用 html 和 JavaScript 。

但为什么它不起作用?谢谢!:)

JavaScript Next.js iframe webxr 模型查看

评论


答:

0赞 Ravindra Bosamiya 11/29/2023 #1

他们似乎正在使用模型查看器在 AR 中展示 3D 模型。 您也可以使用此在nextjs应用程序中使用相同的内容

演示代码沙盒链接:https://codesandbox.io/s/google-model-viewer-nextjs-p4gge

演示故障链接:https://glitch.com/edit/#!/grave-verbose-angora?path=index.html%3A19%3A17

要在modelviewer中尝试3d模型,可以使用以下GLB文件:

  1. 草图Fab
  2. 涡轮鱿鱼
  3. CGtrader的
  4. 3dexport