在 HTML 中,我定义了 3 个旅游路点。但是在加载 JSON sceneStructure 之后,它们被删除了。有趣的是,相机包含 3 个航点条目的数组,但它们都是 nil。看起来它们在场景结构加载期间被删除。
怎么能避免呢?
代码太大,无法在此处复制,因此作为 URL(对不起)。有问题的代码可以在这里找到:
在 HTML 中,我定义了 3 个旅游路点。但是在加载 JSON sceneStructure 之后,它们被删除了。有趣的是,相机包含 3 个航点条目的数组,但它们都是 nil。看起来它们在场景结构加载期间被删除。
怎么能避免呢?
代码太大,无法在此处复制,因此作为 URL(对不起)。有问题的代码可以在这里找到:
根本原因可能与此处相同: 3d.io 的 Waypoints 动画问题
版本 4 中的 aframe-animation-component 有一个重大更改。为避免这种情况,请使用旧版本:
<script src="https://unpkg.com/aframe-animationcomponent@3.2.5/dist/aframe-animation-component.min.js"></script>
您似乎在加载场景的代码中找到了一个边缘案例。加载场景时,将场景结构中的相机 + 游览航路点添加到场景中并使用。
问题是只能有一个活动的相机,问题是什么优先:来自场景或初始 HTML 的相机(和游览航点)。
我们将添加到文档中来解释这一点和行为(场景中的相机优先)。这可以通过不将场景相机添加到 A-Frame 场景中来规避:
io3d.scene.getAframeElementsFromSceneStructure(sceneStructure)
.then(elements => elements.filter(elem => !elem.hasAttribute('camera'))
.then(elements => elements.forEach(el => scene.appendChild(el))
您还在我们的文档中遇到了我们现在正在纠正的问题!
由于相机航点中可能存在多个相同的标题,我们已更改库以使用该方法的附加io3d-uuid
属性goTo
:
<a-entity tour-waypoint="Esszimmer" io3d-uuid="ez" position="-0.0 1.6 -0.0" rotation="0 45.8 0"></a-entity>
<a-entity tour-waypoint="Wohnzimmer" io3d-uuid="wz" position="0.2 1.6 -2.8" rotation="0 152.9 0"></a-entity>
<a-entity tour-waypoint="Arbeitszimmer" io3d-uuid="az" position="-0.9 1.6 6.1" rotation="0 47.9 0"></a-entity>
然后像这样使用它们:
document.getElementById('camera').components.tour.goTo('az')
感谢您的问题和帮助让 3d.io 更好地为大家服务!