在三,js中着色网格中的问题

时间:2013-07-04 06:22:01

标签: javascript three.js

我有一个网格,我根据用户要求创建并着色它。我使用的是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告诉如何删除引号,以便根据所选颜色为我的网格着色。

由于

3 个答案:

答案 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});