Можно ли добавить или отобразить пользовательскую информацию об области или MESH, которую вы нажимаете на визуализированную модель GLTF?

У меня есть визуализированная модель GLTF с использованием three.js, и когда вы щелкаете по ее части, она выделяет этот бит красным. Что я хотел бы сделать, так это то, что когда пользователь щелкает эту область, он не только выделяет ее красным цветом, но и вызывает модальное отображение информации об этой области. Моя проблема в том, что я понятия не имею, как связать щелкнутую область с данными. Например, если модель была автомобилем, и пользователь щелкнул шину, я хотел бы отобразить некоторую информацию об этой шине.

Что было бы лучшим способом для достижения этого? Будут ли эти пользовательские данные применяться к модели при ее построении? Я не работаю с самой моделью, но могу ее изменить, если нужно, я просто не был уверен, что она работает таким образом?

При просмотре объекта для выбранной MESH я вижу пустой объект UserData, который привел меня к мысли, что пользовательские данные могут быть применены к самой модели перед экспортом.

Любая помощь или руководство будет принята с благодарностью. Спасибо,


person MLWDEV    schedule 25.07.2018    source источник
comment
Мне приходилось делать это раньше, и я экспортировал свою модель в формат obj и назвал каждую часть моей модели. Затем у меня был связанный файл .json, названный так же, как файл obj, для хранения информации. JSON был просто объектом, в котором использовались имена различных именованных частей объекта.   -  person 2pha    schedule 26.07.2018
comment
Любые данные в glTF .extras поля будут доступны в результирующих свойствах .userData объектов three.js.   -  person Don McCurdy    schedule 26.07.2018


Ответы (1)


Некоторые экспортеры позволяют задавать пользовательские поля «userData», но наиболее доступным полем является поле .name данного объекта/сетки, которое обычно получается из имени объекта в программном обеспечении для моделирования. .userData обычно просто используется для хранения состояния выполнения в графе сцены таким образом, чтобы это не мешало встроенным свойствам объектов. .userData также будет сериализован с объектом во время операций toJSON. Я бы начал с проверки имен компонентов моделей, выполнив либо scene.traverse, либо model.traverse( (o)=>console.log(o.name)) , чтобы получить представление о том, какие имена уже есть в модели. .

person manthrax    schedule 25.07.2018