我有一个网格,我根据用户要求创建并着色它。我使用的是HTML5颜色选择器。我从colorpicker访问颜色值如下: var colorChosen = $(“#colorAgent”)。val()//它的值为:“#ff0080”;
我删除#使其成为十六进制代码为=> colorChosen =“0xff0080” 当我使用以下代码制作网格
时var material new THREE.MeshBasicMaterial({color:colorChosen, wireframe_linewidth:80,vertexColors:THREE.FaceColors,wireframe: false,opacity:0.8,transparent:true,side:THREE.DoubleSide,visible: 是的});
它不应用颜色,但如果我从colorChosen变量中删除引号(即colorChosen = 0xff00),它会应用颜色。
Plz告诉如何删除引号,以便根据所选颜色为我的网格着色。
由于
答案 0 :(得分:1)
看看Color.js
。您可以使用许多实用程序。
例如,在之后创建材料时,您可以重置颜色,如下所示:
material.color.setStyle( "#ff0080" );
您可以使用此模式首次正确设置颜色:
var color = new THREE.Color( "#ff0080" );
var hex = color.getHex();
var material = new THREE.MeshBasicMaterial( { color: hex } );
three.js r.58
答案 1 :(得分:0)
它没有引号的原因是color
属性应该是整数,而不是字符串。
在将其转换为十六进制代码后,您可以将其传递给 parseInt(),它返回等效的整数:
colorChosen = 0xff0080;
var material new THREE.MeshBasicMaterial({ color: parseInt(colorChosen) , wireframe_linewidth: 80,vertexColors:THREE.FaceColors, wireframe: false,opacity: 0.8,transparent: true, side: THREE.DoubleSide, visible: true });
答案 2 :(得分:0)
你也可以像这样给出网格的颜色,
var material = new THREE.MeshLambertMaterial({color: 0xffffff, vertexColors: THREE.FaceColors, shading: THREE.FlatShading});