0

Hướng dẫn làm VR với Unity

Chào các bạn , hôm nay mình sẽ giới thiệu với các bạn một công nghê khá là mới và thú vị đó là VR . Trước tiên ta tìm hiểu VR là cái gì thì nó là viết tắt của từ Virtual Reality có nghĩa là thực tế ảo có nghĩa là khi trải nghiệm nó ta sẽ nhìn thấy một thế giới ảo do những lập trình viên tạo ra . Để trải nghiệm nó cần có cả phần cứng và phần mềm , phần cứng là kính thực tế ảo cái kính này giờ có hai hãng lớn sản xuất là Oclus và Samsung , phần mềm thì là do các lập trình viên hoạ sĩ đồ hoạ tạo ra môi trường ảo . Nói nhiều khó hiểu quá mình sẽ link một video ở đây để các bạn xem cho dễ hình dung : https://www.youtube.com/watch?v=-30WJwF3Onc Các bạn có thể xem rất nhiều demo trên mạng . Nói chung đây là một công nghệ của tương lai và theo nhiều nhất định nó sẽ thay thế thời đại smartphone , nếu bạn chưa thử cảm nhận thì hãy tới một vài siêu thị điện máy lớn để trải nghiệm sự tuyệt vời của nó .

Trong bài này tôi sẽ hướng dẫn cách sử dụng VR trong lập trình với Unity engine . Bài viết này sẽ có nhiều phần và hôm nay tôi chỉ giới thiệu một cách tổng quan .

Giới thiệu qua một tí :

Unity đã giới thiệu họ hỗ trợ tích hợp cho một số thiết bị VR. Hướng dẫn này tập trung vào các thiết bị VR của oculus đặc biệt là bộ Oculus Rift Development 2 (DK2) và phiên bản dành cho người tiêu dùng của Gear VR (một thiết bị dành cho thiết bị Samsung : galaxy S6, S6 edge + , Note 5)

VR Head Mounted Displays (HMDs) sẽ làm việc với Unity ,chẳng hạng như HTC Vive .

Tiếp theo là hướng dẫn làm thế nào để bật VR trong project Unity lên : Trước tiên hãy chắc chắc là bạn đã cài đặt Oculus runtime : https://developer.oculus.com/downloads/ và sử dụng Unity 5.3 hoặc cao hơn nhé .

Để bật VR lên bạn đi theo đường dẫn sau : Edit > Project Settings> Player > Other Settings > Rendering

Bạn hãy tick vào ô "Virtual Reality Supported"

Hoặc chúng ta có thể bật nó lên bằng code trong quá trình chạy như sau :

using UnityEngine;
using UnityEngine.VR;

public class ToggleVR : MonoBehaviour
{
    //Example of toggling VRSettings
    private void Update ()
    {
        //If V is pressed, toggle VRSettings.enabled
        if (Input.GetKeyDown(KeyCode.V))
        {
            VRSettings.enabled = !VRSettings.enabled;
            Debug.Log("Changed VRSettings.enabled to:"+VRSettings.enabled);
        }
    }
}

Ok giờ ta xem thử VR nó nhìn như thế nào trong Unity nào :

Khi mà VR supported được kích hoạt trong Unity Editor và DK2 được kết nối , bạn ấn nút Play sẽ hiển thị view Game trên DK2 cũng như trong trình editor . Điều này cho phép kiểm tra nhanh hơn và lặp lại nhiều lần , không cần phải xây dựng một bản build cho mỗi thay đổi của bạn trong VR . Lập trình viên đã tạo ra nội dung VR trước đó sẽ nhận thấy chế độ xem từng bên được thay thế bằng một hình ảnh duy nhất .

Cần lưu ý rằng không cần tạo thêm một camera cho mỗi mắt , tất cả camera sẽ render trong VR , ngoại trừ những người có một render texture được giao . Để biết thêm về Render texture bạn xem ở đây : http://docs.unity3d.com/Manual/class-RenderTexture.html?_ga=1.227451544.406482034.1456806285

Tối ưu hoá được tự động áp dụng để làm cho cả hai camera trở nên nhẹ hơn chẳng hạn như loại bỏ và rendering bóng đổ một lần cho cả hai mắt . Bạn có thể tìm hiểu thêm tài liệu ở đây : http://docs.unity3d.com/Manual/VROverview.html?_ga=1.155479230.406482034.1456806285 http://docs.unity3d.com/ScriptReference/30_search.html?q=VR&_ga=1.155479230.406482034.1456806285

Phần cứng và phần mềm được khuyến nghị dùng cho phát triển VR trong Unity

Bởi vì VR là công nghệ mới nên tại thời điểm này có một số hạn chế về phần cứng và phần mềm được nêu dưới đây :

- Về phần cứng

Đạt được tốc độ frame yêu cầu cho HMD là điều cần thiết cho một trải nghiệm VR tốt, và điều này phải phù hợp với tỷ lệ làm mới của bảng điều khiển được sử dụng trong HMD. Trên DK2, tốc độ này phải là 75 khung hình / giây và đối với Gear VR, tốc độ này phải là 60 khung hình / giây. Nếu tốc độ khung hình giảm xuống dưới mức này, nó đặc biệt đáng chú ý đối với người dùng, và thường dẫn đến buồn nôn kiểu như bị choáng 😃.

