23. Java 3D API
AR
Sceneform
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
24. How to use
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
app/build.gradle android {}
Java 8
ARCore Sceneform
implementation "com.google.ar.sceneform.ux:sceneform-ux:1.0.0"
app/build.gradle dependencies {}
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
25. How to use
ArFragment
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.google.ar.sceneform.samples.hellosceneform.HelloSceneformActivity">
<fragment android:name="com.google.ar.sceneform.ux.ArFragment"
android:id="@+id/ux_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
ArFragment
activity_ux.xml
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
26. How to use
Renderable
buildscript {
…
dependencies {
…
classpath 'com.google.ar.sceneform:plugin:1.4.0'
}
}
build.gradle
Renderable
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
27. How to use
…
dependencies {
…
implementation 'com.google.ar.sceneform:core:1.4.0'
implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.4.0'
}
apply plugin: 'com.google.ar.sceneform.plugin'
sceneform.asset('sampledata/models/andy.obj',
'default',
'sampledata/models/andy.sfa',
'src/main/res/raw/andy')
build.gradle sampledata
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
28. How to use
ModelRenderable.builder()
.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
29. How to use
Node node = new Node();
node.setParent(arFragment.getArSceneView().getScene());
node.setRenderable(andyRenderable);
ARSceneView Scene
node
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
30. How to use
Sceneform Tools (Beta) plugin Import and Preview 3D Assets
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
32. Manufacturer Model Notes
Asus Zenfone AR
Zenfone ARES
Google Nexus 5X Requires Android 8.0 or later
Nexus 6P Requires Android 8.0 or later
Pixel, Pixel XL
Pixel 2, Pixel 2 XL
HMD Global Nokia 6 (2018) Also known as Nokia 6.1
Nokia 7 Plus
Nokia 8 Requires Android 8.0 or later
Nokia 8 Sirocco
Huawei Honor 10
nova 3, nova 3i
P20, P20 Pro
Porsche Design Mate RS
Supported Devices (Android)
Manufacturer Model Notes
Samsung Galaxy S8, Galaxy S8+
Galaxy S9, Galaxy S9+
Sony Xperia XZ Premium Requires Android 8.0 or later
Xperia XZ1, Xperia XZ1
Compact
Requires Android 8.0 or later
Vivo NEX A
NEX S
Xiaomi Mi 8
Mi 8 SE
Mi Mix 2S
ARCore requires Android 7.0 or later, running on a device that shipped with the Google Play Store.
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
33. Manufacturer Model
Xiaomi Mix 2S
Mi 8
Huawei P20, P20 Pro
Supported Devices (China)
In China, devices do not ship with the Google Play Store. You can install ARCore from one of the following app stores:
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
34. Product Model
iPhone iPhone X
iPhone 8 and 8 Plus
iPhone 7 and 7 Plus
iPhone 6S and 6S Plus
iPhone SE
iPad 12.9-in. iPad Pro (2nd Generation)
12.9-in. iPad Pro (1st Generation)
iPad (6th Generation)
iPad (5th Generation)
Supported Devices(iOS)
ARCore requires an ARKit compatible device running iOS 11.0 or later.
ARCore requires an ARKit compatible device running iOS 11.0 or later.
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
39. Google Chrome Canary
• 2018 6 Chrome Canary WebXR device API WebXR Hit Test API WebAR
• ARCore (ARCore Installed) + Android 8.0 + Chrome Canary(version 70 higher)
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
40. WebXR application development stack
ARCore Service
arcore.apk
Native API
Native App
IBinderInterdace
Core
Process
Web App
[ Web XR device API + WebGL.etc ]
User App
Process Chromium
[Native]
Web
Camera View
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
41. How to implement
xrSession.requestHitTest(origin, direction, frameOfReference)
.then(xrHitResult => {
//
});
XRSession.requestHitTest()
origin direction
frameOfReference
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
42. How to implement
function onXRFrame(t, frame) {
let xrSession = frame.session;
// Level
// onSessionStarted() API
let xrPose = frame.getDevicePose(xrFrameOfRef);
if (xrPose && xrPose.poseModelMatrix) {
// Hit Test
}
}
requestAnimationFrame()
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.
43. How to implement
function onXRFrame(t, frame) {
let xrSession = frame.session;
// Eye Level
// onSessionStarted()
let xrPose = frame.getDevicePose(xrFrameOfRef);
if (xrPose && xrPose.poseModelMatrix) {
// (※)
xrSession.requestHitTest(rayOrigin, rayDirection, xrFrameOfRef)
.then((results) => {
if (results.length) {
//
}
});
}
session.requestAnimationFrame(onXRFrame);
}
Copyright @Hirokazu Egashira a.k.a eegozilla. All right reserved.