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

Issue in Coloring mesh in Three,js

本文关键字:网格 问题 js Three      更新时间:2023-09-26

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

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

var material new THREE.MeshBasicMaterial({color:colorChosen,wireframe_linewidth:80,vertexColors:THREE.FaceColors,线框:false,不透明度:0.8,透明:true,侧边:THREE.DoubleSide,可见:true});

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

Plz告诉如何删除引号,以便根据选择的颜色给我的网格上色。

感谢

查看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

它在没有引号的情况下工作的原因是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 });

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

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