Nhập và xem trước thành phần 3D

Tìm hiểu cách nhập mô hình 3D, chuyển đổi các mô hình đó sang định dạng Sceneform và xem trước các mô hình đó trong Android Studio.

Nhập một tài sản 3D mới

Formsform hỗ trợ tài sản 3D ở các định dạng sau:

  • OBJ
  • glTF (không hỗ trợ ảnh động)
  • FBX, có hoặc không có ảnh động.

Hãy làm theo các bước sau để nhập một thành phần 3D mới:

  1. Xác minh rằng thư mục app của dự án có chứa thư mục sampledata.

    Để tạo thư mục, hãy nhấp chuột phải vào thư mục app trong cửa sổ Project (Dự án), sau đó chọn New > Sample Data Directory (Mới và gt; Thư mục dữ liệu mẫu).

    Thư mục sampledata là một phần của dự án Android Studio, nhưng nội dung của thư mục này sẽ không được đưa vào tệp APK.

  2. Sao chép tệp tài sản nguồn 3D của mô hình (*.obj, *.fbx hoặc *.gltf), và tất cả phần phụ thuộc của tệp (*.mtl, *.bin, *.png, *.jpg, v.v.) vào thư mục sampledata.

    Đừng sao chép các tệp nguồn này vào thư mục assets hoặc res của dự án vì việc này sẽ khiến các tệp này được đưa vào APK một cách không cần thiết.

  3. Nhấp chuột phải vào thành phần nguồn mô hình 3D và chọn Import Sceneform Asset (Nhập thành phần Sceneform) để bắt đầu quy trình nhập.

    Các giá trị được mục sceneform.asset() sử dụng trong app\39;s build.gradle và xác định vị trí tạo các tệp *.sfa*.sfb trong dự án.

    Nếu đây là lần đầu tiên bạn nhập một mô hình, hãy sử dụng các giá trị mặc định.

    Trường Nội dung mô tả
    Đường dẫn thành phần nguồn Tên tệp của tài sản mô hình 3D OBJ, FBX hoặc glTF để nhập.
    Đường dẫn Material default thông báo cho Sceneforms sử dụng tài liệu mặc định tích hợp sẵn hoặc đường dẫn đến tệp tài liệu tùy chỉnh *.mat.
    Đường dẫn đầu ra .sfa Sử dụng mặc định hoặc chỉ định một đường dẫn khác trong thư mục sampledata.

    Tệp .sfa được tạo nếu thiếu. Bạn có thể sửa đổi các thành phần này để kiểm soát một số khía cạnh của quá trình nhập.

    Điều này đảm bảo rằng *.sfa không thường xuyên được đưa vào APK.

    Đường dẫn đầu ra.sfb Theo mặc định, thư mục src/main/assets/ sẽ được sử dụng, cho phép sử dụng tên tệp tài sản tuỳ ý.

    Nếu tên tệp (không có đuôi tệp) là giá trị nhận dạng tài nguyên hợp lệ (ví dụ: R.raw.filename), thì bạn có thể sử dụng thư mục src/main/res/raw/ nếu muốn.

    Xem phần Tổng quan về tài nguyên ứng dụng để biết thêm thông tin về cách sử dụng thư mục assets/res/ trong ứng dụng của bạn.

    Tệp ảnh động

    Nếu bạn đang nhập *.fbx tệp ảnh động, hãy nhấp vào dấu cộng (+) và thêm từng tệp còn lại.

  4. Nhấp vào Finish (Hoàn tất) để bắt đầu quá trình nhập.

Để nhập nội dung của bạn, trình bổ trợ sẽ làm như sau:

  1. Thêm trình bổ trợ Sceneform gradle vào project#39;s build.gradle nếu chưa tồn tại:

    dependencies {
        …
        classpath 'com.google.ar.sceneform:plugin:1.15.0'
    }
    
  2. Cập nhật tệp build.gradle của ứng dụng để bao gồm một dòng apply plugin và một mục sceneform.asset() cho tài sản mới 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.
    

    Các mục nhập mới này trong app\39;s build.gradle tạo hai tác vụ gradle:

    • createAsset-<asset-name> tạo tệp định nghĩa thành phần Cảnh (*.sfa) nếu tệp chưa tồn tại.

      Tác vụ này sẽ không ghi đè tệp *.sfa hiện có, nghĩa là mọi thao tác sửa đổi bạn thực hiện đối với tệp SFA sau khi nhập sẽ không được ghi đè.

      Tệp *.sfa là tệp văn bản chứa phần mô tả đầy đủ mà người dùng có thể đọc được về các chế độ cài đặt nhập của tài sản. Phần này tham chiếu đến các mô hình và hoạ tiết trong tài sản nguồn của bạn, đồng thời xác định các tài liệu bằng cách cung cấp các tham số material cho các tài liệu dựa trên vật lý của Sceneform.

    • compileAsset-<asset-name> biên dịch tệp *.sfa thành tệp thành phần nhị phân Cảnh quan (*.sfb).

      Tệp *.sfb này được tích hợp vào APK của ứng dụng và được tải trong thời gian chạy để tạo phương thức hiển thị.

    Để biết thêm thông tin, vui lòng xem tài liệu tham khảo về Trình bổ trợ Gradle dạng Gradle.

  3. Mở *.sfa trong cửa sổ văn bản và *.sfb trong cửa sổ Viewer.

