Muốn trở thành lập trình viên thực tế ảo AR/VR, đừng bỏ qua bài viết này

lập-trình-viên-thực-tế-ảo
Nguồn: Centre for Digital Media

Lĩnh vực thực tế tăng cường Augmented Reality (AR) và thực tế ảo Virtual Reality (VR) vẫn còn ở giai đoạn đầu của quá trình phát triển, và đây chính là thời điểm hoàn hảo để học cách tạo nội dung cho các công nghệ này, đặc biệt đối với lĩnh vực kinh doanh nội thất online đang được định hướng phát triển tại Việt Nam. Thị trường kinh doanh nội thất nói riêng và bán lẻ nói chung sẽ rất cần những chuyên viên lập trình thực tế ảo VR/AR trong tương lai để nâng cao trải nghiệm người dùng lên một tầm cao mới.

Thực ra, các kỹ năng cần thiết để thâm nhập vào lĩnh vực AR và VR khá giống nhau và rào cản để bạn có thể bắt đầu vẫn còn tương đối thấp. Bài viết này sẽ cung cấp cho bạn một cái nhìn tổng quan về cách bắt đầu.

1. Kỹ năng quan trọng nhất bạn cần

Bất kể bạn là người mới bắt đầu lập trình hay là một cựu binh có nhiều năm kinh nghiệm trong lĩnh vực này, các kỹ năng chính mà bạn sẽ cần để trở thành một lập trình viên thực tế ảo AR / VR chính là những kỹ năng trong lĩnh vực 3D. Trên thực tế, nó không khác lắm so với việc phát triển game 3D. Tại sao? Bởi vì AR và VR chuyên tạo ra các thế giới hoặc môi trường nhập vai có thể tương tác ba chiều, giống như trong đời thực.

Vì vậy, tùy thuộc vào mức độ chuyên sâu, bạn có thể phải tìm hiểu những kỹ năng sau:

  • 3D modelling hoặc 3D Scanning
  • 3D game engine
  • Photo và video 360°
  • Bộ công cụ phát triển phần mềm (SDK) 
  • Kỹ năng thiết kế trải nghiệm cho người dùng (UX) trong môi trường 3D.

Những ngôn ngữ lập trình phổ biến để phát triển ứng dụng AR/VR:

  • C#
  • C/C++
  • Java
  • JavaScript
  • Python
  • Swift

Hãy cùng tìm hiểu sâu hơn vào từng chủ đề giúp bạn trở thành lập trình viên AR / VR, và hãy bắt đầu với VR.

2. Phần cứng

AR / VR (và phát triển 3D nói chung) đòi hỏi phần cứng cao cấp. Tuy nhiên, với việc giảm giá liên tục của phần cứng, điều này có thể không phải là một vấn đề lớn như cách đây vài năm.

Nếu chúng ta xem xét các yêu cầu của hai nền tảng VR phổ biến nhất (HTC Vive và Oculus Rift), ta sẽ thấy về cơ bản là chúng giống nhau. Dưới đây là các thông số kỹ thuật phần cứng được đề xuất:

Phần cứngCấu hình đề xuấtCấu hình tối thiểu
Bộ xử lýIntel i5-4590 / AMD Ryzen 5 1500X hoặc cao hơnIntel i3-6100 / AMD Ryzen 3 1200, FX4350 hoặc cao hơn
Card đồ hoạNVIDIA GTX 1060 / AMD Radeon RX 480 hoặc cao hơnNVIDIA GTX 1050 Ti / AMD Radeon RX 470 hoặc cao hơn
Card đồ họa thay thếNVIDIA GTX 970 / AMD Radeon R9 290 hoặc cao hơnNVIDIA GTX 960 4GB / AMD Radeon R9 290 hoặc cao hơn
Bộ nhớ8GB+ RAM8GB+ RAM
Hệ điều hànhWindows 10Windows 10
USB Ports Rift3x USB 3.0 ports, plus 1x USB 2.0 port1x USB 3.0 port, plus 2x USB 2.0 ports
Video Output (Rift)Compatible HDMI 1.3 video outputCompatible HDMI 1.3 video output

Tuỳ thuộc vào từng nhu cầu và từng dự án mà bạn có thể trang bị mới hoặc sử dụng những thiết bị hiện có với cấu hình tối thiểu, điều quan trọng là đầu tư phải phù hợp với ngân sách mà bạn có.

3. Thiết bị thực tế ảo

