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
app
củ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
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.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ụcsampledata
.Đừng sao chép các tệp nguồn này vào thư mục
assets
hoặcres
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.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.gradle
và xác định vị trí tạo các tệp*.sfa
và*.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ụ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
*.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.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.gradle
nếu chưa tồn tại:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }
Cập nhật tệp
build.gradle
của ứng dụng để bao gồm một dòngapply plugin
và 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.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.
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:
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
*.mat
Material 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
*.sfa
chưa được tuỳ chỉnh, hãy xoá các tệp*.sfa
và*.sfb
hiện có cũng như mụcsceneform.asset()
trongbuild.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ínhsource
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.
- Hãy chỉ định tệp