如何在三个 js 的一个对象中使用dat.gui设置颜色
我想用对话框选择颜色,比如本例中的框 3
这个怎么做?
我制作了以下功能以使用选择器颜色更改颜色
function cambiarColor( obj )
{
var gui = new dat.GUI();
var Configuracion=function(){
this.color = "#ffae23";
}
var conf = new Configuracion();
var controlador = gui.addColor( conf, 'color');
controlador.onChange( function( colorValue )
{
//the return value by the chooser is like as: #ffff so
//remove the # and replace by 0x
colorValue=colorValue.replace( '#','0x' );
//create a Color
var colorObject = new THREE.Color( colorValue ) ;
//set the color in the object
obj.material.color = colorObject;
});
}
实现Three.js颜色或统一颜色到dat.gui的简单方法:
dat.GUI.prototype.addThreeColor=function(obj,varName){
// threejs & dat.gui have color incompatible formats so we use a dummy data as target :
var dummy={};
// set dummy initial value :
dummy[varName]=obj[varName].getStyle();
return this.addColor(dummy,varName)
.onChange(function( colorValue ){
//set color from result :
obj[varName].setStyle(colorValue);
});
};
dat.GUI.prototype.addThreeUniformColor=function(material,uniformName,label){
return this.addThreeColor(material.uniforms[uniformName],"value").name(label||uniformName);
};
没有额外对象的简化版本:
var gui = new dat.GUI();
var conf = { color : '#ffae23' };
gui.addColor(conf, 'color').onChange( function(colorValue) {
obj.material.color.set(colorValue);
});
没有必要制作“新的 Three.Color”。我不确定这是否是一回事。试试下面的代码。它对我有用。
function cambiarColor( obj )
{
var gui = new dat.GUI();
var Configuracion=function(){
this.color = "#ffae23";
}
var conf = new Configuracion();
var controlador = gui.addColor( conf, 'color');
controlador.onChange( function( colorValue )
{
//the return value by the chooser is like as: #ffff so
//remove the # and replace by 0x
colorValue=colorValue.replace( '#','0x' );
//set the color in the object
obj.material.color.setHex(colorValue);
});
}