Mục lục:

Thực tế tăng cường Vuforia 7 Phát hiện mặt đất: 8 bước
Thực tế tăng cường Vuforia 7 Phát hiện mặt đất: 8 bước

Video: Thực tế tăng cường Vuforia 7 Phát hiện mặt đất: 8 bước

Video: Thực tế tăng cường Vuforia 7 Phát hiện mặt đất: 8 bước
Video: Giới thiệu thực tế tăng cường AR | Augmented Reality 2024, Tháng bảy
Anonim
Thực tế tăng cường Vuforia 7 Phát hiện mặt đất
Thực tế tăng cường Vuforia 7 Phát hiện mặt đất
Thực tế tăng cường Vuforia 7 Phát hiện mặt đất
Thực tế tăng cường Vuforia 7 Phát hiện mặt đất

SDK thực tế tăng cường của Vuforia cho Unity 3D sử dụng ARCore và ARKit để phát hiện máy bay mặt đất trong AR. Hướng dẫn hôm nay sẽ sử dụng tích hợp gốc của chúng trong Unity để tạo ứng dụng AR cho Android hoặc IOS. Chúng ta sẽ có một chiếc ô tô rơi từ trên trời xuống đất, và cửa sẽ tự động mở khi chúng ta đến gần. Chúng tôi cũng sẽ thực hiện video trong AR. Để làm theo, bạn sẽ cần cài đặt Unity 3D trên máy tính của mình (hoàn toàn miễn phí). Những hướng dẫn này dành cho những người mới bắt đầu hoàn toàn nên chúng tôi sẽ đi qua mọi thứ một cách chi tiết!

Phần tốt nhất về SLAM của Vuforia là số lượng thiết bị IOS và Android mà nó hỗ trợ. Danh sách thiết bị đầy đủ có thể được tìm thấy ở đây:

library.vuforia.com/articles/Solution/grou…

Bước 1: Bắt đầu một dự án mới

Bắt đầu một dự án mới
Bắt đầu một dự án mới

Tải xuống Unity 3D từ đây nếu bạn chưa có:

Đảm bảo cài đặt hỗ trợ cho Vuforia Augmented Reality và Android hoặc IOS tùy thuộc vào thiết bị bạn có.

Mở Unity và bắt đầu một dự án Unity mới, gọi nó là bất cứ thứ gì bạn muốn.

Đầu tiên, hãy lấy ứng dụng ra thiết lập để xây dựng để chúng tôi không quên. Vì vậy, lưu cảnh và gọi nó là "chính".

Đi tới tệp, cài đặt xây dựng và chuyển nền tảng xây dựng của bạn sang Android hoặc IOS. Điều hướng đến cài đặt XR trong cài đặt trình phát và kiểm tra Thực tế tăng cường Vuforia được hỗ trợ.

Nếu của bạn trên Android, bạn sẽ không phải làm bất cứ điều gì khác, nhưng trên IOS, hãy chuyển đến cài đặt khác và đảm bảo nhập một cái gì đó cho số nhận dạng gói của bạn. Sử dụng định dạng "com. YourCompanyName. YourAppName."

Đưa vào bất kỳ thứ gì cho mô tả sử dụng máy ảnh và thay đổi phiên bản xây dựng tối thiểu mục tiêu thành ít nhất là 9.0.

Hãy hoàn thành việc đó và bây giờ hãy thiết lập mọi thứ khác.

Bước 2: Hãy thiết lập Vuforia

Hãy thiết lập Vuforia
Hãy thiết lập Vuforia

Bây giờ chúng ta hãy thiết lập mọi thứ.

Chuyển đến gameobject ở menu trên cùng và nhấp vào ARCamera. Bây giờ xóa camera chính khỏi cảnh của bạn.

Chọn ARCamera và ở bên phải trong thanh tra, nhấp vào Mở Cấu hình Vuforia. Nhấp vào bộ sưu tập tập dữ liệu và bỏ chọn mọi thứ vì chúng tôi không sử dụng bất kỳ mục tiêu hình ảnh nào ở đây.