Có khá nhiều lựa chọn trong đề mục này. Nhưng chúng ta hãy phân loại theo cách phổ biến nhất: phân loại theo mức độ tự do (Degree of Freedom – DOF), cách này đề cập đến độ phức tạp mà đối tượng có thể di chuyển. Chúng ta có hai lựa chọn: ba và sáu DOF.

  • Ba DOF có nghĩa là bạn sẽ có thể tương tác với thế giới ảo theo ba chiều (trong hệ tọa độ X, Y, Z) bằng cách di chuyển đầu của bạn bằng màn hình gắn trên đầu (Head-Mounted-Display – HMD), tuy nhiên, bạn sẽ không thể tiến hoặc lùi.
  • Với sáu DOF, bạn có thể di chuyển tiến / lùi, lên / xuống và trái / phải, vì vậy bạn có thêm ba loại chuyển động. 

Các thiết bị dưới đây hỗ trợ ba DOF:

  • Google carton
  • Google Daydream
  • Samsung Gear VR

Và các thiết bị dưới đây hỗ trợ sáu DOF:

  • HTC Vive
  • Oculus Rift

Tất nhiên, mỗi thiết bị sẽ sử dụng các bộ công cụ phát triển phần mềm SDK, ngôn ngữ lập trình khác nhau và có các ràng buộc khác nhau, nhưng bạn sẽ thấy rằng chúng có một số điểm chung:

  • Các nguyên tắc để thiết kế trải nghiệm Thực tế ảo là như nhau
  • Hầu hết chúng đều tương thích với các bộ điều khiển chuyển động để tương tác với thế giới ảo
  • Thiết bị Ba DOF sử dụng điện thoại thông minh làm màn hình gắn trên đầu
  • Thiết bị Sáu DOF sử dụng Headset gắn với máy tính.

Tại thời điểm này, và tùy thuộc vào những gì bạn muốn thực hiện, bạn có thể muốn thực hiện một số nghiên cứu và chọn một hoặc nhiều thiết bị để bắt đầu. Tất nhiên, bạn có thể làm được nhiều thứ hơn với headset gắn với máy tính, nhưng bạn có thể muốn bắt đầu với một cái gì đó đơn giản hơn và từ từ nâng cao kỹ năng để chuyển từ thiết bị này sang thiết bị khác sau. Các lựa chọn này liên quan trực tiếp đến việc học các công cụ phù hợp cho công việc bạn muốn bắt đầu.

Bây giờ, hãy nói về phần mềm được sử dụng phổ biến nhất để phát triển nội dung VR.

4. Game engine 3D và ngôn ngữ lập trình

Một cuộc khảo sát được công bố trong báo cáo State of the Developer Nation Q1 2017, C # và C / C ++ là ngôn ngữ lập trình được sử dụng nhiều nhất để phát triển AR / VR. Đây không phải là một trùng hợp ngẫu nhiên vì các game engine phổ biến nhất mà bạn sẽ học để sử dụng là:

  • Unity, sử dụng C# làm ngôn ngữ lập trình chính.
  • Unreal Engine, sử dụng C ++ và một ngôn ngữ gọi là Blueprints Visual Scripting.

Rất may là tất cả các thiết bị VR đều có sẵn SDK cho cả hai công cụ, do đó bạn có thể chỉ cần sử dụng một trong số chúng để phát triển ứng dụng AR / VR và có thể ứng dụng cho nhiều thiết bị.

Cả hai game engine này đều sẽ tiêu tốn nhiều thời gian và công sức để học và thành thạo. Thông thường, hầu hết mọi người đều khuyên dùng Unity vì nó dễ học hơn và có sẵn nhiều tài nguyên hơn. Tuy nhiên, Unreal thì mạnh hơn và có thể cung cấp cho bạn khả năng đồ họa tốt hơn.

Một điều nữa cần tính đến là Unity có nhiều phiên bản với các chi phí khác nhau, nhưng phiên bản cá nhân thì được miễn phí sử dụng. 

Unreal được sử dụng miễn phí, nhưng bạn phải bắt đầu trả 5% tiền bản quyền trên tổng doanh thu sản phẩm sau $3.000 USD doanh thu đầu tiên cho mỗi trò chơi mỗi quý.

Bạn nên thử cả hai Game engine này để xem cái nào phù hợp với bạn nhất.

5. Tự thiết kế hoặc tìm các mô hình có sẵn?

Điều đầu tiên bạn cần để phát triển AR / VR là tài sản nghệ thuật, đặc biệt là mô hình 3D. Bạn có hai lựa chọn ở đây: tự làm chúng hoặc sử dụng các mô hình do người khác tạo ra.

