a) Thiết kế dữ liệu hệ thống: Dữ liệu của chƣơng trình đƣợc thiết kế
bằng phần mền 3DsMax và công cụ tạo dữ liệu có sẵn trong Unity, chƣơng trình muốn hoạt động đƣợc thì phải cần có phƣơng tiện, địa hình, và các dữ liệu khác nữa.
b) Mô phỏng hoạt động lái xe: Đây là chức năng chính của chƣơng
trình, ngƣời sử dụng sẽ dùng các phím mũi tên trên bàn phím để di chuyển xe của mình tiến lùi, chuyển hƣớng, còi, phanh, theo đúng chỉ dẫn trên trò chơi.
61
Khi ngƣời chơi không đạp ga hay không đạp xe thì xe sẽ di chuyển chậm dần và dừng lại. Dĩ nhiên nếu chƣơng trình mô phỏng lái xe dạy luật giao thông mà chỉ có một chiếc xe chạy trên một mặt phẳng và đi xuyên qua tất cả các vật cản thì không còn là một chƣơng trình mô phỏng thực tế trong máy tính, do đó trong chƣơng trình cũng sẽ mô phỏng các hiệu ứng vật lý nhƣ va chạm, trọng lực, tƣơng tác với địa hình gồ ghề, lực quán tính đặt lên đối tƣợng. Trong chƣơng trình ngƣời dùng có thể dùng bàn phím để phản xạ tình huống cũng nhƣ di chuyển trên màn hình theo dõi.
c) Thay đổi bài tập: Chƣơng trình có 2 loại địa hình với một ô tô và
một xe đạp, với mỗi địa hình sẽ có những điểm khác nhau, giúp ngƣời chơi có cảm giác thích thú và trải nghiệm thực tế nhất.
62
CHƢƠNG 4: XÂY DỰNG CHƢƠNG TRÌNH ỨNG DỤNG 4.1. Phân tích hệ thống
4.1.1. Khảo sát
Hiện nay với tình trạng tăng dân số ngày càng cao, sự đô thị hóa nhanh chóng, sự phát triển mạnh mẽ của nền kinh tế, kéo theo nhu cầu đi lại ngày một tăng theo, lƣợng xe cá nhân ngày một nhiều trong khi đó tốc độ phát triển nâng cấp của đƣờng xá không phát triển kịp, và ý thức chấp hành luật giao thông của mọi ngƣời rất kém, văn hóa giao thông không thể chấp nhận đƣợc, tình trạng tai nạn giao thông do không quan sát, chấp hành các biển báo hiệu lệnh trên đƣờng khi tham gia…là nguyên nhân gây nên nhiều tai nạn không đáng có, không những cho chính chủ điều khiển phƣơng tiện mà còn cho các phƣơng tiện và ngƣời tham gia giao thông trên đƣờng khác. Một phần nguyên nhân đó là do chất lƣợng đƣờng kém và một số yếu tố khách quan khác gây lên, song nguyên nhân chủ yếu là do vi phạm các tín hiệu giao thông, thậm chí là không hiểu biết luật giao thông và tín hiệu biển thông báo giao thông đó là gì.
Bên cạnh đó việc cấp bằng, giấy phép lái xe là quá dễ dàng. Trong khi đó việc học tập trong các trung tâm đào tạo lái xe cũng chủ yếu là lý thuyết ít có thực hành vì nhiều lý do và một trong những lý do đó là vấn đề kinh tế, điều kiện sân bãi, cơ sở vật chất, cũng nhƣ sự an toàn cho các học viên khi tham gia thực hành trên xe thật, điều kiện thật, các tình huống phản xạ ngoài thực tếkhông phải cứ thực hành là có đƣợc.
Mặt khác, vấn đề giáo dục dạy luật giao thông trong các trƣờng từ cấp mẫu giáo, tiểu học trở lên cũng rất hạn chế, cũng chỉ dừng lại ở mức độ giới thiệu thông qua tranh ảnh, sách báo, dẫn đến học sinh không có hứng thú tiếp
63
thu hay ghi nhớ kiến thức về luật. Và một điều quan trọng nữa là để đảm bảo an toàn thì không thể cho các em thực hành trên các phƣơng tiện thật, chi phí cao, và không kiểm soát đƣợc. Từ những hạn chế trên cần phải có một chƣơng trình hỗ trợ việc dạy và học luật giao thông ngay từ lứa tuổi mẫu giáo, tiểu học, là lứa tuổi tiếp thu và hiểu nhanh nhất, khi các em đã làm quen với các biển báo trong Game, các em sẽ nhớ khi gặp một biển báo hay tín hiệu nhƣ thế ngoài thực tế, giúp các em phản xạ đƣợc ngay.Ngoài ra, việc cho các em học ngay từ nhỏ thông qua Game giao thông này sẽ giúp hình thành nên một nét văn hóa giao thông khi lớn lên, không phải trong thế giới ảo mà là
64
4.1.2. Phân tích hệ thống
4.1.2.1. Đặc tả chức năng hệ thống
Xuất phát từ các chức năng tổng quát của hệ thống chƣơng trình ta có sơ đồ phân rã chức năng của phần mềm nhƣ sau:
Hệ thống mô phỏng hỗ trợ dạy luật giao thông gồm các chức năng chính nhƣ sau:
a. Chức năng thiết kế dữ liệu hệ thống
Dữ liệu hệ thống bao gồm có:
Hệ thống mô phỏng dạy luật giao thông
Thiết kế dữ liệu hệ thống
Mô phỏng hoạt động lái xe
Thông tin biển báo, tín hiệu đèn Địa hình Ô tô Xe đạp Di chuyển tiến Di chuyển lùi (ôtô) Rẽ sang trái Rẽ sang phải Còi, phanh,…
Thông tin biển báo Thông tin tín
hiệu đèn
65
Địa hình bãi lái: Đƣợc thiết kế bởi phần mềm 3DsMax, và trên Unity; địa hình gồm các cung đƣờng, hoạt cảnh, cảnh vật xung quanh …
Ô tô,xe đạp, các biển báo, đèn tín hiệu cũng đƣợc thiết kế bằng phần mềm 3DsMax, các dữ liệu này đƣợc thiết giống nhƣ các biển báo ngoài đời thực.
b. Mô phỏng hoạt động lái xe
Là phần mềm mô phỏng lái xedạy luật giao thông cho nên việc di chuyển đối tƣợng là điều bắt buộc. Chƣơng trình sẽ có chức năng tiến, lùi (đối với ô tô), đổi hƣớng, còi, va chạm... theo đúng trạng thái động lực học.
c. Thông tin biển báo, tín hiệu đèn
Chức năng này cho phép các đèn tín hiệu hoạt động độc lập, và đƣa ra các thông tin cần thiết về biển báo hay các lỗi vi phạm tín hiệu đèn luật giao thông khi lƣu thông.
66
4.1.2.2. Biểu đồ phân cấp chức năng
a. Mô phỏng hoạt động xe * Tiến:
Mô phỏng động tác nhấn ga, đạp xe ngoài đời thực. Ngoài đời thực việc hoạt động di chuyển về phía trƣớc của phƣơng tiện là sự tăng giảm vector vận tốc, với độ lớn của vector đƣợc quyết định bởi sức kéo của động cơ, và phƣơng hƣớng đƣợc thay đổi thay đổi mỗi khi ta thay đổi trục quay của bánh. Do đó, trong chƣơng trình mô phỏng ta cũng cố gắng mô phỏng sao cho giống ngoài đời thực nhất có thể. Quy trình hoạt động của chức năng tiến lên:
Hệ thống mô phỏng dạy luật giao thông
Xử lý dữ liệu Mô phỏng hoạt độngxe Xử lý biển báo, tín hiệu đèn Địa hình Thiết bị Tiến Lùi (ôtô) Đổi hƣớng Va chạm Phanh
Thông tin biển báo Thông tin tín
hiệu đèn
67
Phát hiện sự kiện nhấn nút tiến(trong Unity hỗ trợ hàm bắt sự kiện khi nhấn nút).
Khi sự kiện nhấn nút tiến đƣợc xác định. Hàm update của thành phần engine sẽ hoạt động tham số (throttle) sẽ trả về giá trị 1. Vận tốc cực đại sẽ đƣợc gán giá trị khác 0. Lực kéo của động cơ cũng nhận giá trị khác 0.
Khi đã có đƣợc vận tốc tại thời điểm nhất định đây sẽ là đầu vào từ đó tính ra đƣợc số vòng quay trong mỗi phút của bánh.
Với số vòng quay trong mỗi phút nhân với chu vi của bánh trong mỗi khoảng thời gian nhất định đó sẽ là quãng đƣờng mà xe có thể di chuyển đƣợc qua mỗi phút tức là biết đƣợc vận tốc của xe. Cùng với tính năng đồng bộ chuyển động qua mỗi frame của Unity phƣơng tiện mô phỏng của ta sẽ di chuyển khác giống thực với vector vận tốc đƣợc tính toán nhƣ trên.
Khi thả nút tiến. Vận tốc cực đại nhận giá trị 0 lực kéo sẽ giảm từ từ theo một hằng số cho trƣớc dẫn đến sự giảm dần về vận tốc và tốc độ quay của bánh xe cho đến khi đạt tốc độ cực đại bây giờ là 0 theo đúng yếu tố quán tính trong vật lý.
* Chuyển hướng
Mô phỏng hoạt động quay bánh xe đời thực. Thực chất khi quay bánhxe là chúng ta đã thay đổi phƣơng hƣớng vector lực kéo của xe khiến xe chuyển hƣớng. Vector lực kéo đƣợc thiết kế để nhận vào hai tham số đó là độ lớn và phƣơng hƣớng.Với chức năng tiến ta chỉ mới truyền vào độ lớn, chuyển hƣớng chính là chức năng truyền vào phƣơng hƣớng cho lực kéo.
Phát hiện sự kiện nhấn nút quay trái, phải. Nếu ấn nút quay trái sẽ nhận giá trị -1, phải sẽ nhận giá trị +1.
Khi sự kiện nhấn nút chuyển hƣớng đƣợc xác nhận góc quay giới hạn cũng sẽ đƣợc xác định là góc âm nếu nhận giá trị là trái, dƣơng nếu là phải (nếu không nhấn nút chuyển hƣớng góc quay nhận giá trị là 0 trùng với trục tọa độ của xe).
68
Góc quay giới hạn đƣợc xác định là khác 0. Sau mỗi frame góc quay sẽ đƣợc cập nhật lại với giá trị sẽ là góc quay cực đại nhân với tham số quay. Tham số quay này sẽ đƣợc tăng theo một 1 hằng số cho trƣớc từ 0 cho đến 1 sau mỗi frame.
Khi góc quay tại mỗi thời điểm có sự kiện nhấn nút thay đổi hƣớng đã đƣợc tính toán. Góc quay sẽ đƣợc đƣa và thay đổi trục tọa độ của bánh xe khiến bánh xe quay và trục tọa độ của vector lực kéo khiến bánh xe di chuyển theo.
Sau mỗi frame vị trí của thân xe và bánh xe sẽ đƣợc kiểm tra và đặt lại theo đúng địa chỉ offset (thuộc trục tọa độ của chúng). Chính động tác này khiến xe tiến về phía trƣớc và chuyển hƣớng.
* Lùi (đối với ô tô):
Khi lùi ngoài với phƣơng tiện thực ta đã thay đổi ngƣợc chiều của momen xoắn ngƣợc lại khi tiến, tức là thay đổi ngƣợc chiều lực kéo so với khi tiến.Tƣơng tự nhƣ vậy trong mô phỏng.
Phát hiện sự kiện lùi.
Góc quay trái phải khi lùi cũng tƣơng tự nhƣ khi ta tiến, nhƣng momen xoắn sẽ giảm so với khi tiến, hệ số kéo bằng với hệ số kéo khi xe tiến.
* Phanh
Mô phỏng hành động nhấn phanh. Phát hiện sự kiện nhấn phanh.
Độ lớn cực đại của vector vận tốc lập tức trở về 0. Độ lớn lực kéo đổi chiều giảm nhanh với hằng số phanh cho trƣớc. Tốc độ giảm vòng quay của bánh cũng đƣợc giảm theo một giá trị cho trƣớc hoặc lập tức bằng 0 tùy theo ngƣời đặt.
69
Trƣờng hợp này cũng giống nhƣ ta không tác động vào sự kiện tiến nữa nhƣng chỉ khác một điều đó là tốc độ giảm lực kéo với một hằng số lớn hơn nhiều, thúc đẩy quá trình dừng lại của xe.
* Va chạm
Đây là một trong các chức năng quan trọng trong một chƣơng trình mô phỏng.Chức năng này là điều kiện cần để các đối tƣợng đƣợc định nghĩa trong thế giới mô phỏng có thể tƣơng tác qua lại với nhau.
Quy trình xử lý:
Tạo đối tƣợng thực chất là render mô hình đƣợc gọi đến.
Định nghĩa mô hình vừa đƣợc gọi là một đối tƣợng có thể tƣơng tác với các đối tƣợng khác. Có hai bƣớc trong quá trình này: Gán cho mô hình đƣợc định nghĩa một trọng lƣợng tƣợng trƣng, và gán cho mô hình một khối hình học đơn giản bao quanh. Nếu đối tƣợng đƣợc tạo thành bởi nhiều mô hình thì sẽ bao cả mô hình đấy trong mỗi khối hình học đơn giản chung.
Sau mỗi khoảng thời gian (1 frame) sẽ kiểm tra xem trong khoảng không (trong khối hình học bao quanh vật thể của ta) xem nó đƣợc sử dụng nhƣ thế nào nếu hai đối tƣợng va chạm, tức là hàm kiểm tra đƣợc gọi ra hai lần trong cùng 1 frame thì xảy ra va chạm.
Sau khi xác định đƣợc vị trí va chạm (điểm dùng chung của hai không gian) lúc này trọng lƣợng mà ta gán cho đối tƣợng sẽ phát huy tác dụng. Độ lớn và phƣơng hƣớng năng lƣợng của hai đối tƣợng sẽ đƣợc tính lại để tạo hiệu ứng va chạm.
* Tín hiệu đèn giao thông
Là một trong những chức năng quan trọng trong Game giao thông này. Mô phỏng điều luật giao thông về đèn tín hiệu khi đang tham gia giao thông. Đèn tín hiệu sẽ đƣợc chuyển qua lại giữa trạng thái xanh, vàng và đỏ mỗi chu kỳ thời gian xác định. Nếu phƣơng tiện vƣợt qua vạch giới khi đèn ở trạng thái đỏ sẽ xuất hiện thông báo “Bạn đã vƣợt đèn đỏ”, nếu vƣợt đèn đỏ mà rẽ
70
phải thì sẽ xuất hiện thông báo “Vƣợt đèn đỏ đúng luật”, khi phía trƣớc có tín hiệu đèn đỏ hay vàng thì sẽ xuất hiện thông báo cảnh báo trƣớc cho ngƣời điều khiển xe.
Quy trình xử lý:
Tạo hiệu ứng điểm sáng. Có thể dùng dữ liệu có sẵn, hoặc tự tạo. Rất đơn giản thực ra là ta thay đổi màu của các Shapes tƣơng ứng, từ màu tối thành màu tƣơng ứng.
Sau mỗi khoảng thời gian xác định sẽ thay đổi hàm trạng thái của đèn.
b. Xử lý dữ liệu
* Dữ liệu mô phỏng thiết bị:
Là một chƣơng trình mô phỏng dạy luật giao thông trong môi trƣờng 3D điều không thể thiếu đầu tiên đó chính là mô hình mô phỏng phƣơng tiện tập lái, các biển báo. Mô hình có thể đƣợc thiết kế bằng các chƣơng trình thiết kế kỹ thuật nhƣ 3Dmax, Blender, Maya… có thể đơn giản hoặc phức tạp tùy theo mục đích của bài tập lái.
Về cơ bản dữ liệu về thiết bị tập lái đƣợc chia ra làm hai thành phần chính đó là thân xe và bánh. Tƣơng ứng với mỗi thân xe là các bánh khác nhau. Mô hình dữ liệu sau khi đƣợc thiết kế trên 3Dmax, hoặc các chƣơng trình thiết kế 3D khác sẽ đƣợc chuyển đổi sang định dạng “*.FBX” (đây là định dạng mà Unity dùng để nhận biết và render). Ở đây, mô hình còn đƣợc tối ƣu hóa cho việc nạp vào chƣơng trình:
Xác định tọa độ của thân và bánh một cách chính xác: Điều này là tƣơng đối quan trọng do thân và bánh sau khi thiết kế sẽ đƣợc xuất ra làm hai đối tƣợng tách biệt nếu nhƣ không lấy chính xác đƣợc tọa độ của bánh so với thân xe ta không thể tạo ra đƣợc một phƣơng tiện bình thƣờng.
Do xe thực chất chỉ có hai thành phần chính đó là thân xe và bánh xe nên trong những trƣờng hợp kết cấu phƣơng tiện khá chi tiết nhƣ có cả ghế ngồi, vô lăng… thì phải nhóm tất cả phần trên thành nhóm là thân xe.
71 Đặt hệ trục tọa độ cho các thành phần.
Ngoài ra mô hình còn có thể cải thiện bằng cách : - Gán Texture cho các thành phần
- Gán Material: Thép, kính, cao su …
Mô hình ôtô trong 3DsMax * Dữ liệu về địa hình
Ngoài phƣơng tiện cần đƣợc mô phỏng ra chúng ta cũng cần đến một địa hình đƣợc thiết kế trong môi trƣờng 3D.
Đối với địa hình lái việc thiết kế cũng không khác gì so với việc thiết kế mô hình xe. Công đoạn xây dựng mô hình cũng sử dụng những chƣơng trình thiết kế 3D nhƣ 3Dmax, Blender… Nhƣng có điều cần lƣu ý trong giai đoạn thiết kế là tất cả những gì không thể di chuyển, thay đổi vị trí thì đều đƣợc tạo ra trong giai đoạn này. Sau khi đã đƣợc tối ƣu hóa về mặt thiết kế mô hình sẽ đƣợc xuất ra dạng file”*.FBX”. Sau đó đƣợc gọi trong chƣơng trình nhƣ một đối tƣợng của chƣơng trình (có thể tƣơng tác đƣợc với các đối tƣợng khác).
72
Mô hình địa hình * Xử lý biển báo, tín hiệu đèn giao thông
Khi xe đi tới gần biển báo giao thông (một khoảng cách đã tính toán và thiết lập trƣớc của ngƣời lập trình), thì hệ thống sẽ xử lý và đƣa ra thông báo biển báo đó là gì cho ngƣời điều khiển xe biết.
Khi đi tới các ngã ba, ngã tƣ giao cắt sẽ có các tín hiệu đèn giao thông hoạt động độc lập, nếu có tín hiệu đèn đỏ mà xe cố tình đi qua thì hệ thống sẽ thông báo vi phạm, nếu vƣợt đèn đỏ mà rẽ phải thì hệ thống báo lại là đúng luật.
73
4.1.2.3. Biểu đồ ngữ cảnh
Ngƣời điều khiển xe sẽ di chuyển xe bằng các phím mũi tên trên bàn phím, đồng thời quan sát các biển báo, tín hiệu đèn giao thông trên địa hình mô phỏng trong Game, khi ngƣời chơi gặp một biển báo thì hệ thống sẽ xử lý