Bắt đầu sử dụng Biểu mẫu

Trang này giải thích các khái niệm chính bằng cách khám phá mã trong ứng dụng mẫu Hello Sceneform (Xin chào cảnh báo). Lưu ý:

  • Mẫu này sử dụng Formsform và ARCore.

    Để sử dụng Sceneform mà không cần ARCore, hãy làm theo các bước bên dưới trong khi bỏ qua các yêu cầu về phần phụ thuộc ARCore và quyền CAMERA. Sử dụng SceneView trong bố cục của ứng dụng như mô tả trong phần Tạo cảnh.

  • Ứng dụng mẫu này được viết dưới dạng ứng dụng AR đòi hỏi.

    Để tìm hiểu thêm về các ứng dụng AR (Không bắt buộc)AR bắt buộc, vui lòng xem phần Bật ARCore.

Để bắt đầu sử dụng Sceneform trong dự án, bạn cần:

  1. Nhập trình bổ trợ Sceneform
  2. Định cấu hình tệp build.gradle của dự án
  3. Cập nhật AndroidManifest.xml
  4. Kiểm tra thời gian chạy và tạo chế độ xem cảnh
  5. Tạo quảng cáo có thể kết xuất
  6. Xây dựng bối cảnh

Nhập trình bổ trợ Sceneform vào dự án của bạn

Sau khi được cài đặt, trình bổ trợ Sceneform sẽ cho phép bạn nhập, xem và tạo các thành phần 3D trong SDK Sceneform cho các ứng dụng AR trong Android Studio. Nó yêu cầu Android Studio phiên bản 3.1 trở lên.

Cách cài đặt trình bổ trợ:

  1. Trong Android Studio, hãy mở phần cài đặt Plugins:

    • Windows: Tệp > Cài đặt > Trình bổ trợ > Duyệt qua Kho lưu trữ

    • macOS: Android Studio > Preferences > Trình bổ trợ

  2. Nhấp vào Duyệt qua kho lưu trữ và cài đặt Công cụ tạo biểu mẫu Google (Beta).