Nhấp vào trình theo dõi thiết bị và nhấp vào theo dõi tư thế thiết bị. Thay đổi theo dõi từ xoay sang vị trí.

Bây giờ quay trở lại tab đối tượng trò chơi và nhấp vào Vuforia, Ground Plane và Plane finder. Đây là nơi chứa các tập lệnh tìm máy bay mặt đất của chúng ta.

Điều cuối cùng chúng ta cần là giai đoạn mặt đất, vì vậy hãy chuyển đến đối tượng trò chơi một lần nữa ở menu trên cùng và nhấp vào Vuforia, Ground Plane, và chọn Ground Plane Stage. Giờ đây, bất cứ thứ gì mà chúng ta quan tâm đến điều này sẽ hiển thị trong AR.

Bước 3: Thêm tập lệnh mới

Thêm một tập lệnh mới
Thêm một tập lệnh mới
Thêm một tập lệnh mới
Thêm một tập lệnh mới

Hành vi mặc định của phát hiện mặt đất này là đặt một đối tượng mới mỗi khi bạn nhấn vào màn hình. Những gì chúng tôi muốn là chỉ định vị lại đối tượng mỗi khi bạn nhấn vào màn hình. Vì vậy, hãy nhấp chuột phải vào thư mục nội dung của bạn và tạo một tập lệnh C # mới. Gọi nó là "DeployStageOnce" và thay thế mọi thứ bằng mã này:

sử dụng Hệ thống;

sử dụng UnityEngine; sử dụng Vuforia; public class DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; riêng tư PositionalDeviceTracker _deviceTracker; riêng GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage phải được chỉ định"); trở lại; } AnchorStage. SetActive (false); } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (HitTestResult result) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Kiểm tra lần truy cập không hợp lệ hoặc AnchorStage chưa được đặt"); trở lại; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), result); if (anchor! = null) {AnchorStage.transform.parent = anchorr.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (true); } if (_previousAnchor! = null) {Hủy (_previousAnchor); } _previousAnchor = neo; }}

Để đảm bảo tập lệnh này được sử dụng, chúng ta cần gọi hàm OnInteractiveHitTest (), vì vậy hãy quay lại Unity và nhấp vào đối tượng trò chơi công cụ tìm máy bay. Thay đổi chế độ từ Tự động sang Tương tác. Kéo tập lệnh chúng ta vừa tạo vào đối tượng trò chơi công cụ tìm máy bay. Xóa tập lệnh ContentPositioningBehavior. Bạn sẽ thấy một vị trí cho một đối tượng trò chơi trên tập lệnh DeployStageOnce, kéo công cụ tìm máy bay vào đó và tìm tập lệnh này, chọn chức năng OnInteractiveHitTest từ đầu danh sách. Bây giờ hàm của chúng ta sẽ được gọi bất cứ khi nào người dùng nhấp vào màn hình!

Bước 4: Hãy Thêm Xe

Hãy Thêm Xe
Hãy Thêm Xe

Tải xuống mô hình xe hơi 3D miễn phí này từ đây (Đảm bảo tải xuống phiên bản.obj):

www.turbosquid.com/3d-models/max-exterior-…

Ngoài ra, hãy tải xuống âm thanh này vì chúng tôi sẽ phát nó khi ô tô chạm đất:

freesound.org/people/PaulMorek/sounds/1967…

Giải nén cả hai tệp đó và kéo chúng vào thư mục nội dung của bạn.

Nhấp vào ô tô và nhìn sang bên phải, thay đổi Sử dụng Vật liệu nhúng thành Sử dụng Vật liệu bên ngoài (Kế thừa) từ menu thả xuống ở trên cùng. Bây giờ chúng ta sẽ có thể thay đổi màu sắc của tất cả các vật liệu trên xe.

