Skip to content

Commit c898a05

Browse files
mrunal-upadhyayMrunal Upadhyay
andauthored
Add support for consuming sceneform sdk as a dynamic module (#450)
Co-authored-by: Mrunal Upadhyay <[email protected]>
1 parent 0f87938 commit c898a05

File tree

6 files changed

+42
-12
lines changed

6 files changed

+42
-12
lines changed

core/src/main/java/com/google/ar/sceneform/rendering/CameraStream.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ void setupStandardCameraMaterial(Renderer renderer) {
178178
Material.builder()
179179
.setSource(
180180
renderer.getContext(),
181-
RenderingResources.GetSceneformResource(
181+
RenderingResources.GetSceneformSourceResourceUri(
182182
renderer.getContext(),
183183
RenderingResources.Resource.CAMERA_MATERIAL))
184184
.build();
@@ -212,7 +212,7 @@ void setupOcclusionCameraMaterial(Renderer renderer) {
212212
Material.builder()
213213
.setSource(
214214
renderer.getContext(),
215-
RenderingResources.GetSceneformResource(
215+
RenderingResources.GetSceneformSourceResourceUri(
216216
renderer.getContext(),
217217
RenderingResources.Resource.OCCLUSION_CAMERA_MATERIAL))
218218
.build();

core/src/main/java/com/google/ar/sceneform/rendering/MaterialFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public static CompletableFuture<Material> makeOpaqueWithColor(Context context, C
8383
Material.builder()
8484
.setSource(
8585
context,
86-
RenderingResources.GetSceneformResource(
86+
RenderingResources.GetSceneformSourceResourceUri(
8787
context, RenderingResources.Resource.OPAQUE_COLORED_MATERIAL))
8888
.build();
8989

@@ -115,7 +115,7 @@ public static CompletableFuture<Material> makeTransparentWithColor(Context conte
115115
Material.builder()
116116
.setSource(
117117
context,
118-
RenderingResources.GetSceneformResource(
118+
RenderingResources.GetSceneformSourceResourceUri(
119119
context, RenderingResources.Resource.TRANSPARENT_COLORED_MATERIAL))
120120
.build();
121121

@@ -148,7 +148,7 @@ public static CompletableFuture<Material> makeOpaqueWithTexture(
148148
Material.builder()
149149
.setSource(
150150
context,
151-
RenderingResources.GetSceneformResource(
151+
RenderingResources.GetSceneformSourceResourceUri(
152152
context, RenderingResources.Resource.OPAQUE_TEXTURED_MATERIAL))
153153
.build();
154154

@@ -181,7 +181,7 @@ public static CompletableFuture<Material> makeTransparentWithTexture(
181181
Material.builder()
182182
.setSource(
183183
context,
184-
RenderingResources.GetSceneformResource(
184+
RenderingResources.GetSceneformSourceResourceUri(
185185
context, RenderingResources.Resource.TRANSPARENT_TEXTURED_MATERIAL))
186186
.build();
187187

core/src/main/java/com/google/ar/sceneform/rendering/PlaneRenderer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ private void loadShadowMaterial() {
309309
Material.builder()
310310
.setSource(
311311
renderer.getContext(),
312-
RenderingResources.GetSceneformResource(
312+
RenderingResources.GetSceneformSourceResourceUri(
313313
renderer.getContext(), RenderingResources.Resource.PLANE_SHADOW_MATERIAL))
314314
.build()
315315
.thenAccept(
@@ -338,7 +338,7 @@ private void loadPlaneMaterial() {
338338
Texture.builder()
339339
.setSource(
340340
renderer.getContext(),
341-
RenderingResources.GetSceneformResource(
341+
RenderingResources.GetSceneformSourceResourceUri(
342342
renderer.getContext(), RenderingResources.Resource.PLANE))
343343
.setSampler(sampler)
344344
.build();
@@ -347,7 +347,7 @@ private void loadPlaneMaterial() {
347347
Material.builder()
348348
.setSource(
349349
renderer.getContext(),
350-
RenderingResources.GetSceneformResource(
350+
RenderingResources.GetSceneformSourceResourceUri(
351351
renderer.getContext(), RenderingResources.Resource.PLANE_MATERIAL))
352352
.build()
353353
.thenCombine(

core/src/main/java/com/google/ar/sceneform/rendering/RenderingResources.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.google.ar.sceneform.rendering;
22

33
import android.content.Context;
4+
import android.net.Uri;
45

6+
import com.google.ar.sceneform.R;
57
import com.google.ar.sceneform.utilities.LoadHelper;
68

79
final class RenderingResources {
@@ -50,6 +52,31 @@ private static int GetSceneformSourceResource(Context context, Resource resource
5052
return 0;
5153
}
5254

55+
static Uri GetSceneformSourceResourceUri(Context context, Resource resource) {
56+
switch (resource) {
57+
case CAMERA_MATERIAL:
58+
return LoadHelper.resourceToUri(context, R.raw.ar_environment_material_flat);
59+
case OCCLUSION_CAMERA_MATERIAL:
60+
return LoadHelper.resourceToUri(context, R.raw.ar_environment_material_depth);
61+
case OPAQUE_COLORED_MATERIAL:
62+
return LoadHelper.resourceToUri(context, R.raw.sceneform_opaque_colored_material);
63+
case TRANSPARENT_COLORED_MATERIAL:
64+
return LoadHelper.resourceToUri(context, R.raw.sceneform_transparent_colored_material);
65+
case OPAQUE_TEXTURED_MATERIAL:
66+
return LoadHelper.resourceToUri(context, R.raw.sceneform_opaque_textured_material);
67+
case TRANSPARENT_TEXTURED_MATERIAL:
68+
return LoadHelper.resourceToUri(context, R.raw.sceneform_transparent_textured_material);
69+
case PLANE_SHADOW_MATERIAL:
70+
return LoadHelper.resourceToUri(context, R.raw.sceneform_plane_shadow_material);
71+
case PLANE_MATERIAL:
72+
return LoadHelper.resourceToUri(context, R.raw.sceneform_plane_material);
73+
case PLANE:
74+
return LoadHelper.resourceToUri(context, R.drawable.sceneform_plane);
75+
case VIEW_RENDERABLE_MATERIAL:
76+
return LoadHelper.resourceToUri(context, R.raw.sceneform_view_material);
77+
}
78+
return null;
79+
}
5380

5481
private static int GetMaterialFactoryBlazeResource(Resource resource) {return 0;}
5582

core/src/main/java/com/google/ar/sceneform/rendering/ViewRenderable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ public CompletableFuture<ViewRenderable> build() {
442442
CompletableFuture<Void> setSourceFuture = Material.builder()
443443
.setSource(
444444
context,
445-
RenderingResources.GetSceneformResource(
445+
RenderingResources.GetSceneformSourceResourceUri(
446446
context, RenderingResources.Resource.VIEW_RENDERABLE_MATERIAL))
447447
.build()
448448
.thenAccept(

core/src/main/java/com/google/ar/sceneform/utilities/LoadHelper.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,12 @@ public static Uri resourceToUri(Context context, int resID) {
142142
Resources resources = context.getResources();
143143
return new Uri.Builder()
144144
.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
145-
.authority(resources.getResourcePackageName(resID))
145+
.authority(context.getPackageName()) // Look up the resources in the application with its splits loaded
146146
.appendPath(resources.getResourceTypeName(resID))
147-
.appendPath(resources.getResourceEntryName(resID))
147+
.appendPath(String.format("%s:%s",
148+
resources.getResourcePackageName(resID), // Look up the dynamic resource in the split namespace.
149+
resources.getResourceEntryName(resID)
150+
))
148151
.build();
149152
}
150153

0 commit comments

Comments
 (0)