Tự làm mô hình 3D là lựa chọn khó khăn nhất, nhưng về lâu dài nó có thể là tốt nhất (và hiệu quả nhất về chi phí). Nếu chọn cách này, bạn sẽ phải học cách sử dụng các chương trình như:

  • Blender
  • Autodesk Maya
  • Autodesk 3ds Max

Một công nghệ có thể giúp bạn tạo các mô hình của riêng mình là quét 3D. Về cơ bản, những thứ được chụp bởi máy quét 3D trong thế giới thực trở thành mô hình 3D ảo. Chúng có thể chưa hoàn hảo, nhưng chúng có thể giúp bạn bắt đầu, và có rất nhiều lựa chọn với các mức giá khác nhau. Một số trong số này là:

  • DAVID SLS2
  • Da Vinci 1.0 AiO
  • Structure Sense (phải có iPad)

Nếu không, bạn có thể tìm các mô hình 3D có sẵn từ những nguồn như:

  • TurboSquid
  • Free3D
  • CGTrader
  • Sketchfab

Tùy chọn này tốt khi bạn bắt đầu và bạn không có kỹ năng, nhưng sớm hay muộn, bạn sẽ phải học thêm để có thể thiết kế được chính xác những gì bạn muốn, vì vậy, nên kết hợp hai tùy chọn khi bạn bắt đầu học làm mô hình của riêng bạn.

Đới với video và hình ảnh 360°, bạn có thể trang bị máy ảnh 360 như RICOH THETA hoặc Samsung Gear 360 (chỉ tương thích với các thiết bị Samsung) để dựng mô hình hoặc sử dụng các trang web như Flickr hay các trang web khác để có hình ảnh và video miễn phí.

Lĩnh vực âm thanh thì tương đối dễ hơn vì không có yêu cầu gì đặc biệt; chúng ta có thể sử dụng các hiệu ứng âm thanh tương tự được sử dụng trong các trò chơi và video truyền thống từ các trang âm thanh miễn phí như FreeSound, và phần mềm ghi và chỉnh sửa âm thanh như Audacity hoặc Adobe Audition.

6. Từ phát triển web đến thực tế ảo

Có thể bạn đã là cựu binh trong việc làm web và đang tự hỏi liệu kiến ​​thức về JavaScript của mình có thể giúp ích được gì không.

Rất may là, WebVR là một tiêu chuẩn mở với JavaScript API cho phép trải nghiệm VR trong trình duyệt web.

Nó hoạt động với hầu hết các thiết bị VR, nhưng bạn sẽ không cần thêm plugin nào cả vì bất kỳ trình duyệt tương thích nào (ngay cả trong điện thoại Android / iOS) cũng có thể chạy được các ứng dụng này. Bạn có thể thử các trình duyệt có hỗ trợ WebVR mới nhất tại WebVR Rocks và tìm thêm thông tin trên trang web Mozilla VR.

Mặc dù kiến ​​thức về thuật ngữ và mô hình 3D vẫn được áp dụng, nhưng nếu bạn biết JavaScript, sẽ là một lựa chọn tốt để bắt đầu với WebVR thay vì SDK VR, Unity hoặc Unreal.

Trong lĩnh vực này, có hai framework đáng để đề cập đến là:

  • A-Frame: là framework để xây dựng trải nghiệm thực tế ảo với HTML và cách tiếp cận Hệ thống thực thể-thành phần. Nó được phát triển bởi nhóm Mozilla VR và cung cấp một trong những phương thức mạnh nhất để phát triển nội dung WebVR.
  • React VR: Một framework mới được Facebook phát triển dựa trên React và React Native. Nó cho phép bạn xây dựng các trang web VR và trải nghiệm 360 tương tác bằng cách sử dụng cùng phương pháp tiếp cận thành phần khai báo so với React.

Vì cả hai đều dựa trên Three.js, thư viện Javascript phổ biến nhất để sử dụng đồ họa 3D trong trình duyệt web, kiến ​​thức về thư viện này sẽ cung cấp cho bạn một nền tảng vững chắc.

Unity có tùy chọn viết tập lệnh bằng ngôn ngữ tương tự JavaScript có tên là UnityScript, nhưng nó không giống với JavaScript mà bạn sẽ sử dụng để phát triển cho web và C#(ngôn ngữ được đề xuất cho Unity).

7. Còn AR thì sao?

Chúng ta đã tập trung nói về thực tế ảo VR, nhưng thực tế tăng cường AR là một khái niệm khác.

