Poly API: Truy xuất tài sản 3D cho ứng dụng VR và AR Android của bạn

Tác Giả: Peter Berry
Ngày Sáng TạO: 14 Lang L: none (month-012) 2021
CậP NhậT Ngày Tháng: 4 Có Thể 2024
Anonim
Poly API: Truy xuất tài sản 3D cho ứng dụng VR và AR Android của bạn - ỨNg DụNg
Poly API: Truy xuất tài sản 3D cho ứng dụng VR và AR Android của bạn - ỨNg DụNg

NộI Dung


Bạn có ý tưởng tuyệt vời cho ứng dụng di động Thực tế ảo (VR) hoặc thực tế tăng cường (AR), nhưng không biết làm thế nào để đưa tầm nhìn của bạn vào cuộc sống?

Trừ khi bạn là một nhà phát triển Android, một người cũng là một nghệ sĩ 3D có kinh nghiệm, sau đó tạo ra tất cả các tài sản cần thiết để mang lại trải nghiệm 360 độ, có thể là một quá trình khó khăn.

Chỉ vì bạn không có thời gian, tài nguyên hoặc kinh nghiệm cần thiết để tạo mô hình 3D, không có nghĩa là bạn có thể xây dựng một ứng dụng di động VR hoặc AR tuyệt vời! Có rất nhiều tài nguyên 3D có sẵn miễn phí trên World Wide Web, cộng với tất cả các API, khung và thư viện bạn cần để tải xuống và hiển thị các tài sản này trong các ứng dụng Android của bạn.

Đọc tiếp: Bây giờ bạn có thể truy cập bất kỳ trang web nào bằng Daydream VR. Ngay cả cái đó


Trong bài viết này, chúng tôi sẽ xem xét Poly, một kho lưu trữ trực tuyến và API đặt hàng ngàn tài sản 3D trong tầm tay bạn. Đến cuối bài viết này, bạn sẽ tạo một ứng dụng lấy tài sản 3D Poly khi chạy và sau đó kết xuất lại bằng thư viện Xử lý phổ biến cho Android.

Hiển thị tài sản 3D bằng Poly

Nếu bạn đã từng say mê phát triển Unity, thì kho lưu trữ Poly tương tự như Unity Asset Store - ngoại trừ mọi thứ trong Poly đều miễn phí!

Nhiều mô hình 3D của 3D, được xuất bản theo giấy phép Creative Commons, do đó, bạn có thể tự do sử dụng, sửa đổi và phối lại các tài sản này, miễn là bạn cung cấp tín dụng phù hợp cho người tạo.

Tất cả các mô hình Poly Poly 3D được thiết kế để tương thích với các nền tảng VR và AR của Google, như Daydream và ARCore, nhưng bạn có thể sử dụng chúng ở bất cứ đâu và dù bạn muốn - có khả năng, thậm chí bạn có thể sử dụng chúng với Apple ARKit!


Khi nói đến việc truy xuất và hiển thị tài sản Poly, bạn có hai tùy chọn. Trước tiên, bạn có thể tải xuống các tài sản về máy tính của mình và sau đó nhập chúng vào Android Studio để chúng gửi cùng với ứng dụng của bạn và đóng góp vào kích thước APK của nó hoặc bạn có thể truy xuất các tài sản này khi chạy bằng Poly API.

API Poly dựa trên nền tảng REST, đa nền tảng cung cấp quyền truy cập theo chương trình, chỉ đọc vào bộ sưu tập mô hình 3D khổng lồ của Poly. Điều này phức tạp hơn so với gói tài sản với APK của bạn, nhưng có một số lợi ích khi truy xuất tài sản Poly khi chạy, đáng chú ý nhất là nó giúp kiểm soát kích thước APK của bạn, điều này có thể ảnh hưởng đến số lượng người tải xuống ứng dụng của bạn.

Bạn cũng có thể sử dụng API Poly để cung cấp cho người dùng của mình nhiều sự lựa chọn hơn, ví dụ: nếu bạn đang phát triển một trò chơi di động thì bạn có thể cho phép người dùng của mình chọn từ một loạt các mô hình nhân vật.

