这很难理解,我正在使用当前的xml3D.js版本5.2。

我对* BoundingBox()函数感到满意,以简化资产和摄像机的定位。内容已正确加载,打开xml3D资产文件时出现错误。是否有xml3D资产特有的内容?

xml3D内容

以下来自https://github.com/xml3d/xml3d.js/wiki/Using-Assets-and-Models

<body>
<xml3d class="xml3d" view="#defaultView">
    <defs>
      <!-- camera position -->
      <transform id="t_camera" translation="0 0 40" rotation="0 1 0 0"></transform>
      <transform id="m_transform" scale="0.1 0.1 0.1"></transform>
      <transform id="t_Lamp" translation="0 0 -400"></transform>
      <transform id="r_Lamp" rotation="1 0 0 -0.2"></transform>

      <!-- permanent light -->
      <lightshader id="ls_directional" script="urn:xml3d:lightshader:directional">
          <float3 name="intensity">0.6 0.6 0.6</float3>
      </lightshader>
      <transform id="t_directional" rotation="1 0 0 -0.2" />
      <!-- //permanent light -->
    </defs>

    <!-- Our viewpoint from where we see the 3D content -->
    <group id="viewGroup" transform="#t_camera">
        <view id="defaultView"></view>
    </group>

    <!-- permanent light -->
    <group transform="#t_directional">
        <light shader="#ls_directional"></light>
    </group>
    <!-- //permanent light -->

     <!-- our model include -->
    <group transform="#m_transform">
     <model id="xmlmodel" src="ciccio.xml#ciccio"></model>
    </group>
</xml3d>
</body>
<script>
  // attach event to the mesh
document.querySelector("#xmlmodel").addEventListener("click", function() {
    var model = document.getElementById("xmlmodel");
    alert("my center is " + model.getLocalBoundingBox().center().toDOMString());
});
</script>


因此,当我单击模型时,它将运行对getLocalBoundingBox()的指定调用并引发错误:


  getLocalBoundingBox — xml3d.js:15685TypeError:
  this.renderNode.getObjectSpaceBoundingBox不是函数。 (在
  'this.renderNode.getObjectSpaceBoundingBox(bbox)',
  'this.renderNode.getObjectSpaceBoundingBox'未定义)

最佳答案

抱歉,您遇到了麻烦,在最近的更新之一中,似乎有一个漏洞被遗漏了。我已经修复了即将发布的5.2.2补丁,并上传了预览版本供您尝试:xml3d-5.2.2-min.js

如果您打算使用它来定位摄像机,尽管您可能想使用getWorldBoundingBox代替,则由于本地边界框未考虑来自层次结构上层的任何转换(例如,<group transform="#m_transform">因此,您将获得模型本身的边界框,但它可能不在场景中的同一位置。

10-08 04:29