17/09/2018, 13:57

GIới thiệu Poly - Thư viện Assets 3D của Google

1. Giới thiệu Google đã xây dựng các nền tảng như ARCore và Daydream để cho phép người dùng bước vào thế giới ảo hoặc đặt những scenes ảo vào trong màn hình điện thoại của họ, đó là một điều thật tuyệt vời. Tuy nhiên, có một vấn đề mà hầu hết các developer gặp phải khi tìm hiểu và làm việc ...

Google Poly

1. Giới thiệu

Google đã xây dựng các nền tảng như ARCore và Daydream để cho phép người dùng bước vào thế giới ảo hoặc đặt những scenes ảo vào trong màn hình điện thoại của họ, đó là một điều thật tuyệt vời. Tuy nhiên, có một vấn đề mà hầu hết các developer gặp phải khi tìm hiểu và làm việc với AR hay VR là các mô mình 3D. Các mô hình này không có sẵn và khó tìm kiếm. Ngoài ra, việc tự tạo ra các mô hình này rất mất công mà không phải ai cũng có thể tạo ra được.

Chính vì vậy, Google đã tạo ra một thư viện mới dành cho những người sáng tạo nội dung VR và AR, gọi là Poly. Poly sẽ là nơi lưu trữ tất cả các objects và scenes 3D mà các developer có thể đưa vào các ứng dụng và game AR hoặc VR của họ.

Google Poly

Cụ thể, Poly API cho phép các developer duyệt qua hàng ngàn đối tượng 3D và các scenes trong thư viện Poly một cách trực trực tiếp và ngay trong môi trường VR mà họ đang phát triển. Bạn có thể tìm kiếm các asset mà bạn cần theo từ khóa, danh mục, định dạng, mức độ phổ biến hoặc ngày upload...

Đối với các developer sử dụng Unity hoặc Unreal Engine, Google cũng đã tạo ra Poly Toolkit - cho phép họ import trực tiếp các đối tượng 3D và các scenes vào dự án.



Poly không phải là nơi duy nhất để các developer tìm thấy các asset dành cho VR và AR. Ví dụ như Unity Asset Store cũng có rất nhiều mô hình 3D cũng như các scripts để di chuyển camera. Một số marketplaces, chẳng hạn như CGTrader, cũng bán các mô hình 3D. Tuy nhiên, mọi thứ trong thư viện Poly là hoàn toàn miễn phí.

APIs and tools

Các API và tool mà Poly cung cấp:

  • Poly API: là một RESTful API cho phép bạn tìm kiếm, download và upload Poly asssets
  • Poly Toolkits: Bộ kit dành cho Unity và Unreal.
  • Poly Plugins: các plugins cho các ứng dụng như Blender, Cinema 4D, Maya, và 3ds Max. Nó cho phép bạn upload trực tiếp asset lên tài khoản Poly mà không cần phải chuyển sang browser.

2. Google Poly trên Android

Google Poly hỗ trợ rất nhiều nền tảng như:

  • Android
  • iOS
  • Unity
  • Ureal
  • Web

Trong bài viết này mình sẽ giới thiệu 1 chút về Poly trên android. Các bạn có thể vào các link ở trên để đọc thêm. Google poly

Prerequisites

  • Android studio
  • Tài khoản google để lấy api key, https://console.developers.google.com/apis/library/poly.googleapis.com/
  • Máy ảo hoặc máy thật để test

Note: Với ví dụ về AR máy phải hỗ trợ AR, kiểm tra máy của bạn có hỗ trợ AR hay không tại đây

Chúng ta bắt đầu với code mẫu của google, sample package. Trong file zip mà các bạn download ở trên, có 2 ví dụ.

  • PolySampleAndroid: ví dụ lấy asset từ poly api và hiển thị.
  • PolySampleARCore: ví dụ này cũng lấy asset từ poly api, tuy nhiên nó kết hợp với AR, detect mặt phẳng và cho phép bạn đặt 1 vài con chim vào mặt phẳng đó

Cách thức hoạt động của ví dụ này khá đơn giản, nó dụng API của Poly để download thông tin của asset về, tuỳ thuộc vào độ phức tạp của asset mà nó sẽ load thêm các thành phần của asset dưới dạng object và import vào ứng dụng. Sau đó kết hợp với ARCore để hiển thị @@ (mình nói qua về flow của nó thôi, mọi người muốn tìm hiểu sâu hơn thì soi code của nó nhé)

Để bắt đầu, bạn cần phải điền API_KEY vào file PolyApi.java

// ....
/**
 * Methods that call the Poly API.
 */
public class PolyApi {
  // IMPORTANT: replace this with your project's API key.
  private static String API_KEY = "*** INSERT YOUR API KEY HERE ***";

  private static String TAG = "PolySample";

  // The API host.
  private static String HOST = "poly.googleapis.com";

// ....

Vậy là xong, tiếp theo bạn chỉ cần nhấn RUN và thử thành quả

Nếu bạn muốn không muốn dùng mô hình con chim thì sao? Rất đơn giản, bạn vào https://poly.google.com, tìm kiếm mô hình mà mình muốn lấy ASSET_ID và cập nhật file HelloArActivity.java

// ....
/**
 * This is a simple example that shows how to create an augmented reality (AR) application using the
 * ARCore API. The application will display any detected planes and will allow the user to tap on a
 * plane to place a 3d model of the Android robot.
 */
public class HelloArActivity extends AppCompatActivity implements GLSurfaceView.Renderer {
  private static final String TAG = HelloArActivity.class.getSimpleName();

  // The asset ID to download and display.
  private static final String ASSET_ID = "6b7Ul6MeLrJ";

  // Scale factor to apply to asset when displaying.
  private static final float ASSET_SCALE = 0.2f;
// ....

Ví dụ với đường link https://poly.google.com/view/6nAcjYnlai8 thì ASSET_ID là 6nAcjYnlai8

Mở rộng

Trên đây, chúng ta sử dụng code mẫu để thử trải nghiệm Poly, tuy nhiên nó vẫn rất sơ sài. Các bạn hoàn toàn có thể load nhiều asset hơn về, kết hợp nó với VRCore để xây dựng một ứng dụng hoàn chỉnh

0