如何解决在垂直墙上具有纹理的Sceneform PlaneRenderer
我想用PlaneRenderer在墙上渲染纹理,我的代码是这样的,应用程序立即关闭...任何人都可以说出什么问题了...
public class MainActivity extends AppCompatActivity {
//Explain Data
public ArFragment arFragment;
public Session mArSession;
public Config mArConfig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//arfragment
arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.surfaceview);
//new texture
Texture.Sampler sampler =
Texture.Sampler.builder()
.setMagFilter(Texture.Sampler.MagFilter.LINEAR)
.setMinFilter(Texture.Sampler.MinFilter.LINEAR)
.setWrapMode(Texture.Sampler.WrapMode.REPEAT)
.build();
//Texture build
CompletableFuture<Texture> trigrid = Texture.builder()
.setSource(this,R.drawable.ali)
.setSampler(sampler).build();
//Session
try {
mArSession = new Session(this);
} catch (UnavailableArcoreNotInstalledException e) {
e.printStackTrace();
} catch (UnavailableApkTooOldException e) {
e.printStackTrace();
} catch (UnavailableSdkTooOldException e) {
e.printStackTrace();
} catch (UnavailableDeviceNotCompatibleException e) {
e.printStackTrace();
}
mArConfig = new Config(mArSession);
mArConfig.setPlaneFindingMode(Config.PlaneFindingMode.VERTICAL);
mArConfig.setUpdateMode(Config.UpdateMode.LATEST_CAMERA_IMAGE);
mArSession.configure(mArConfig);
arFragment.getArSceneView().setupSession(mArSession);
arFragment.getArSceneView().getScene().addOnUpdateListener(frameTime -> {
PlaneRenderer planeRenderer = arFragment.getArSceneView().getPlaneRenderer();
planeRenderer.getMaterial().thenAcceptBoth(trigrid,(material,texture) -> {
material.setTexture(PlaneRenderer.MATERIAL_UV_SCALE,texture);
material.setFloat(PlaneRenderer.MATERIAL_SPOTLIGHT_RADIUS,Float.MAX_VALUE);
});
});
}
如果您删除了addonupdatelistener,则该应用程序可以正常运行,但在垂直墙上没有任何显示。我想在墙上显示墙纸或瓷砖,谁能说出此代码的问题所在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。