android - 如何更改arcore sceneform中所选模型的颜色?我正在使用颜色选择器
问题描述
//该方法用于创建锚节点
private void addNodeToScene(ArFragment 片段,Anchor 锚,Renderable 可渲染) { AnchorNode anchorNode = new AnchorNode(anchor); TransformableNode 节点 = new TransformableNode(fragment.getTransformationSystem()); node.setRenderable(可渲染);node.setParent(anchorNode); fragment.getArSceneView().getScene().addChild(anchorNode); 节点选择();颜色颜色=新颜色();lRenderable = 可渲染;
//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
public boolean onTouch(View v, MotionEvent 事件)
{
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 像素 = 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;
}
});
解决方案
您可以按如下方式设置可渲染对象的颜色 - 本质上这是制作原始可渲染对象的副本,然后更改其颜色:
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
推荐阅读
- python-3.x - 如何避免每次下载 glove-wiki-gigaword-300 或任何其他词向量包?
- python-3.x - 如何将数据框中的多列从输出转换为excel?
- unit-testing - 在这种情况下如何编写测试?
- html - Blazor - 在页面之间发送多个数据
- android - budtmo docker android 模拟器代理设置未保存在 android 快照中
- flutter - 颤振处理通知点击不适用于所有页面
- python - 将文件中的文本加载到列表中。索引错误
- php - str_getcsv 用日语给出错误的分隔符
- c# - 我正在使用 IdentityServer4,我正在尝试使用访问令牌访问同一服务器上的其他 API 端点,总是收到 401
- swift - 如何在 swift 中为 macos 选择 NSOutlineView 行时设置背景颜色