首页 > 解决方案 > X3DOM ImageTexture url找不到本地文件

问题描述

我正在尝试制作一个包含访问本地文件的“ImageTexture”的 X3DOM 框形状。但是,当我给“url”属性一个 https:// 链接时,它似乎只能找到我的图片。这是我的代码和本地图片文件和html doc的文件夹设置;“index.html”是我的代码来自的 html 文件,“one.png”是我要加载到形状上的 png 图片:

            <transform translation = "1.75 0 0">
                <shape>
                    <appearance>
                        <!--<material diffuseColor = "0 1 1"></material>-->
                        <ImageTexture  url="one.png"></ImageTexture>
                    </appearance>
                    <box size = "0 4 4"/>
                </shape>
            </transform>



            .
            ├── index.html
            ├── one.png
            ├── pics
            │   ├── 1.png
            │   ├── 2.jpeg
            │   ├── 3.jpeg
            │   ├── 4.png
            │   ├── 5.png
            │   └── 6.jpeg
            ├── style.css
            ├── test.html
            ├── x3dom.css
            └── x3dom-full.js

            1 directory, 12 files

当我使用“材料”标签时,该框会出现,而不是来自本地文件的图像。我正在使用最新版本的 x3d - 1.8.1,图像不显示可能是什么问题?

标签: local-storagex3dx3dom

解决方案


原因很简单:X3DOM 使用XMLHttpRequest的不是file://协议(尽管 MDN 另有说明https://developer.mozilla.org/de/docs/Web/API/XMLHttpRequest)。

但是,您可以尝试通过指定完整路径来绕过它:对于 Linux/Mac:

<transform translation = "1.75 0 0">
  <shape>
    <appearance>
      <!--<material diffuseColor = "0 1 1"></material>-->
      <ImageTexture  url="file:///home/bob/x3dom/one.png"></ImageTexture>
    </appearance>
    <box size = "0 4 4"/>
  </shape>
</transform>

对于 Windows:

<transform translation = "1.75 0 0">
  <shape>
    <appearance>
      <!--<material diffuseColor = "0 1 1"></material>-->
      <ImageTexture  url="file://C:/path/to/one.png"></ImageTexture>
    </appearance>
    <box size = "0 4 4"/>
  </shape>
</transform>

此外,在过去,您必须将一些标志传递给浏览器才能使其成为可能,请参阅https://stackoverflow.com/a/30701845/698496How to launch html using Chrome at "--allow-file-access -from-files”模式?

如果您不熟悉运行 Apache 或 IIS,您可以使用简单的 Python 服务器:https ://doc.x3dom.org/gettingStarted/pythonSimpleHTTP/index.html


推荐阅读