2013-07-04 39 views
1

我有一個網格,我按照用戶的要求創建和着色。我使用HTML5顏色選擇器。我正在從colorpicker訪問顏色值,如下所示: var colorChosen = $(「#colorAgent」)。val()//它的值爲:「#ff0080」;三着色網格問題,js

我米去除#使得它作爲十六進制代碼=> colorChosen = 「0xff0080」 當我使用以下代碼來使齧合

變種材料新THREE.MeshBasicMaterial({顏色:colorChosen, wireframe_linewidth :80,vertexColors:THREE.FaceColors,線框: false,opacity:0.8,transparent:true,side:THREE.DoubleSide,visible: true});

它不應用顏色,但如果我從colorChosen變量(即colorChosen = 0xff00)中刪除引號,它將應用顏色。

PLZ告訴如何刪除引號,以便根據所選顏色對網格着色。

謝謝

回答

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

0

它不帶引號的原因是color屬性sh應該是一個整數,而不是一個字符串。 後你到十六進制代碼,你可以將它傳遞給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 }); 
0

,你也可以給這樣的網格的顏色,

var material = new THREE.MeshLambertMaterial({color: 0xffffff, vertexColors: THREE.FaceColors, shading: THREE.FlatShading});