У меня есть сетка three.js, загруженная из STL-файла:
var loader = new THREE.STLLoader();
var materialmodel = new THREE.MeshPhongMaterial(
{
color: 0xFF0000,
specular: 0x222222,
shininess: 75
}
);
function model()
{
loader.load( 'models/stl/binary/model.stl', function ( geometry ) {
var meshMaterial = materialmodel;
var model = new THREE.Mesh( geometry, meshMaterial );
model.scale.set( 0.02, 0.02, 0.02 );
model.castShadow = true;
model.receiveShadow = true;
model.geometry.center();
scene.add(model);
render();
} );
}
model();
Когда я вызываю функцию модели на моей странице, модель отображается так, как и ожидалось.
Я хочуиспользуйте dat.gui
в качестве облегченного интерфейса для изменений на лету.
Мой первый эксперимент - изменение цвета модели.
Код, который я использую, таков:
var params = {
modelcolor: 0xff0000, //RED
};
var gui = new dat.GUI();
var folder = gui.addFolder( 'Model Colour' );
folder.addColor( params, 'modelcolor' )
.name('Model Color')
.listen()
.onChange( function() { materialmodel.MeshPhongMaterial.color.set( params.modelcolor); } );
folder.open();
DAT.GUIs Палитра цветов выглядит нормально, и я могу выбрать цвет из палитры, и отобразится новое шестнадцатеричное значение.
Однако сама модель / сетка не обновляется с новым выбранным цветом.
Мне интересно, связано ли это с тем, как я меняю цвет materialmodel.MeshPhongMaterial.color.set( params.modelcolor);
(я пробовал разные способы сделать это без удачи).
У меня естьвидел пост здесь (один из ответов), где они делают это, используя model.material.color.set(params.color)
в своем примере.Мои свойства материала owen определены в переменной с помощью THREE.MeshPhongMaterial .....
Предполагая, что именно здесь я ошибся, как я могу динамически изменять цвет вложенного свойства, скрытого в переменнойкак это?