Thiết kế mô hình nhận thức thị giác (visual perception) cho NPC

Một phần của tài liệu Thiết kế mô hình tri giác và nhận thức cho các npcs trong stealth game (Trang 40 - 44)

NPC

4.1 Nhận thức thị giác ở con người

Thị giác của con người là một chức năng quan trọng và không thể thiếu. Nó giúp chúng ta nhận biết được sự vật, sự việc xung quanh. Nói về thị giác của người sẽ có rất nhiều khía cạnh khác nhau, nhưng ở đây sẽ chỉ nói đến những đặc tính có thể sử dụng được trong mô hình.

Điều tất nhiên mà ai cũng biết đó là con người có 2 mắt, nhờ vào 2 mắt này mà con người có thể nhìn được trong phạm vi200◦. Mắt tập trung ánh sáng vào mặt sau của mắt, sử dụng các tế bào hình que và tế bào hình nón để phát hiện ánh sáng và màu sắc. Thị lực lớn nhất sẽ nằm ở vùng chính giữa phía trước và giảm dần khi cách rời xa trung tâm. Các tế bào hình nón tập trung dày đặc trong trung tâm võng mạc, nó chịu trách nhiệm phân biệt màu sắc tạo nên tầm nhìn trung tâm (central vision). Ngược lại các tế bào hình que cho phép nhìn sự vật trong điều kiện thiếu ánh sáng và nhận biết chuyển động tạo nên tầm nhìn ngoại vi (peripheral vision).

• Central Vision: là phần quan trọng nhất ở thị giác của con người. Nó cho phép con người có thể nhìn thấy hình dạng, màu sắc, và các chi tiết một cách rõ ràng và sắc nét.

• Peripheral Vision: là thị giác giúp con người có khả năng phát hiện chuyển động bên ngoài tầm nhìn trực tiếp. Nó chịu trách nhiệm việc phát hiện sự vật ở điều kiện ánh sáng yếu, hoặc ban đêm nhưng lại không nhạy cảm với màu sắc - ngược lại với tầm nhìn trực tiếp.

Central Vision sẽ được tập trung mô phỏng trong mô hình và Peripheral Vision sẽ không được mô phỏng. Vì để giảm tính phức tạp của mô hình và giảm sự nhập nhằng trong việc phát hiện người chơi của NPC. Tức là nếu mô phỏng Peripheral Vision thì NPC sẽ có thể phát hiện người chơi bằng những chuyển động nhỏ nhất kể cả khi NPC không thực sự nhìn thấy người chơi, điều này gây ra các trường hợp người chơi bị phát hiện nhưng không rõ lý do, tạo cảm giác thiếu công bằng cho người chơi. Ngoài ra, giác quan thứ sáu (khả năng cảm nhận có người sau lưng) cũng sẽ được mô phỏng để khắc phục hạn chế như đã đề cập ở phần 2.4.

4.2 Mô hình đề xuất cho nhận thức thị giác ở con người

Mô hình nhận thức thị giác được đề xuất nhằm giúp NPC có thể nhìn thấy các đối tượng. Mô hình sẽ định nghĩa cách làm thế nào để một NPC có thể nhận thấy được vật thể và người chơi (player), cũng như cải thiện những thiếu sót từ các mô hình truyền thống.

4.2.1 Mô hình thị giác cơ bản

Trước khi đi đến mô hình đề xuất, thì cần giới thiệu về mô hình thị giác cơ bản được sử dụng phần lớn trong các trò chơi ngày nay. Bao gồm ba phần chính đó là: "view distance", "view cone" và "line-of-sight".

Hình 22: Mô hình thị giác cơ bản (Rabin & Delp, 2008)

Ở mô hình này, người chơi được cho là bị NPC phát hiện khi thỏa mãn đủ 3 điều kiện đó là: 1. Vị trí của người chơi nhỏ hơn khoảng cách nhìn (view distance) của NPC.

2. Vị trí của người chơi nằm trong vùng nhìn nón (view cone).

3. Tồn tại một đường thẳng (line-of-sight) nối liền giữa người chơi và NPC mà không đi qua một vật cản nào. Kiểm tra đầu tiên là khoảng cách giữa người chơi và NPC sẽ tính toán như khoảng cách giữa hai điểm. Tuy nhiên, sẽ hiệu quả hơn nếu chúng ta chỉ so sánh khoảng cách bình phương thay vì khoảng cách thực để tránh tính toán căn. Ví dụ, nếu NPC có tầm nhìn là 10, chọn vị trí gốc tọa độ (0,0,0) và người chơi đang ở tọa độ (6,7,0). Việc kiểm tra chỉ đơn giản là so sánh giữa102=100và62+72+02=85. Do đó NPC có thể nhìn thấy được người chơi

(85<100).

D2=x2+y2+z2