Trong khi đạt được tỷ lệ khung hình nhất quán là điều cần thiết, GPU trong máy tính cá nhân cũng phải có khả năng xuất ra độ phân giải yêu cầu ở tốc độ refresh của bảng điều khiển HMD. Trong trường hợp của DK2, đây là 1920 x 1080 tại 75hz. Lưu ý rằng nếu bạn định phát triển cho Oculus Rift được bán thương mại (CV1), độ phân giải này có độ phân giải 2160 x 1200 ở 90hz, điều này đòi hỏi nhiều hơn DK2.

Nếu bạn đang sử dụng DK2, hãy đảm bảo rằng phần cứng của bạn có khả năng xuất ra độ phân giải yêu cầu theo tỷ lệ refresh cần thiết. Nhiều máy tính xách tay sử dụng một chipset để chuyển đổi giữa các chipset rời và tích hợp, và các chipset này thường không thể xuất ra 1920 x 1080 ở 75hz, dẫn đến một trải nghiệm VR hạn chế và buồn nôn ảo ảo nhìn choáng 😃 . Vui lòng tham khảo tài liệu Oculus, và hướng dẫn sử dụng máy tính Oculus Ready cho phần cứng được đề nghị.

- Về phần mềm

OS X: Vào thời điểm này, có thể phát triển trên OSX 10.9+ với thời gian chạy Oculus 0.0.5 nhưng khi Oculus tạm dừng phát triển cho OS X, chúng tôi khuyên bạn nên sử dụng Windows cho chức năng VR native trong Unity.

Windows: Windows 7, 8, 8.1 và Windows 10 đều tương thích.

Android: Chúng tôi khuyên bạn sử dụng Android OS Lollipop 5.1 trở lên.

Trình điều khiển thẻ đồ họa: Vui lòng đảm bảo các driver của bạn được cập nhật. Các driver cũ có thể không được hỗ trợ. Vui lòng kiểm tra Tiện ích Cấu hình Oculus để xem liệu có vấn đề với driver của bạn hay không.

Oculus Runtime: Để sử dụng hỗ trợ VR trong Unity 5.3, vui lòng sử dụng Oculus Runtime 0.8 hoặc cao hơn.

Project demo về VR : https://www.assetstore.unity3d.com/en/#!/content/51519 các bạn hãy tải về và chạy thử nhé Trong project mẫu trên có các phần sau :

Các scene mẫu chính là:

Intro: Cảnh Giới thiệu để giới thiệu cho người dùng về các tương tác cơ bản Menu: Một cảnh Menu để chọn một minigame để chơi Flyer: Một trò chơi máy bay Maze: trò chơi mê cung Target Gallery: Một hành lang nhắm mục tiêu chụp phòng trưng bày Target Arena: Sân thi đấu 360 độ

Ngoài ra còn có một số cảnh ví dụ, phác thảo các khái niệm cụ thể được nêu chi tiết trong tài liệu:

InteractiveItem: Hiển thị một cách cơ bản để tương tác với các mục trong VR RenderScale: Một minh hoạ về cách RenderScale ảnh hưởng đến chất lượng hình ảnh Reticle: Một ví dụ cơ bản của một reticle trong VR Rotation: Hiển thị cách đối tượng phản ứng với chuyển động của đầu Touchpad: Cách chúng tôi có thể đọc dữ liệu nhập từ bàn di chuột trên Gear VR.

Mặc dù dự án này chủ yếu được sử dụng để minh họa các khái niệm khác nhau trong VR và giúp bạn bắt đầu phát triển VR, nhưng nó cũng đã đưa ra một số ví dụ hữu ích cho bất kỳ nhà phát triển VR nào để tái sử dụng: Camera fading Camera fade transitions Framework for interacting with objects in VR Hold to confirm interaction Reticle movement and scaling Platform-dependent text UI arrows to indicate facing a specific direction Moving UI elements so they always face the camera Tinting UI objects when interacted with

Để chạy project này bạn sẽ cần một Unity 5.3.0, để đáp ứng các tiêu chí phần cứng và phần mềm nêu trên, và có một DK2 hoặc Gear VR với thiết bị điện thoại tương thích để phát triển theo hướng dẫn của nhà sản xuất (DK2 / Gear VR ), Cùng với Oculus Runtime 0.8 hoặc cao hơn.

Oculus Unity Utilities Tùy thuộc vào chức năng yêu cầu trong dự án của bạn, bạn có thể tải xuống Oculus Unity Utilities, có chứa các tập lệnh hữu ích và các prefabs cho các dự án VR, chẳng hạn như có thể thay đổi chính xác IPD (Interpupillary distance - khoảng cách giữa đôi mắt của bạn) và Hình dung giới hạn theo dõi.

bài viết tập trung vào tích hợp Unity VR native, vì vậy vui lòng xem trang web của Oculus để biết thêm thông tin về các tiện ích và tính phù hợp của chúng với dự án của bạn.

Bây giờ bạn đã quen thuộc với các yêu cầu phần cứng và phần mềm cho việc phát triển VR trong Unity và làm thế nào để kích hoạt VR trong dự án của bạn. Để bắt đầu với những điều cơ bản, hãy xem bài viết tiếp theo nhé . Thôi hôm nay mình giới thiệu tới đây thôi , nếu các bạn lập trình unity thấy hứng thú thì bắt tay sắm sửa phần cứng và làm ngay thôi , mình dám chắc là các công ty đang đánh giá rất cao nếu các bạn có hiểu biết hoặc hơn hêt là biết làm VR .


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.