Cập nhật tài sản 3D đã nhập trước đó

Khi bạn cập nhật tệp tài sản nguồn OBJ, FBX hoặc glTF đã nhập trước đó (*.obj, *.fbx hoặc *.gltf), mục nhập sceneform.asset() tương ứng trong build.gradle của ứng dụng sẽ khiến trình bổ trợ tự động tạo tệp *.sfb đã cập nhật dựa trên các thông số *.sfa hiện tại.

Để lặp lại các thông số cho một thành phần đã nhập:

  • Sửa đổi tệp văn bản *.sfa bằng cách sử dụng tài liệu tham khảo về định dạng tệp SFA làm hướng dẫn.
  • Lưu các thay đổi. Việc này sẽ khiến tài sản được biên dịch lại và cập nhật tệp *.sfb.
  • Xem trước tài sản đã cập nhật bằng cách nhấp đúp vào tệp *.sfb để mở cửa sổ tài sản Trình xem.

Nếu bạn đang cập nhật một thành phần đã nhập trước đó (bao gồm dữ liệu ảnh động), hãy nhập từng tệp *.fbx đã cập nhật bằng cách sử dụng dấu cộng (+) trong mục Tệp ảnh động của hộp thoại nhập.

Định nghĩa tài sản Gradle

Quá trình nhập sẽ thêm mọi tệp ảnh động *.fbx vào cuối tệp build.gradle.

sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])

Tạo khả năng kết xuất

Sau khi tài sản được biên dịch thành định dạng *.sfb, bạn có thể tạo ModelRenderable và đính kèm tài sản đó vào một nút trong cảnh như sau:

ModelRenderable.builder()
    // To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
    .setSource(this, Uri.parse("andy.sfb"))

    // Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
    //.setSource(this, R.raw.andy)

    .build()
    .thenAccept(renderable -> andyRenderable = renderable)
    .exceptionally(
        throwable -> {
          Log.e(TAG, "Unable to load Renderable.", throwable);
          return null;
    });

Sử dụng vật liệu tùy chỉnh

Tài liệu mặc định của Sceneform' giúp nhà phát triển dễ dàng có được kết quả đẹp mắt. Bạn cũng có thể sử dụng tài liệu tuỳ chỉnh để tuỳ chỉnh sâu giao diện của tài sản.

Cách chỉ định một tài liệu tuỳ chỉnh cho tài sản của bạn:

  1. Tạo tệp định nghĩa material (*.mat) tùy chỉnh bằng cách sử dụng [Custom Material Reference](/sceneform/develop/custom-material làm hướng dẫn).

  2. Áp dụng tài liệu tuỳ chỉnh cho tài sản:

    Khi nhập một thành phần mới:

    Để cập nhật một thành phần đã nhập trước đó:

    • Nếu nội dung *.sfa chưa được tuỳ chỉnh, hãy xoá các tệp *.sfa*.sfb hiện có cũng như mục sceneform.asset() trong build.gradle của ứng dụng, sau đó nhập lại tài sản. Việc này đảm bảo rằng các thuộc tính và thông số material *.sfa được tạo lại sẽ khớp với những thuộc tính và thông số material mà tài liệu tùy chỉnh của bạn hỗ trợ.

    • Để giữ lại mọi nội dung tuỳ chỉnh *.sfa mà bạn đã tạo, hãy mở tệp *.sfa và thay đổi thuộc tính source thành đường dẫn đến tệp *.mat tài liệu tuỳ chỉnh, sau đó điều chỉnh theo cách thủ công các thuộc tính *.sfa và thông số material cho phù hợp với tài liệu tuỳ chỉnh của bạn.