Bước tiếp theo là kiểm tra vị trí trong vùng nhìn nón. Bằng cách thực hiện tích vô hướng giữa vector forward được chuẩn hóa và vector từ NPC đến người chơi được chuẩn hóa. Ta sẽ được giá trị cosin của góc giữa hai vector, từ đó so sánh với cosin của1/2tầm nhìn (fov), ví dụ ở đây làcos(120/2) =cos(60) =0.5. Nếu nó lớn hơn0.5, tức đã thỏa mãn điều kiện kiểm tra.

cosα= ~a.~b |~a| ∗ |~b|

Kiểm tra cuối cùng là kiểm tra về đường nhìn. Ta cần thực hiện một tia ray bắn từ vị trí mắt của NPC cho tới người chơi. Nếu giao với bất kỳ vật thể nào trước khi chạm đến người chơi, thì tức là không thể nhìn thấy người

chơi. Nhưng liệu thực sự là người chơi có bị phát hiện hay không, hay có vật thể nào phía trước người chơi hay không? Thì cần bắn nhiều tia ray vào các vị trí khác nhau ở người chơi, rồi dựa vào kết quả để đánh giá xem thực sự người chơi có bị phát hiện hay không.

4.2.2 Mô hình thị giác đề xuất

Mô hình thị giác cơ bản được đề cập bên trên thì không mô hình hóa tốt thị giác của con người. Điển hình, nó còn tồn tại một số nhược điểm như sau:

• Đối tượng có thể không phát hiện được vật thể dù cho có đứng ngay sát bên cạnh.

• Độ nhạy của thị lực là càng tăng nếu khoảng cách càng ngắn. Nhưng mô hình bên trên lại đánh giá như nhau ở mọi điểm trong vùng nhìn.

• NPC vẫn có thể nhìn thấy người chơi tùy thuộc vào vật cản tầm nhìn. Ví dụ như vật thể có chiều cao thấp hơn chiều cao nhân vật.

Mô hình của em, về cơ bản cũng dùng những biện pháp như mô hình thị giác cơ bản đã được đề cập vì mô hình này đã phản ánh được cơ bản những tính chất của Central Vision của thị giác của con người. Nhưng em sẽ có những biện pháp để giải quyết các vấn đề kể trên, em thêm một vùng nhìn xa và một vùng xung quanh NPC để mô phỏng giác quan thứ sáu nhằm cải thiện độ thực tế về thị giác của con người. Mô hình đề xuất bao gồm các thành phần như sau:

Hình 23: Mô hình thị giác đề xuất

• Clear Vision (Direct Vision): Đây là tầm nhìn trực tiếp, mọi vật trong vùng đều được xác định chính xác, rõ ràng, bất kể cao hay thấp hơn tầm mắt của NPC.

• Far Vision: Đây là tầm nhìn xa, tương ứng với việc vật thể cách nhân vật một khoảng cách nhất định từ đó dẫn đến việc khó thấy vật thể hơn. Tầm nhìn này chỉ phát hiện được các vật thể cao hơn tầm mắt nhân vật, còn các vật thấp hơn thì không.

• Sense: Đây là vùng cảm quan của con người (người có xu hướng nhận thấy được có ai đó đang đứng kế bên mình). Vùng này nhằm khắc phục trường hợp người chơi đứng cạnh mà NPC không phát hiện được, làm tăng cảm giác thực tế cho người chơi.

• Ngoài ra, các vùng nhìn này sẽ được liên tục xoay trái và phải để góp phần tránh tình trạng người chơi đứng cạnh mà NPC không phát hiện được và mô phỏng sự di chuyển mắt của NPC.

Một bổ sung thêm dành cho mô hình này, và đã cũng có đề cập ở phần trước. Đó chính là tầm nhìn của NPC sẽ như thế nào nếu có vật cản chắn ngang.

Hình 24: Tầm nhìn đi qua vật cản chắn ngang

• Đối với vật cản cao hơn tầm mắt NPC: Tầm nhìn của NPC sẽ bị hạn chế tối đa, tức là NPC không thể nhìn được bất cứ đối tượng nào sau những vật cản này như tường, nhà, ...

• Đối với vật cản thấp hơn tầm mắt NPC: Tầm nhìn của NPC cũng bị hạn chế. Nhưng với vùng nhìn sau vật cản này, NPC vẫn có khả năng phát hiện những đối tượng cao hơn tầm mắt NPC (cũng cao hơn vật cản đó), nhưng không nhìn thấy được những đối tượng thấp hơn tầm mắt NPC. Vùng nhìn này có tính chất giống với Far Vision như đã mô tả ở trên.

Ngoài ra, để mô phỏng sự không chắc chắn khi một NPC nhìn thấy người chơi, thì để một NPC thành công phát hiện người chơi thì sẽ mất một khoảng thời gian, khoảng cách càng xa NPC thì thời gian này càng lâu. Tức là, khi người chơi lọt vào tầm nhìn của NPC thì sẽ tiến hành đếm ngược, khi hết thời gian đó, thì NPC đã phát hiện người chơi và báo động.

Một phần của tài liệu Thiết kế mô hình tri giác và nhận thức cho các npcs trong stealth game (Trang 40 - 44)