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:
Xác minh rằng thư mục
appcủa dự án có chứa thư mụcsampledata.Để tạo thư mục, hãy nhấp chuột phải vào thư mục
apptrong 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
sampledatalà 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.Sao chép tệp tài sản nguồn 3D của mô hình (
*.obj,*.fbxhoặ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ụcsampledata.Đừng sao chép các tệp nguồn này vào thư mục
assetshoặcrescủ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.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;sbuild.gradlevà xác định vị trí tạo các tệp*.sfavà*.sfbtrong 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 defaultthô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
*.sfakhô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ụcsrc/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/vàres/trong ứng dụng của bạn.Tệp ảnh động Nếu bạn đang nhập
*.fbxtệp ảnh động, hãy nhấp vào dấu cộng (+) và thêm từng tệp còn lại.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:
Thêm trình bổ trợ Sceneform gradle vào project#39;s
build.gradlenếu chưa tồn tại:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }Cập nhật tệp
build.gradlecủa ứng dụng để bao gồm một dòngapply pluginvà một mụcsceneform.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.gradletạ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
*.sfahiệ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
*.sfalà 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*.sfathành tệp thành phần nhị phân Cảnh quan (*.sfb).Tệp
*.sfbnà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.
Mở
*.sfatrong cửa sổ văn bản và*.sfbtrong 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
*.sfabằ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:
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).Á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:
- Hãy chỉ định tệp
*.matMaterial tuỳ chỉnh trong quá trình nhập.
Để cập nhật một thành phần đã nhập trước đó:
Nếu nội dung
*.sfachưa được tuỳ chỉnh, hãy xoá các tệp*.sfavà*.sfbhiện có cũng như mụcsceneform.asset()trongbuild.gradlecủ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
*.sfamà bạn đã tạo, hãy mở tệp*.sfavà thay đổi thuộc tínhsourcethành đường dẫn đến tệp*.mattài liệu tuỳ chỉnh, sau đó điều chỉnh theo cách thủ công các thuộc tính*.sfavà thông số material cho phù hợp với tài liệu tuỳ chỉnh của bạn.
- Hãy chỉ định tệp

