Giới thiệu Spatial Mapping trong VR/MR/AR Development

Chào các bạn, hôm nay chúng ta sẽ nói một tính năng khá là mới mẻ và thú vị trong VR/MR/AR Development, đó là Spatial Mapping.

Spatial-Mapping-in-AR-Development

Spatial-Mapping-in-AR-Development

Lời mở đầu

Chúng ta đang ở thời đại mà công nghệ VR/AR/MR phát triển không ngừng, thông qua đó giúp con người liên tục phá vỡ những giới hạn cũ. Một trong số đó là những công nghệ giúp thay đổi trải nghiệm của con người, giúp trực quan (hay còn gọi là visualize) mọi thứ và từ đó giúp việc học tập, nghiên cứu, làm việc hay kể cả vui chơi giải trí cũng trở nên thú vị và sinh động hơn rất nhiều so với trước đây.

Lấy ví dụ về việc học tập:

Ngày trước, việc học tập của học sinh/sinh viên chỉ đơn thuần là lắng nghe giáo viên nói rồi ghi chép lại, hoặc hiện đại hơn thì có máy chiếu / ti vi để trình chiếu slide hay video. Ngày nay, tận dụng những công nghệ hiện đại như VR/AR/MR , học sinh có thể trải nghiệm được 1 không gian ảo thật hơn bao giờ hết. Chỉ bằng một chiếc smartphone có hỗ trợ AR hay đặc biệt hơn là chiếc kính Microsoft Hololens, những giờ học sẽ trở nên thú vị hơn khi học sinh có thể thấy được hình ảnh 3D của những động vật chuyển động trên mặt bàn hoặc mặt sàn, hoặc trải nghiệm những trò chơi người ngoài hành tinh đột nhập vào từ trần nhà của lớp học,… trên những thiết bị đó.

Ngoài ra, ứng dụng của công nghệ VR/AR/MR còn rất nhiều và rộng rãi. Trong bài viết này, mình chỉ đề cập đến 1 công nghệ của công nghệ MR, đó là Spatial Mapping. Tuy là 1 phần nhỏ của MR, nhưng cá nhân mình thấy công nghệ này rất hay và thú vị (trải nghiệm như trong mấy phim khoa học viễn tưởng vậy đó :D), chúng ta cùng tìm hiểu nhé.

Vậy Spatial Mapping là gì?

Spatial Mapping (hay còn gọi là tái cấu trúc 3D – 3D reconstruction) là khả năng tạo ra 1 bản đồ 3D ảo của môi trường xung quanh trên thiết bị. Nó cho phép thiết bị của chúng ta “hiểu” và tương tác được với môi trường thực bên ngoài như là trong thế giới ảo vậy. Spatial Mapping rất hữu ích trong cho việc tránh được va chạm, lập kế hoạch chuyển động, và pha trộn không gian thực với không gian ảo.

Cách setup Spatial Mapping trong Unity

Đầu tiên, để setup được Spatial Mapping, chúng ta cần phải setup trước môi trường để development trên thiết bị hỗ trợ Spatial Mapping, bao gồm:

  • PC cài sẵn Windows 10
  • Unity 2017 trở lên được cài kèm với platform UWP (download ở đây, trong bài viết này mình sẽ dùng bản 2018.3.14f1)
  • Visual Studio 2017 (có cài đặt UWP Development)
  • Package HoloToolkit cho Unity(download ở đây, mình sẽ dùng bản HoloToolkit 2017.4.3.0 – Refresh)
  • Kính Microsoft Hololens 1

 

Microsoft Hololens 1

Microsoft Hololens 1

Microsoft Hololens 1 Hardware

Chi tiết về các công nghệ trên kính Microsoft Hololens 1

Sau khi đã chuẩn bị đầy đủ “đồ nghề” cần thiết, chúng ta cùng bắt đầu làm theo các bước sau nhé.

Bước 1: Mở Unity và switch sang platform Universal Windows Platform như hình dưới.

Bước 2: Import package Holotoolkit đã download vào Unity. Sau khi import xong thì trong Unity sẽ xuất hiện folder Holotoolkit như hình bên dưới.

Holotollkit import folder

Holotollkit import folder

Bước 3: Chúng ta sẽ cùng setup scene trong Unity để sử dụng được các tính năng của Hololens nhé.

Đầu tiên, chúng ta sẽ tạo 1 scene rỗng để sử dụng (ở đây mình dùng lại SampleScene của Unity tạo sẵn lúc đầu). Để sử dụng được và điều khiển được Hololens thì Holotoolkit có viết sẵn 1 menu trên Unity để developer có thể add được những component nào mình mong muốn. Mình sẽ chọn menu Mixed Reality Toolkit\Configure\Apply Mixed Reality Scene Settings.

Apply Mixed Reality Scene Settings