Vì bạn có thể tự do sửa đổi các mô hình Poly, thậm chí bạn có thể cho phép người dùng chỉnh sửa ký tự đã chọn, ví dụ bằng cách thay đổi màu tóc hoặc màu mắt hoặc bằng cách kết hợp nó với các tài sản Poly khác, như vũ khí và áo giáp khác. Theo cách này, API Poly có thể giúp bạn cung cấp một phạm vi tài sản 3D ấn tượng, với nhiều phạm vi để cá nhân hóa trải nghiệm - và tất cả cho công việc tương đối ít. Người dùng của bạn sẽ bị thuyết phục rằng bạn đã dành rất nhiều thời gian, chế tạo tỉ mỉ tất cả các mô hình 3D này!

Tạo dự án mô hình 3D

Chúng tôi sẽ tạo một ứng dụng lấy một tài sản Poly cụ thể khi ứng dụng được khởi chạy lần đầu tiên và sau đó hiển thị nội dung đó ở chế độ toàn màn hình, theo yêu cầu của người dùng.

Để giúp chúng tôi lấy lại tài sản này, tôi sẽ sử dụng Fuel, một thư viện mạng HTTP cho Kotlin và Android. Bắt đầu bằng cách tạo một dự án mới với các cài đặt bạn chọn, nhưng khi được nhắc chọn tham gia hỗ trợ của Bao gồm Kotlin.

Tất cả các cuộc gọi bạn thực hiện với Poly API phải bao gồm khóa API, được sử dụng để xác định ứng dụng của bạn và thực thi các giới hạn sử dụng. Trong quá trình phát triển và thử nghiệm, bạn sẽ thường sử dụng khóa API không hạn chế, nhưng nếu bạn có bất kỳ kế hoạch nào để phát hành ứng dụng này, thì bạn phải sử dụng khóa API bị hạn chế của Android.

Để tạo khóa bị hạn chế, bạn sẽ cần phải biết chứng chỉ ký tên SHA-1 dự án của bạn, vì vậy hãy để ngay bây giờ hãy lấy thông tin này:

  • Chọn tab Android Studio Cuộn trong Gradle Grad (nơi con trỏ được định vị trong ảnh chụp màn hình sau). Điều này mở ra một dự án Grad Gradle bảng điều khiển.

  • Trong bảng điều khiển các dự án Grad Gradle, hãy nhấp đúp để mở rộng dự án của bạn, gốc, sau đó chọn Nhiệm vụ của Android> Báo cáo ký kết. Android Điều này sẽ mở một bảng điều khiển mới dọc phía dưới cửa sổ Android Studio.
  • Chọn nút ‘Chuyển đổi thực thi tác vụ / chế độ văn bản Nút nút (nơi con trỏ được định vị trong ảnh chụp màn hình sau).

Bảng điều khiển của Run Run bây giờ sẽ cập nhật để hiển thị nhiều thông tin về dự án của bạn, bao gồm cả dấu vân tay SHA-1 của nó.

Tạo tài khoản Google Cloud Platform

Để có được khóa API cần thiết, bạn sẽ cần một tài khoản Google Cloud Platform (GPC).

Nếu bạn không có tài khoản, thì bạn có thể đăng ký dùng thử miễn phí 12 tháng bằng cách truy cập vào Nền tảng đám mây dùng thử miễn phí và làm theo hướng dẫn. Lưu ý rằng cần có thẻ tín dụng hoặc thẻ ghi nợ, nhưng theo trang Câu hỏi thường gặp, mục này chỉ được sử dụng để xác minh danh tính của bạn và bạn sẽ không bị tính phí hoặc thanh toán trong quá trình dùng thử miễn phí.

Nhận khóa API Poly của bạn

