Всем привет! Такая проблема: надо сделать 3D веб-проект. Импортирую объекты из блендера(dae) с помощью collada loader. Такая вещь - нужно установить объекту новые параметры, к примеру цвет. Делаю так, прямо при загрузке:
var collada_loader = new THREE.ColladaLoader();
collada_loader.load(
"resources/3D/objs.dae",
function(collada)
{
obj1 = collada.scene.getChildByName("obj1", true);
obj1.position.set(0, 0, 0);
obj1.material.color.setHex(0x003388);
scene.add(obj1);
obj2 = collada.scene.getChildByName("obj2", true);
obj2.position.set(100, 100, 100);
obj2.material.color.setHex(0x003388);
scene.add(obj2);
obj3 = collada.scene.getChildByName("obj3", true);
obj3.position.set(-100, -100, -100);
obj3.material.color.setHex(0x003388);
scene.add(obj3);
}
);
obj1.material = new THREE.MeshLambertMaterial({color: 0x003388});
Или возможно, я что-то не правильно делаю в принципе. Тогда как динамически менять свойства материала объектов в Three.js? Так, кажись, есть догадки. Вначале бросает undefined потому, что материал(наверное) попросту не установлен. Если сделать:
obj1.material = new THREE.MeshLambertMaterial();
obj1.material.color.setHex(0x003388);
obj_1_geom = collada.dae.geometries["obj_1-mesh"]["mesh"]["geometry3js"];