【问题标题】:Custom texture while rendering plane in ARCore - Android在 ARCore 中渲染平面时自定义纹理 - Android
【发布时间】:2018-07-13 08:53:38
【问题描述】:

检测到平面后,ArFragment 会在您可以点击和放置 3d 对象的表面上渲染白点。 从 PlaneRenderer 类我们可以隐藏默认纹理。

ArFragment arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment);
arFragment.getArSceneView().getPlaneRenderer().setVisible(false);

但我不想隐藏我想添加我的自定义纹理。我找不到任何设置此属性的文档。

【问题讨论】:

    标签: android arcore


    【解决方案1】:

    您可以在平面渲染器使用的材质上设置纹理。

    例如,如果您在资源中有一个 png 用于名为“trigrid.png”的纹理:

    setPlaneTexture("trigrid.png");

      /**
       * Sets the plane renderer texture.
       * @param texturePath - Path to texture to use in the assets directory.
       */
      private void setPlaneTexture(String texturePath) {
    
        Texture.Sampler sampler = Texture.Sampler.builder()
                .setMinFilter(Texture.Sampler.MinFilter.LINEAR_MIPMAP_LINEAR)
                .setMagFilter(Texture.Sampler.MagFilter.LINEAR)
                .setWrapModeR(Texture.Sampler.WrapMode.REPEAT)
                .setWrapModeS(Texture.Sampler.WrapMode.REPEAT)
                .setWrapModeT(Texture.Sampler.WrapMode.REPEAT)
                .build();
    
        Texture.builder().setSource(() -> getAssets().open(texturePath))
                .setSampler(sampler)
                .build().thenAccept((texture) -> {
          arSceneView.getPlaneRenderer().getMaterial()
                  .thenAccept((material) -> {
                    material.setTexture(MATERIAL_TEXTURE, texture);
                    material.setFloat(MATERIAL_UV_SCALE,10f);
                  });
        }).exceptionally(ex ->{ Log.e(TAG, "Failed to read an asset file", ex);
        return null;} );
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2013-05-24
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多