Khi bạn đã đăng ký tất cả, bạn có thể kích hoạt API Poly và tạo khóa của mình:

  • Trụ sở chính trên Bảng điều khiển GCP.
  • Chọn biểu tượng được xếp ở góc trên bên trái và chọn API API & Dịch vụ> Bảng điều khiển.
  • Chọn dịch vụ API và dịch vụ.
  • Trong menu bên trái, chọn Khác Khác.
  • Chọn thẻ của Poly Poly API.
  • Nhấp vào nút Bật Bật.
  • Sau một lát, bạn sẽ được đưa đến một màn hình mới; mở menu bên và chọn API & Dịch vụ API> Thông tin xác thực.

  • Trong cửa sổ bật lên tiếp theo, hãy chọn khóa Hạn chế.
  • Đặt cho chìa khóa của bạn một cái tên đặc biệt.
  • Theo các hạn chế của Ứng dụng, ứng dụng, các ứng dụng trên Android
  • Chọn tên Thêm gói và dấu vân tay.
  • Sao chép / dán dấu vân tay dự án của bạn SHA-1 vào trường dấu vân tay của Chứng nhận Đăng ký.
  • Nhập tên gói dự án của bạn (nó xuất hiện trong Bản kê khai của bạn và ở đầu mỗi tệp lớp).
  • Nhấp vào để lưu."

Bây giờ, bạn sẽ được đưa đến màn hình của bạn trong chương trình của bạn trong ứng dụng, trong đó có một danh sách tất cả các khóa API của bạn - bao gồm cả khóa API hỗ trợ Poly mà bạn vừa tạo.

Phụ thuộc dự án: Mở rộng nhiên liệu, P3D và Kotlin

Để truy xuất và hiển thị các tài sản Poly, chúng tôi sẽ cần một bàn tay trợ giúp từ một số thư viện bổ sung:

  • Nhiên liệu. Hiện tại Poly không có bộ công cụ Android chính thức, do đó, bạn sẽ cần phải làm việc trực tiếp với API bằng giao diện REST của nó. Để làm cho quá trình này đơn giản hơn, tôi sẽ sử dụng thư viện mạng Fuel HTTP.
  • Đang xử lý cho Android. Tôi sẽ sử dụng thư viện này Trình kết xuất P3D để hiển thị tài sản Poly.

Mở tệp dự án của bạn build build.gradle và thêm hai thư viện này làm phụ thuộc dự án:

