1
votes

//this method is used to create anchor node

private void addNodeToScene(ArFragment fragment, Anchor anchor, Renderable renderable) { AnchorNode anchorNode = new AnchorNode(anchor); TransformableNode node = new TransformableNode(fragment.getTransformationSystem()); node.setRenderable(renderable); node.setParent(anchorNode); fragment.getArSceneView().getScene().addChild(anchorNode); node.select(); Color color = new Color(); lRenderable = renderable;

     //this using the given method to change color
    //renderable.getMaterial(1).setFloat3("baseColorTint", 1, 1, 0);

}

// I am using color picker for generating r,b,g

objimage.setOnTouchListener(new View.OnTouchListener()

{ @Override

public boolean onTouch(View v, MotionEvent event)

{

if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE)

  {
     if (objimage.getWidth() > event.getX() && event.getX() > 0 && event.getY() > 0 && 

objimage.getHeight() > event.getY())

{

                    bmap = objimage.getDrawingCache();

int pixel = bmap.getPixel((int) event.getX(), (int) event.getY());

                     //getting rbg
                    float r = red(pixel);
                    float b = Color.blue(pixel);
                    float g = Color.green(pixel);

                  if (  lRenderable!=null  )
                    {

                                          //set the rbg but i dont know how to use it properly
                        lRenderable.getMaterial().setFloat3("baseColorTint", new Color( r,  g,  b));

                 }

                }
            }

          return true;
        }
    });
1

1 Answers

0
votes

You can set the color of a renderable as below - essentially this is making a copy of the original renderable and then change its color:

ModelRenderable newColorCopyofRenderable = originalRenderable.makeCopy();
newColorCopyofRenderable.getMaterial().setFloat3("baseColorTint", 
                  new Color(android.graphics.Color.rgb(255,0,0)));
yourAnchroNode.setRenderable(newColorCopyofRenderable);

You can see a working example here - when you touch a node in this app it's colour will change from green to red: https://github.com/mickod/LineView