Связывание данных в меш-объекте three.js — в процедурно сгенерированном городе

Я пытаюсь создать процедурно сгенерированный город с помощью three.js, который в основном будет состоять из зданий. Требование состоит в том, что при щелчке по зданию (мышью) должна отображаться информация об этом здании (например, название, местоположение и т. д.), например, в виде текстового поля, зависающего рядом с этим зданием.

Я пытался посмотреть, есть ли у объекта сетки three.js (который будет представлять здание) какое-либо свойство «данные», где эта информация может храниться. Это не так.

Любая идея, как эта функциональность может быть достигнута? ТИА.


person A.K    schedule 11.08.2015    source источник


Ответы (2)


Класс Object3D имеет свойство userData, в которое можно безопасно добавлять пользовательские данные.

Поскольку класс Mesh является производным от Object3D, он также обладает этим свойством.

Используйте это так:

mesh.userData.name = "TheName";

три.js р.71

person WestLangley    schedule 11.08.2015
comment
Спасибо за ответ. Это то, что я искал. - person A.K; 11.08.2015

Это по-прежнему JavaScript, поэтому вы можете добавить пользовательский объект в сетку:

var building = new THREE.Mesh( [...] );
building.info = { name: "myHouse", lat: 48.12, lng: 8.54, [...] };

console.log( building.info.name ); //myHouse
person Falk Thiele    schedule 11.08.2015
comment
Спасибо. Попробую. - person A.K; 11.08.2015