phụ thuộc {tệp thực hiệnTree (bao gồm :, dir: libs) triển khai "org.jetbrains.kotlin: kotlin-stdlib-jre7: $ kotlin_version" triển khai com.android.support:appcompat-v7:27.1.1 // Thêm thư viện Fuel / / hiện thực com.github.kittinunf.fuel: Fuel-android: 1.13.0 // Thêm phần Xử lý cho công cụ Android // hiện thực org.p5android: process-core: 4.0.1}

Để làm cho mã của chúng tôi ngắn gọn hơn, tôi cũng sẽ sử dụng các tiện ích mở rộng Android của Kotlin, vì vậy, hãy để thêm vào plugin này trong khi chúng tôi mở tệp build.gradle:

áp dụng plugin: kotlin-android-extend

Cuối cùng, kể từ khi chúng tôi lấy tài sản từ Internet, ứng dụng của chúng tôi cần có sự cho phép của Internet. Mở Bản kê khai của bạn và thêm vào như sau:

Thêm khóa API của bạn

Mỗi khi ứng dụng của chúng tôi yêu cầu một tài sản từ Poly, nó cần bao gồm khóa API hợp lệ. Tôi sử dụng văn bản giữ chỗ, nhưng bạn phải thay thế trình giữ chỗ này bằng khóa API của riêng bạn nếu ứng dụng sẽ hoạt động.

Tôi cũng thêm một kiểm tra, để ứng dụng sẽ hiển thị cảnh báo nếu bạn quên thay thế văn bản của INS INSERT-YOU-API-KEY.

nhập android.os.Bundle nhập android.support.v7.app.AppCompatActivity class MainActivity: AppCompatActivity () {đối tượng đồng hành {const val APIKey = "INSERT-YOU-API-KEY"} ghi đè lên niềm vui trênCreate (yetInstanceState? super.onCreate (yetInstanceState) setContentView (R.layout.activity_main) // Nếu khóa API bắt đầu bằng hàm INS INSERT ... // if (APIKey.startsWith ("INSERT")) {// sau đó hiển thị mã thông báo sau .// Toast.makeText (cái này, "Bạn chưa cập nhật khóa API", Toast.LENGTH_SHORT) .show ()} khác {... ... ...

Lấy tài sản

Bạn có thể chọn bất kỳ tài sản nào trên trang web Google Poly, nhưng tôi sẽ sử dụng mô hình hành tinh Trái đất này.

Bạn truy xuất một tài sản bằng ID của nó, xuất hiện ở cuối sên URL (được tô sáng trong ảnh chụp màn hình trước đó). Chúng tôi kết hợp ID tài sản này với máy chủ API API, đó là https://poly.googleapis.com/v1.

nhập android.content.Intent nhập android.os.Bundle nhập android.support.v7.app.AppCompatActivity nhập android.widget.Toast nhập com.github.kittinunf.fuel.android.extension.responseJson nhập com.github.k .httpTải xuống nhập com.github.kittinunf.fuel.httpGet nhập kotlinx.android.sy merg.main.activity_main. * nhập java.io.File lớp MainActivity: AppCompatActivity () {đối tượng đồng hành {const val -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ghi đè lên niềm vui trênCreate (yetInstanceState: Bundle?) {Super.onCreate (yetInstanceState) setContent APIKey.startsWith ("INSERT")) {Toast.makeText (này, "Bạn chưa cập nhật khóa API của mình", Toast.LENGTH_SHORT) .show ()} other {

Tiếp theo, chúng ta cần tạo một yêu cầu GET cho URL tài sản, sử dụng phương thức httpGet (). Tôi cũng chỉ định rằng loại phản hồi phải là JSON:

nhập android.content.Intent nhập android.os.Bundle nhập android.support.v7.app.AppCompatActivity nhập android.widget.Toast nhập com.github.kittinunf.fuel.android.extension.responseJson nhập com.github.k .httpTải xuống nhập com.github.kittinunf.fuel.httpGet nhập kotlinx.android.sy merg.main.activity_main. * nhập java.io.File lớp MainActivity: AppCompatActivity () {đối tượng đồng hành {const val -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ghi đè lên niềm vui trênCreate (yetInstanceState: Bundle?) {Super.onCreate (yetInstanceState) setContent APIKey.startsWith ("INSERT")) {Toast.makeText (này, "Bạn chưa cập nhật khóa API của mình", Toast.LENGTH_SHORT) .show ()} khác {// Thực hiện cuộc gọi máy chủ và sau đó truyền dữ liệu bằng cách sử dụng Phương thức listOf Phương thức // // propertyURL.httpGet (listOf ("key" cho APIKey)). AnswerJson {request, hồi đáp, kết quả -> // Làm gì đó với phản hồi // result. Fold ({val as đặt = it.obj ()

Tài sản có thể có một số định dạng, chẳng hạn như OBJ, GLTF và FBX. Chúng ta cần xác định rằng tài sản ở định dạng OBJ.

Trong bước này, tôi cũng lấy tên và URL của tất cả các tệp chúng tôi cần tải xuống,
bao gồm tập tin chính của tài sản ((root root), cộng với bất kỳ tập tin tài liệu và kết cấu liên quan nào

Nếu ứng dụng của chúng tôi không thể truy xuất tài sản một cách chính xác, thì nó sẽ hiển thị một bánh mì nướng thông báo cho người dùng.

nhập android.content.Intent nhập android.os.Bundle nhập android.support.v7.app.AppCompatActivity nhập android.widget.Toast nhập com.github.kittinunf.fuel.android.extension.responseJson nhập com.github.k .httpTải xuống nhập com.github.kittinunf.fuel.httpGet nhập kotlinx.android.sy merg.main.activity_main. * nhập java.io.File lớp MainActivity: AppCompatActivity () {đối tượng đồng hành {const val -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ghi đè lên niềm vui trênCreate (yetInstanceState: Bundle?) {Super.onCreate (yetInstanceState) setContent APIKey.startsWith ("INSERT")) {Toast.makeText (này, "Bạn chưa cập nhật khóa API của mình", Toast.LENGTH_SHORT) .show ()} khác {// Thực hiện yêu cầu GET cho URL tài sản // propertyURL. httpGet (listOf ("key" cho APIKey)). answerJson {request, hồi đáp, kết quả -> // Làm gì đó với phản hồi // result. Fold ({val property = it.obj () var objectURL: String? = null var liệuL LibraryName: String? = null var liệuL LibraryURL: Chuỗi? = null // Kiểm tra định dạng của tài sản, bằng cách sử dụng các định dạng của mảng Mảng mảng // val propertyFormats = property.getJSONArray ("định dạng") // Lặp qua tất cả các định dạng // for (i in 0 cho đến propertyFormats.length ()) { val currentFormat = propertyFormats.getJSONObject (i) // Sử dụng formatType để xác định loại định dạng của tài nguyên này. Nếu định dạng là OBJ, .// if (currentFormat.getString ("formatType") == "OBJ") {//...then lấy tệp 'root' của tài nguyên này, tức là tệp OBJ // objectURL = currentFormat. getJSONObject ("root") .getString ("url") // Lấy tất cả các phụ thuộc của tập tin gốc // MaterialL LibraryName = currentFormat.getJSONArray ("resource") .getJSONObject (0) .getString ("RelPath") ("resource") .getJSONObject (0) .getString ("url") break}} objectURL !!. httpD Download (). Destination {_, _ -> File (filesDir, "globalAsset.obj")} .response {_ , _, result -> result. Fold ({}, {// Nếu bạn không thể định vị hoặc tải xuống tệp OBJ, thì sẽ hiển thị lỗi // Toast.makeText (điều này, "Không thể tải xuống tài nguyên", Toast.LENGTH_SHORT ) .show ()})} liệuL LibraryURL !!. httpD Download (). Destination {_, _ -> Tệp (filesDir, liệuL LibraryName)} .response {_, _, result -> result. Fold ({}, {Toast. makeText (này, "Không thể tải xuống tài nguyên", Toast.LENGTH_SHORT) .show ()})}}, { Toast.makeText (này, "Không thể tải xuống tài nguyên", Toast.LENGTH_SHORT) .show ()})}}}

Tại thời điểm này, nếu bạn cài đặt dự án trên điện thoại thông minh hoặc máy tính bảng Android hoặc Thiết bị ảo Android (AVD), thì tài sản sẽ tải xuống thành công, nhưng ứng dụng đã thắng thực sự hiển thị nó. Hãy để sửa lỗi này ngay bây giờ!

Tạo màn hình thứ hai: Thêm điều hướng

Chúng tôi sẽ hiển thị nội dung ở chế độ toàn màn hình, do đó, hãy để Cập nhật tệp main_activity.xml của chúng tôi để bao gồm một nút mà khi gõ, sẽ khởi chạy Hoạt động toàn màn hình.

Bây giờ, hãy cho phép thêm onClickListener vào cuối tệp MainActivity.kt:

nhập android.content.Intent nhập android.os.Bundle nhập android.support.v7.app.AppCompatActivity nhập android.widget.Toast nhập com.github.kittinunf.fuel.android.extension.responseJson nhập com.github.k .httpTải xuống nhập com.github.kittinunf.fuel.httpGet nhập kotlinx.android.sy merg.main.activity_main. * nhập java.io.File lớp MainActivity: AppCompatActivity () {đối tượng đồng hành {const val -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ghi đè lên niềm vui trênCreate (yetInstanceState: Bundle?) {Super.onCreate (yetInstanceState) setContent APIKey.startsWith ("INSERT")) {Toast.makeText (này, "Bạn chưa cập nhật khóa API của mình", Toast.LENGTH_SHORT) .show ()} khác {propertyURL.httpGet (listOf ("key" thành APIKey). answerJson {request, hồi đáp, kết quả -> result. Fold ({val property = it.obj () var objectURL: String? = null var MaterialL LibraryName: String? = null var liệuL LibraryURL: Str ing? = null val propertyFormats = property.getJSONArray ("định dạng") cho (i trong 0 cho đến propertyFormats.length ()) {val currentFormat = propertyFormats.getJSONObject (i) if (currentFormat.getString ("formatType") ) {objectURL = currentFormat.getJSONObject ("root") .getString ("url") chất liệu ) .getJSONObject (0) .getString ("url") break}} objectURL !!. -> result. Fold ({}, {Toast.makeText (này, "Không thể tải xuống tài nguyên", Toast.LENGTH_SHORT) .show ()})} liệuLLURURL !!. httpD Download (). Destination {_, _ -> Tệp (filesDir, MaterialL LibraryName)} .response {_, _, result -> result. Fold ({}, {Toast.makeText (này, "Không thể tải xuống tài nguyên", Toast.LENGTH_SHORT) .show ()})}}, {Toast.makeText (này, "Không thể tải xuống tài nguyên", Toast.LENGTH_SHORT) .sh ow ()})} // Thực hiện một nút // displayButton.setOnClickListener {val aim = Intent (this, SecondActivity :: class.java) startActivity (aim); }}}

Xây dựng nhà bạt 3D

Bây giờ, hãy để Lừa tạo ra Hoạt động nơi chúng tôi sẽ hiển thị tài sản của mình ở chế độ toàn màn hình:

  • Nhấp chuột vào kiểm soát dự án của bạn Tập tin MainActivity.kt của dự án của bạn và chọn Tập tin mới> Tập tin / lớp của Kotlin
  • Mở trình đơn thả xuống của Kind Kind, và chọn Class Class.
  • Đặt cho lớp này tên là Thứ haiActivity, trực tiếp và sau đó nhấp vào OK OK.

Để vẽ một đối tượng 3D, chúng ta cần một khung vẽ 3D! Tôi sẽ sử dụng trình kết xuất thư viện Xử lý cho Android Sắp xếp thư viện 3D, có nghĩa là mở rộng lớp PApplet, ghi đè phương thức settings () và sau đó chuyển P3D làm đối số cho phương thức fullScreen (). Chúng ta cũng cần tạo một thuộc tính đại diện cho tài sản Poly dưới dạng đối tượng PShape.

private fun displayAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = null ghi đè cài đặt thú vị () {fullScreen (PConstants.P3D)}

Tiếp theo, chúng ta cần khởi tạo đối tượng PShape, bằng cách ghi đè phương thức setup (), gọi phương thức loadShape (), sau đó chuyển đường dẫn tuyệt đối của tệp .obj:

ghi đè thiết lập thú vị () {polyAsset = loadShape (Tệp (filesDir, "globalAsset.obj"). perfectPath)}

Vẽ trên canvas P3D

Để vẽ trên khung vẽ 3D này, chúng ta cần ghi đè phương thức draw ():

ghi đè hình vẽ vẽ vui nhộn () {nền (0) (polyAsset)}}

Theo mặc định, nhiều tài sản được truy xuất từ ​​API Poly nằm ở phía nhỏ hơn, vì vậy nếu bạn chạy mã này ngay bây giờ, thì bạn thậm chí có thể không nhìn thấy tài sản, tùy thuộc vào cấu hình màn hình của bạn. Khi tạo cảnh 3D, bạn sẽ thường tạo một camera tùy chỉnh để người dùng có thể khám phá cảnh và xem tài sản 3D của bạn từ 360 độ đầy đủ. Tuy nhiên, điều này nằm ngoài phạm vi của bài viết này, vì vậy tôi sẽ thay đổi kích thước và vị trí của tài sản bằng tay, để đảm bảo nó phù hợp thoải mái trên màn hình.

Bạn có thể tăng kích thước của tài sản, bằng cách chuyển một giá trị âm cho phương thức scale ():

tỷ lệ (-10f)

Bạn có thể điều chỉnh vị trí của tài sản trong không gian 3D ảo bằng phương thức dịch () và các tọa độ sau:

  • X. Định vị tài sản dọc theo trục ngang.
  • Y. Định vị tài sản dọc theo trục dọc.
  • Z. Đây là trục chiều sâu / chiều cao của độ cao, giúp biến đổi một đối tượng 2D thành đối tượng 3D. Các giá trị dương tạo ra ấn tượng rằng đối tượng đang tiến về phía bạn và các giá trị âm tạo ra ấn tượng rằng đối tượng đang di chuyển ra khỏi bạn.

Lưu ý rằng các phép biến đổi được tích lũy, vì vậy mọi thứ xảy ra sau hàm sẽ tích lũy hiệu ứng.

Tôi sử dụng như sau:

dịch (-50f, -100f, 10f)

Tại đây, mã đã hoàn thành:

ghi đè lên fun draw () {background (0) scale (-10f) dịch (-50f, -100f) // Vẽ nội dung bằng cách gọi phương thức shape () // shape (polyAsset)}}

Tiếp theo, chúng ta cần tạo tệp bố cục tương ứng, trong đó chúng tôi sẽ thêm khung vẽ 3D dưới dạng tiện ích FrameLayout:

  • Nhấp chuột vào kiểm soát dự án của bạn
  • Chọn tập tin tài nguyên Bố cục.
  • Đặt tên cho tệp này là tên Activity Activity, second, và sau đó nhấp vào OK OK.

Bây giờ chúng ta đã có tài sản của chúng tôi, tài khoản của chúng tôi, chúng ta cần phải cho Thứ hai của chúng ta biết về nó! Lật ngược lại tệp SecondActivity.kt, tạo một cá thể PFragment mới và trỏ nó theo hướng của tiện ích Tài sản_view của chúng tôi:

nhập android.os.Bundle nhập android.support.v7.app.AppCompatActivity nhập kotlinx.android.sy merg.main.activity_second. * nhập xử lý.android.PFragment nhập xử lý.core.PApplet nhập xử lý.core.PConstants nhập xử lý. .PShape nhập java.io.File class SecondActivity: AppCompatActivity () {ghi đè lên niềm vui onCreate (yetInstanceState: Bundle?) {Super.onCreate (yetInstanceState) setContentView (R.layout.activity_second canvas3D = object: PApplet () {var polyAsset: PShape? = null ghi đè cài đặt thú vị () {fullScreen (PConstants.P3D)} ghi đè cài đặt vui vẻ () {polyAsset = loadShape (Tệp (filesDir, "globalAsset.obj"). perfectPath)} ghi đè lên tỷ lệ rút thăm vui vẻ () (nền (0) (-10f) dịch hình dạng (-50f, -100f) (polyAsset)}} // Thêm // val propertyView = PFragment (canvas3D) propertyView.setView (property_view, this)}}

Bước cuối cùng, là thêm tính năng Thứ hai vào Bản kê khai của bạn:

//Thêm những điều sau//

Kiểm tra dự án của bạn

Bây giờ chúng tôi đã sẵn sàng để thử nghiệm dự án đã hoàn thành! Cài đặt nó trên thiết bị Android hoặc AVD của bạn và đảm bảo bạn có kết nối Internet đang hoạt động. Ngay khi ứng dụng khởi chạy, nó sẽ tải xuống tài sản và sau đó bạn có thể xem nó bằng cách nhấn nút Hiển thị tài sản trên màn hình.

Bạn có thể tải xuống dự án hoàn chỉnh này từ GitHub.

Gói lại

Trong bài viết này, chúng tôi đã xem xét cách sử dụng API Poly để truy xuất tài sản 3D khi chạy và cách hiển thị nội dung đó bằng thư viện Xử lý cho Android. Bạn có nghĩ rằng API Poly có khả năng giúp phát triển VR và AR có thể tiếp cận được với nhiều người hơn không? Cho chúng tôi biết trong các ý kiến ​​dưới đây!

Liên quan

  • Google sẽ mang các ứng dụng AR đến với hàng trăm triệu triệu thiết bị Android trong năm 2018
  • Google sẽ dạy bạn về AI và học máy miễn phí
  • 15 trò chơi VR tốt nhất cho Google Cardboard
  • 10 ứng dụng VR tốt nhất cho Google Cardboard
  • Google Fuchsia là gì? Đây có phải là Android mới?
  • Google duplex là gì? - tính năng, ngày phát hành và hơn thế nữa
  • Cách tạo ứng dụng VR cho Android chỉ trong 7 phút
  • Tai nghe VR di động - lựa chọn tốt nhất của bạn là gì?

au thông báo bốn tháng trước tại Google I / O 2019, Google Net Hub Max cuối cùng đã được bán. Tính đến hôm nay, nó có ẵn từ Google tore và cá...

au khi được phát hành chỉ hơn một tuần trước, Google Net Hub Max vừa được bán tại Rakuten.com. Thiết bị thường bán lẻ với giá 229 đô la, nhưng bây giờ nó có...

Hãy ChắC ChắN Để ĐọC