Thực tế ảo VR tạo ra một môi trường ảo và nhập vai để thay thế thế giới thực. Thực tế tăng cường AR đúng như tên gọi của nó là thêm các lớp dữ liệu vào thế giới thực thay vì thay thế hoàn toàn bằng thế giới ảo. 

Ví dụ, nó có thể dịch các từ bạn nhìn trên màn hình qua ngôn ngữ khác; hoặc nó có thể khiến quái vật xuất hiện trên màn hình khi bạn để màn hình tiến gần đến một điểm nào đó. Ngược lại, Thực tế ảo có thể đưa bạn đến một quốc gia khác hoặc một vùng đất đầy quái vật.

Khi bạn kết hợp cả hai, bạn sẽ có được cái gọi là thực tế hỗn hợp (Mix Reality – MR), nơi bạn tương tác với cả môi trường vật lý và môi trường ảo.

Tuy nhiên, từ quan điểm của người phát triển ứng dụng, VR và AR khá giống nhau. Trên thực tế, bạn có thể sử dụng Unity và Unreal (với sự trợ giúp của một số plugin) để phát triển nội dung AR. Ví dụ: một ứng dụng AR đơn giản sẽ nhận ra một đối tượng và đưa ra mô hình 3D mà bạn có thể thao tác như thể nó là thật, do đó, các kỹ năng cần thiết cho VR cũng được áp dụng cho AR.

Một trong những công cụ phổ biến nhất để phát triển AR là Vuforia, có sẵn cho Unity, Android và iOS, cung cấp rất nhiều tính năng và hỗ trợ cho nhiều thiết bị, bao gồm cả điện thoại Tango.

Nói về các thiết bị, AR có thể được sử dụng với màn hình gắn trên đầu, nhưng cũng có thể sử dụng với các thiết bị khác như điện thoại thông minh, hoặc kính đặc biệt như Microsoft HoloLens.

8. Giao diện người dùng (UI) / Trải nghiệm người dùng (UX)

Ngành công nghiệp AR / VR còn mới và do đó chưa có nhiều bài học thực tiễn tốt nhất để phát triển loại trải nghiệm này, nhưng chúng ta nên chấp nhận rằng chúng khác với các ứng dụng 2D truyền thống. Ví dụ, làm thế nào để xử lý tín hiệu đầu vào? Bàn phím trong thế giới ảo có thể không phải là lựa chọn tốt nhất cho tín hiệu đầu vào trong một số tình huống.

Mặt khác, một trong những vấn đề lớn nhất về VR là môi trường giả lập 3D tạo nên hiệu ứng chóng mặt như say tàu xe. Mọi người có thể bị chóng mặt/choáng khi phải tới lui, di chuyển không tự nhiên và không khớp giữa các tín hiệu chuyển động vật lý và thị giác, hoặc tương tác với những người khác trong môi trường ảo.

Thiết kế giao diện và trải nghiệm người dùng là một lĩnh vực mới cần được học hỏi và trau dồi kỹ năng lẫn kinh nghiệm để có thể đưa ra những ứng dụng thực tế tốt hơn cho người dùng.

9. Tóm lại, các bước để trở thành nhà phát triển AR / VR là gì?

Xác định nền tảng của bạn. Quyết định nên nhắm mục tiêu thiết bị nào, nền tảng nào (di động, máy tính để bàn, web) và search engine / SDK / framework nào sẽ sử dụng.

Học các kỹ năng. Tìm hiểu về thuật ngữ, mô hình 3D, ngôn ngữ của công cụ / SDK / khung đó, UI / UX cho AR / VR.

Thực hiện một dự án nhỏ. Mặc dù một số lượng lớn những ứng dụng AR / VR là các trò chơi, có rất nhiều lĩnh vực có thể được áp dụng như giáo dục, trực quan hóa dữ liệu, trải nghiệm 360° cho nội thất. Điều quan trọng ở đây chính là luyện tập và tích lũy kinh nghiệm.

Tham gia và tham gia vào cộng đồng VR. Tham gia các diễn đàn / trò chuyện, nói chuyện với các lập trình viên khác, đặt câu hỏi và đóng góp ý kiến vào cộng đồng.

10. Các khoá học tham khảo miễn phí:

(Theo https://www.oculus.com/, https://www.techrepublic.com/, https://pusher.com/)


Phong là người ủng hộ nhiệt tình cho Digital Media và E-learning. Phong tốt nghiệp bằng Master Chuyên ngành Digital Media của Đại học UBC, Canada.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top