Путевые точки не доступны после загрузки sceneStructure
В HTML я определяю 3 точки маршрута. Но после загрузки JSON sceneStructure они удаляются. Интересно, что камера содержит массив из 3 записей путевых точек, но все они равны нулю. Похоже, они были удалены во время загрузки sceneStructure.
Как этого можно избежать?
Код является большим, чтобы скопировать здесь, следовательно, как URL (извините). Код с проблемой можно найти здесь:
2 ответа
Основная причина, вероятно, та же, что и здесь: проблема анимации путевых точек на 3d.io
Компонент aframe-animation в версии 4 претерпел существенные изменения. Чтобы избежать этого, используйте старую версию:
<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 лучше для всех!