Lúc này sẽ xuất hiện 1 cửa sổ với các lựa chọn , mình chọn Select All và nhấn Apply . Nếu để ý các bạn sẽ thấy có 1 component cuối cùng là Spatial Mapping, chính là component để làm demo này.

Sau khi Apply xong thì chúng ta sẽ có 1 scene gồm những thành phần sau:

Apply Mixed Reality Scene Settings result

Lưu ý: Nếu các bạn bị lỗi MissingReferenceException như hình sau thì chỉ cần tắt Unity mở lại, sau đó tạo scene mới và làm lại từ Bước 2 là được nhé.

MissingReferenceException FocusManager

Bước 4: Kiểm tra và setup config cho Spatial Mapping

Chúng ta cùng chọn vào gameobject Spatial Mapping trong cửa sổ Hierarchy đã được add vào ở Bước 3. Trên cửa sổ Inspector, chúng ta sẽ thấy có 3 component được add vào gameobject này, đó là Spatial Mapping Observer, Spatial Mapping ManagerObject Surface Observer.

Spatial Mapping Manager components

Ở bước này chúng ta chỉ quan tâm đến component Spatial Mapping Manager, cụ thể gồm 2 config sau:

  • Surface Material (đánh dấu số 1 trên hình): đây là material dùng để hiển thị những phần mà Hololens scan và mapping được với thế giới thực. Ở đây Holotoolkit đã chọn mặc định material là Wireframe, một dạng material mà bề mặt được render lên chỉ là dạng lưới (có thể để tạo cảm giác như camera quét không gian trong mấy phim hành động giả tưởng :D).
  • Draw Visual Meshes (đánh dấu số 2 trên hình): đây là 1 cờ để báo cho component Spatial Mapping Manager biết có render cái Surface Material lên hay không. Tức là nếu mình tick vào phần này thì component này sẽ tự động lo luôn phần render không gian lên cho mình, ngược lại thì nó vẫn sẽ mapping không gian đầy đủ nhưng không render lên (để developer có thể tự customize phần render theo ý thích).

Material wireframe sẽ có dạng như thế này

Material Wireframe

Material Wireframe

Bước 5: Bật capability Spatial Perception

Nếu các bạn đã từng viết app nào có liên quan đến mobile thì sẽ có bước setup bật permission hoặc capability cho những chức năng như Camera, Microphone,…, thì trên Hololens chức năng Spatial Mapping cũng cần bật 1 capability để có thể chạy được trên Hololens, đó là Spatial Perception.

Để bật capability này lên, các bạn vào Build Settings, sau đó chọn Player Settings.

Ở cửa sổ Inspector, các bạn chọn vào phần Publishing Settings và kéo xuống mục Capabilities, rồi tìm và tick vào Spatial Perception như hình sau.

Add permission Spatial Perception

Bước 6: Build từ Visual Studio ra Hololens

OK, đến đây các bước setup đã xong, giờ chúng ta chỉ cần nhấn Build và đợi Unity export ra 1 project Visual Studio. Ở đây mình sẽ tạo 1 folder mới tên là UWP và build trực tiếp vào folder đó.

Sau khi build xong, folder mình đã build xong sẽ có những file + folder như sau, mình sẽ mở file .sln, đây là project Visual Studio mà mình sẽ dùng để build ra Hololens.

Các bạn chờ cho Visual Studio loading project xong rồi làm theo những config như bên dưới nhé.

Setting Solution Platforms, Solution ConfigurationDevice như hình dưới

Visual Studio build configuration

Tiếp theo, mở Solution Explorer và chọn Properties

Visual Studio Solution Explorer

Visual Studio Solution Explorer

Visual Studio Solution Properties

Visual Studio Solution Properties

 

Chọn Debugging ở cửa sổ bên trái, nhập địa chỉ IP của Hololens ở phần Machine Name

Input Hololens IP Address

Kết quả

Và đây là thành quả Spatial Mapping sau khi build lên Hololens:

Video demo Spatial Mapping trên kính Hololens 1

Ứng dụng của công nghệ VR/AR/MR còn rất nhiều và sẽ còn phát triển mạnh thêm rất nhiều nữa trong tương lai gần. Trong phạm vi hạn hẹp của bài viết này, mình chỉ đề cập đến Spatial Mapping là 1 phần nhỏ của những gì MR có thể làm. Cùng với sự ra đời của kính Hololens 2 mới đây (tháng 11.2019) thì các trải nghiệm về công nghệ MR sẽ còn hứa hẹn rất nhiều điều mới mẻ và đặc sắc. Chúng ta sẽ cùng khám phá trong một bài viết khác nhé.

Onetech Asia – Công ty công nghệ hàng đầu tại Việt Nam nghiên cứu và phát triển các ứng dụng dựa trên công nghệ VR/AR/MR cũng như AI, Blockchain, Bigdata, iOT

Mẫu liên hệ

Bình luận

Mẫu liên hệ