Kéo ô tô lên sân khấu máy bay mặt đất của bạn để biến nó thành một đứa trẻ. Thay đổi tỷ lệ thành.035 trên x, y và z.

Bây giờ đi qua từng đối tượng trò chơi trẻ em ô tô và thay đổi vật liệu của chúng thành bất kỳ màu nào bạn muốn.

Thêm một thành phần cơ thể cứng nhắc vào đối tượng trò chơi gốc của ô tô và cũng thêm một máy va chạm hộp, chia tỷ lệ để nó bao phủ toàn bộ ô tô. Cũng thêm một máy va chạm hình hộp vào vùng mặt đất và điều chỉnh tỷ lệ để nó rộng hơn một vài lần so với vùng mặt đất. Bằng cách này, chúng ta có thể thả chiếc xe từ trên trời xuống và nó sẽ rơi xuống đất bằng cách sử dụng công cụ vật lý được tích hợp sẵn của Unity.

Bước 5: Đưa Xe lên Bầu trời

Đặt xe trên bầu trời
Đặt xe trên bầu trời

Thêm một thành phần nguồn âm thanh vào đối tượng trò chơi gốc của ô tô, kéo âm thanh va chạm ô tô vào vị trí clip âm thanh của nó.

Bây giờ chúng ta cần tạo một kịch bản sẽ đưa xe lên không khi người dùng nhấn vào màn hình và sau đó phát âm thanh va chạm khi xe chạm đất. Vì vậy, nhấp chuột phải vào thư mục nội dung và tạo một tập lệnh C # mới và gọi nó là "CarController."

Thay thế tất cả mã ở đó bằng mã này:

sử dụng System. Collections;