Định cấu hình tệp build.gradle của dự án

  1. Đảm bảo rằng project#39;s build.gradle bao gồm kho lưu trữ Maven của Google:

    allprojects {
        repositories {
            google()
            …
    
  2. Hãy cập nhật build.gradle ứng dụng của bạn để thêm phần phụ thuộc ARCore và Sceneform mới nhất, đồng thời đảm bảo rằng các chế độ cài đặt dự án của bạn tương thích với cả hai thư viện.

    android {
        …
        defaultConfig {
            // Sceneform requires minSdkVersion >= 24.
            minSdkVersion 24
            …
        }
        // Sceneform libraries use language constructs from Java 8.
        // Add these compile options if targeting minSdkVersion < 26.
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    
    dependencies {
        …
        // Provides ARCore Session and related resources.
        implementation 'com.google.ar:core:1.15.0'
    
        // Provides ArFragment, and other UX resources.
        implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.15.0'
    
        // Alternatively, use ArSceneView without the UX dependency.
        implementation 'com.google.ar.sceneform:core:1.15.0'
    }
    

Cập nhật AndroidManifest.xml của bạn

Sửa đổi AndroidManifest.xml của bạn để cho biết ứng dụng của bạn sử dụng (AR Không bắt buộc) hoặc cần có quyền truy cập ARCore và CAMERA (AR Bắt buộc):

<!-- Both "AR Optional" and "AR Required" apps require CAMERA permission. -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- Sceneform requires OpenGL ES 3.0 or later. -->
<uses-feature android:glEsVersion="0x00030000" android:required="true" />

<!-- Indicates that app requires ARCore ("AR Required"). Ensures the app is
     visible only in the Google Play Store on devices that support ARCore.
     For "AR Optional" apps remove this line. -->
<uses-feature android:name="android.hardware.camera.ar" />

<application>
    …
    <!-- Indicates that app requires ARCore ("AR Required"). Causes the Google
         Play Store to download and install Google Play Services for AR along
         with the app. For an "AR Optional" app, specify "optional" instead of
         "required".
    -->
    <meta-data android:name="com.google.ar.core" android:value="required" />
</application>

Thực hiện kiểm tra thời gian chạy và tạo chế độ xem cảnh

Cách dễ nhất để bắt đầu sử dụng Sceneform và tạo chế độ xem cảnh là sử dụng ArFragment, có chức năng tự động xử lý việc quản lý phiên ARCore sau khi thực hiện các bước kiểm tra thời gian chạy ARCore cần thiết:

  1. Kiểm tra xem phiên bản tương thích của Google Play Services for AR có được cài đặt hay không, nhắc người dùng cài đặt hoặc cập nhật khi cần thiết

  2. Kiểm tra xem ứng dụng có quyền truy cập vào máy ảnh hay không và yêu cầu người dùng cấp quyền nếu ứng dụng đó chưa được cấp

Nếu ứng dụng của bạn cần yêu cầu thêm quyền hoặc muốn tuỳ chỉnh cách thức và thời điểm tạo phiên AR, bạn có thể:

  • Tạo một lớp con của ArFragment để yêu cầu thêm quyền.

  • Sử dụng hoặc mở rộng trực tiếp ArSceneView. Ứng dụng của bạn phải thực hiện kiểm tra phiên bản ARCore và gọi setupSession() để tạo phiên ARCore theo cách thủ công, như được minh họa trong Solar System sample.

Sau khi bước kiểm tra đạt, ArFragment sẽ tạo:

  1. Một ArSceneView có thể truy cập qua getArSceneView():

    • Hiển thị hình ảnh trong máy ảnh từ phiên hoạt động lên bề mặt

    • Hiển thị ảnh động trải nghiệm người dùng Sceneform tích hợp sẵn, cho người dùng biết cách họ nên di chuyển điện thoại để kích hoạt trải nghiệm AR.

    • Đã phát hiện nội dung nổi bật Planes bằng cách sử dụng PlaneRenderer mặc định

  2. ARCore Session, có thể truy cập qua getSession()

Để sử dụng ArFragment trong ứng dụng, hãy thêm nó vào bố cục của hoạt động, như được minh họa trong activity_ux.xml trong mẫu Hello Sceneform:

<fragment android:name="com.google.ar.sceneform.ux.ArFragment"
    android:id="@+id/ux_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Tạo nội dung hiển thị

Renderable là một mô hình 3D có thể được đặt ở bất kỳ đâu trong cảnh và bao gồm các lưới, vật liệu và hoạ tiết.

Kết xuất có thể được tạo từ:

Ứng dụng mẫu tạo một kết xuất có thể kết xuất từ tệp thành phần andy.obj 3D. Khi tài sản này được nhập, Sceneform plugin sẽ cập nhật app&hl=vi<39;s build.gradle để áp dụng trình bổ trợ và thêm mục sceneform.asset() cho mô hình đã nhập

apply plugin: 'com.google.ar.sceneform.plugin'

sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import.
                'default',                    // 'Material Path' specified during import.
                'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import.
                'src/main/res/raw/andy')      // '.sfb Output Path' specified during import.

Tài nguyên res/raw/andy được dùng để tạo ModelRenderable:

private ModelRenderable andyRenderable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    …

    ModelRenderable.builder()
        .setSource(this, R.raw.andy)
        .build()
        .thenAccept(renderable -> andyRenderable = renderable)
        .exceptionally(
            throwable -> {
            Log.e(TAG, "Unable to load Renderable.", throwable);
            return null;
        });
}

Xây dựng bối cảnh

ARSceneView có một Scene được đính kèm. Cảnh là một cấu trúc dữ liệu giống như cây cối, có chứa Node là các đối tượng ảo cần được kết xuất.

Ở đây, kết xuất "Andy" được đính kèm trực tiếp vào nút Cảnh gốc:

Node node = new Node();
node.setParent(arFragment.getArSceneView().getScene());
node.setRenderable(andyRenderable);

Mỗi nút chứa tất cả thông tin mà Biểu mẫu cần để hiển thị (bao gồm vị trí, hướng và đối tượng có thể kết xuất) cũng như tương tác với nút đó (bao gồm cả hình dạng xung đột và trình nghe sự kiện).

Bạn có thể thêm nút vào các nút khác, tạo thành mối quan hệ mẹ-con. Khi một nút là phần tử con của nút khác, nút đó di chuyển, xoay và chia tỷ lệ với nút mẹ — chẳng hạn như cách cánh tay của bạn di chuyển khi cơ thể di chuyển. Một nút có thể có nhiều phần tử con, nhưng chỉ có một phần tử mẹ, do đó tạo thành một cấu trúc giống như cây cối. Cấu trúc này được gọi là biểu đồ cảnh.

Mỗi khung hình, Sceneform hiển thị biểu đồ cảnh từ góc nhìn của Camera (có hướng dẫn bằng tính năng theo dõi chuyển động ARCore). Ứng dụng của bạn có thể tương tác với cảnh bằng cách lắng nghe các sự kiện chạm và cử chỉ, thực hiện các thử nghiệm nhấn dựa trên các nút và đặt liên kết. Để biết thêm thông tin, hãy xem phần Tạo và tương tác với cảnh.