Как изменить цвет выбранной модели в arcore sceneform ?? я использую палитру цветов - PullRequest
0 голосов
/ 01 марта 2020

// этот метод используется для создания узла привязки

private void addNodeToScene (фрагмент ArFragment, привязка привязки, визуализируемая визуализация) {AnchorNode anchorNode = new AnchorNode (привязка); TransformableNode node = новый TransformableNode (фрагмент.getTransformationSystem ()); node.setRenderable (отображаемый); node.setParent (anchorNode); . Fragment.getArSceneView () getScene () AddChild (anchorNode). node.select (); Цвет цвет = новый цвет (); lRenderable = renderable;

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

}

// Я использую палитру цветов для генерации r, b, g

objimage.setOnTouchListener (new View.OnTouchListener ()

{ @ Override

publi c логическое onTouch (Просмотр v, событие MotionEvent)

{

if (event.getAction () == MotionEvent.ACTION_DOWN || событие. 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 Ответ

0 голосов
/ 02 марта 2020

Вы можете установить цвет рендеринга, как показано ниже - по сути, это делает копию оригинального рендеринга и затем меняет его цвет:

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

Вы можете увидеть рабочий пример здесь - когда вы касаетесь узел в этом приложении, его цвет изменится с зеленого на красный: https://github.com/mickod/LineView

...