1

我有一个网格,我根据用户要求创建和着色。我正在使用 HTML5 颜色选择器。我从 colorpicker 访问颜色值如下: var colorChosen = $("#colorAgent").val() // 它给出的值是: "#ff0080" ;

我正在删除 # 使其成为十六进制代码 => colorChosen = "0xff0080" 当我使用以下代码制作网格时

var material new THREE.MeshBasicMaterial({ color:colorChosen , wireframe_linewidth: 80,vertexColors:THREE.FaceColors, 线框: false,opacity: 0.8,transparent: true, side: THREE.DoubleSide, visible: true });

它不应用颜色,但如果我从 colorChosen 变量中删除引号(即 colorChosen = 0xff00),它会应用颜色。

请告诉如何删除引号,以便根据选择的颜色为我的网格着色。

谢谢

4

3 回答 3

1

Color.js。您可以使用许多实用程序。

例如,创建材质,您可以像这样重置颜色:

material.color.setStyle( "#ff0080" );

您也可以在第一次使用此模式时正确设置颜色:

var color = new THREE.Color( "#ff0080" );
var hex = color.getHex();
var material = new THREE.MeshBasicMaterial( { color: hex } );

三.js r.58

于 2013-07-04T12:00:45.353 回答
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 });
于 2013-07-05T09:06:09.303 回答
0

你也可以像这样给网格的颜色,

var material = new THREE.MeshLambertMaterial({color: 0xffffff, vertexColors: THREE.FaceColors, shading: THREE.FlatShading});
于 2017-06-16T09:27:19.163 回答