如何在three.js中设置THREE.Points对象的顶点颜色

时间:2017-10-26 15:02:11

标签: three.js

我正在尝试编写一个从网格创建点云的函数。我还想控制那个点云的每个顶点的颜色。到目前为止,我尝试分配几何颜色,但颜色没有更新。

InteractablePointCloud_simug=function(object, editor){

        var signals=editor.signals;

        var vertexSize=0.3;
        var pointMat= new THREE.PointsMaterial({size:vertexSize , vertexColors:THREE.VertexColors});

        var colors=[];
        var colorStep=0.1;

         for (var i = 0; i < object.geometry.vertices.length; i++) {
            colors.push(new 
            THREE.Color(colorStep*i,colorStep*i,colorStep*i));

         };

        //get points from mesh of original object
        var points=new THREE.Points(object.geometry,pointMat);

        //Update colors
        points.geometry.colors=colors;
        points.geometry.colorsNeedUpdate=true;


        updatePosition();

        //Add points object to scene
        editor.addNoneObjectMesh(points);
   }

1 个答案:

答案 0 :(得分:0)

我认为这可能在其他视频卡上可行,但我的似乎并不喜欢。

理论上..如果您的材料颜色是白色..它应该乘以顶点颜色(基本上就像使用顶点颜色),但是由于您没有将黑色指定为颜色,所以这不是问题。

如果您的代码无法在您的计算机上运行(也不能在我的计算机上运行),那么您将不得不使用核子...只需创建一个新的selectedPointsGeometry和一个新的selectedPointsMesh

从原始顶点中获取几个顶点..复制它们..将它们放置在vertices数组中..并运行一个update方法(您必须每次都重新创建geo和mesh。我的PC上,我尝试调用每种更新方法,不得不重新创建)

注意咖啡脚本。 @anchor是容器

  updateSelectedVertices: (vertices) ->
    if @selectedParticles
      @anchor.remove @selectedParticles

    @pointGeometry = new THREE.Geometry()

    @pointGeometry.vertices = vertices

    @selectedParticles = new (THREE.PointCloud)(
      @pointGeometry,
      @selectedPointMaterial
    )
    @pointGeometry.verticesNeedUpdate = true
    @pointGeometry.computeLineDistances()
    @selectedParticles.scale.copy @particles.scale
    @selectedParticles.sortParticles = true
    @anchor.add @selectedParticles

selectedPointMaterial在其他地方定义。只需使用与未选择的点云不同的颜色(和不同的大小)即可。

IE ..对未选择的点云使用黑色和5号,对选定的点云使用黄色和10号。

我的另一个网格称为@particles ..我只需要复制比例尺。 (这是未选择的点云)

现在我选择的点显示为黄色 enter image description here