sử dụng System. Collections. Generic; sử dụng UnityEngine; public class CarController: MonoBehaviour {private bool soundPlayed = false; // Cập nhật được gọi một lần cho mỗi khung void Update () {if (! SoundPlayed &&formation.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {biến đổi.localPosition + = new Vector3 (0, 10, 0); biến đổi.eulerAngles + = new Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {trả về WaitForSeconds mới (.2f); GetComponent (). Play (); }}

Thêm chức năng MoveCar vào sự kiện OnInteractiveHitTest như trong hình trên. Bây giờ nó sẽ được gọi khi người dùng nhấp vào màn hình.

Bước 6: Cửa Lambo

Cửa Lambo
Cửa Lambo

Vì vậy, nếu bạn mở rộng đối tượng trò chơi xe hơi và tìm các cánh cửa, bạn sẽ nhận thấy cả hai cánh cửa là một lưới duy nhất. Nếu chúng ta muốn mở cửa, lựa chọn duy nhất của chúng ta sẽ là cửa Lambo mở theo chiều dọc. Để thực hiện công việc này, trước tiên chúng ta cần thay đổi điểm xoay của chúng.

Tạo một đối tượng trò chơi trống rỗng là một đứa trẻ của ô tô. Kéo các cánh cửa vào và biến chúng thành con của đối tượng trò chơi mới này. Di chuyển đối tượng trò chơi chính đến vị trí cần có, bằng bản lề cửa. Bây giờ di chuyển các cửa con trở lại vị trí cũ. Bây giờ khi chúng ta xoay cửa chính, điểm trục đã ở đúng vị trí.

Chúng tôi sẽ tạo một kịch bản mở cửa khi bạn đến gần ô tô nhưng trước khi làm điều đó, chúng tôi cần một cách để "kích hoạt" sự kiện. Thêm một máy va chạm hộp vào đối tượng trò chơi dành cho cha mẹ ở cửa của bạn và mở rộng nó để nó đi qua ô tô một chút theo cả hai hướng. Kiểm tra "isTrigger". Bây giờ hãy thêm một máy va chạm hộp vào máy ảnh chính và chia tỷ lệ nó một cách thích hợp. Cũng kiểm tra "isTrigger". Thêm thành phần Rigid Body vào máy ảnh của bạn và bỏ chọn "useGravity". Khi máy ảnh của bạn được chọn, hãy thay đổi thẻ của nó thành "MainCamera" ở trên cùng của trình kiểm tra.

Thêm một tập lệnh mới có tên "LamboDoorBehavior" và thêm mã bên dưới. Kéo tập lệnh vào cửa chính của bạn.

sử dụng System. Collections;

sử dụng System. Collections. Generic; sử dụng UnityEngine; public class LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; float riêng mong muốnAngle = 0; // Cập nhật được gọi một lần cho mỗi khung void Update () {currAngle = Mathf. LerpAngle (currAngle, mong muốnAngle, Time.deltaTime * 3f); biến đổi.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors () {mong muốnAngle = 60f; } public void CloseDoors () {mong muốnAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Tập lệnh này sẽ khiến cánh cửa của bạn mở chậm khi bạn đóng chúng trong AR bằng cách sử dụng hàm Lerp () thống nhất nội suy giữa hai điểm (hoặc trong trường hợp này là hai góc).

Bước 7: Phát Video trong AR

Phát video trong AR
Phát video trong AR
Phát video trong AR
Phát video trong AR

Điều cuối cùng chúng ta cần làm là phát video trong AR.

Nhấp chuột phải vào bất kỳ đối tượng trò chơi nào là trẻ em trên xe của bạn và tạo một đối tượng 3D, Quad. Điều này sẽ đảm bảo rằng chiếc quad là đứa con của chiếc xe của bạn. Định vị và thay đổi kích thước quad này sao cho nó vừa vặn với bên trong ô tô của bạn và trông giống như nó phải ở đó. Đây là những gì chúng tôi sẽ phát video trên.

Thêm một thành phần trình phát video vào quad của bạn. Thay đổi nguồn thành URL và tìm liên kết cứng đến tệp. MP4 hoặc kéo tệp video vào thư mục nội dung của bạn rồi kéo clip đó vào vị trí trống. Nếu bạn muốn phát trực tuyến video từ URL, Instragram là một nguồn tuyệt vời. Nhấp chuột phải vào bất kỳ video Instagram nào trong Google Chrome và nhấp vào kiểm tra. Tìm div chứa video và sao chép liên kết từ đó (tôi có phương pháp này như hình trên).

Đảm bảo kiểm tra vòng lặp nếu bạn muốn nó phát nhiều lần. Thêm thành phần nguồn âm thanh vào đối tượng trò chơi này và thay đổi nguồn đầu ra thành nguồn âm thanh trên trình phát video. Kéo nguồn âm thanh mới tạo của bạn vào vị trí đó.

Cuối cùng chúng ta đã hoàn thành!

Bước 8: Đặt ứng dụng trên điện thoại của bạn

Đặt ứng dụng trên điện thoại của bạn!
Đặt ứng dụng trên điện thoại của bạn!

Nếu bạn đang xây dựng cho Android, bạn có thể chỉ cần truy cập tệp và nhấn xây dựng và chạy với điện thoại của bạn được cắm vào.

Nếu bạn đang sử dụng iPhone hoặc iPad, hãy đảm bảo tải xuống Xcode từ cửa hàng ứng dụng. Ngoài ra, hãy đăng ký tài khoản nhà phát triển apple miễn phí từ www.apple.developer.com. Đi tới tệp và nhấn xây dựng. Mở tệp được tạo từ Xcode và cắm vào điện thoại của bạn. Chọn nhóm phát triển của bạn và nhấn nút phát.

Bạn có thể phải di chuyển camera xung quanh một chút nhưng hãy chờ một giây và chạm vào màn hình và bạn sẽ thấy chiếc xe của mình rơi từ trên trời xuống đất! Giờ đây, bạn có thể đi bộ vào bên trong và xem video của mình phát trong bảng điều khiển!

Hãy vui vẻ và cho tôi biết nếu bạn có bất kỳ câu hỏi nào trong phần bình luận!

Đề xuất: