3

如何在三个 js 的一个对象中使用dat.gui设置颜色

我想用对话框选择颜色,比如本例中的框 3

这个怎么做?

4

5 回答 5

4

我制作了以下功能以使用选择器颜色更改颜色

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;
    });
}
于 2013-02-02T21:32:12.957 回答
3

实现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);
};
于 2015-10-25T01:55:04.330 回答
3

没有额外对象的简化版本:

var gui = new dat.GUI();

var conf = { color : '#ffae23' };    
gui.addColor(conf, 'color').onChange( function(colorValue) {
    obj.material.color.set(colorValue);
});
于 2018-08-28T11:51:51.860 回答
2

没有必要制作“新的 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);
    });
}
于 2013-04-17T16:06:48.237 回答
0

这个例子http://jaanga.github.com/blode/#jaanga.github.com/Blode/DAT.GUI-User-Controls不够好吗?

于 2013-02-02T21:02:04.823 回答