Khả năng xác định vị trí nguồn âm của 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 53 - 57)

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

5.2.3Khả năng xác định vị trí nguồn âm của NPC

5.2.3.a Xác định một NPC có thể nghe được âm thanh phát ra hay không

Việc đầu tiên cần làm đó là xác định xem NPC có nghe được âm thanh phát ra hay không. Nếu NPC không nghe được âm thanh thì nó sẽ không có phản ứng gì, còn nếu nghe được thì mới từ đó mà xác định nguồn âm. Mỗi (loại) NPC sẽ có một ngưỡng nghe riêng, nếu âm thanh đến tai NPC có độ lớn lớn hơn ngưỡng thì xem như NPC nghe được âm thanh. Lúc này chưa tính đến các đặc điểm tâm sinh lý của NPC, những đặc điểm này sẽ được xử lý khi tín hiệu âm thanh đã được gửi đến NPC (Message đã được gửi đến Listener bởi Broadcaster như đã được đề cập ở phần trước). Để tính toán độ lớn của âm thanh đến tai NPC, đầu tiên ta sẽ sử dụng đường đi ngắn nhất mà âm thanh đã đi để tính sự suy giảm độ lớn theo quãng đường mà âm thanh đi. Sự suy giảm này sẽ tuân theo luật bình phương nghịch đảo, như công thức bên dưới:

A1=A0+20×log10 1

Dp

Trong đó,A1là độ lớn của âm thanh sau khi suy giảm theo khoảng cách (dB),A0là độ lớn của âm thanh nguồn vàDplà độ dài của đường đi ngắn nhất giữa nguồn âm và NPC tính bằng mét, còn 1 ở đây chính là 1 mét, mô hình giả định rằng độ lớn của âm thanh nguồn là độ lớn được đo cách nguồn 1 mét.

tính toán. Mô hình giả sử rằng M bằng 1 dB/km (10−3dB/m) đối với âm thanh có tần số 200 Hz (gần bằng tần số của giọng nói con người) ở mực nước biển với nhiệt độ 20 độ C và độ ẩm 50% . Sự suy giảm này có thể được tính theo công thức bên dưới:

A2=A1−M×Dp

Trong đó,A2là độ lớn âm thanh còn lại sau khi suy giảm do khoảng cách và môi trường truyền (dB) đã được áp dụng.A1là kết quả của công thức ở trên.Dplà độ dài đường đi ngắn nhất được trả về từ NavMesh và được tính bằng mét.

5.2.3.b Ước tính hướng của nguồn âm

Sau khi đã xác định được NPC có thể nghe âm thanh phát ra từ nguồn, tiếp theo NPC có thể xác định hướng của nguồn âm đó dựa vào đường đi của âm thanh đó. Đầu tiên, ta sẽ thực hiện việc tìm đường từ vị trí nguồn âm đến tai bên trái và tai bên phải của NPC để mô phỏng sự truyền âm thanh từ nguồn đến hai tai NPC. Tiếp theo, ta có thể tìm được vec tơ chỉ hướng từ vị trí của NPC đến nguồn âm dựa vào vec tơ chỉ hướng từ vị trí của NPC đến vị trí của ngã rẽ cuối cùng (last corner) trên hai đường đi vừa tìm được và độ dài của hai đường đi đó như công thức bên dưới: ˆ V= V |V| V= P1−Pn L1× |P1−Pn|+ P2−Pn L2× |P2−Pn|

Trong đó,Vˆ là vec tơ chỉ hướng đã được chuẩn hóa chỉ về hướng mà NPC dự đoán nguồn âm sẽ ở đó.P1,P2là vị trí ngã rẽ cuối cùng trên đường đi trước khi đến tai trái và phải của NPC,Pnlà vị trí của NPC vàL1,L2là độ dài hai đường đi của âm thanh đến hai tai của NPC.

Hình 33: Trong trường hợp này NPC sẽ dự đoán được nguồn âm ở trước mặt mình (Cowan, 2020, trang 138).Khi đã biết hướng mà NPC nhận thấy âm thanh phát ra, NPC sẽ chỉ cần di chuyển theo hướng đó một Khi đã biết hướng mà NPC nhận thấy âm thanh phát ra, NPC sẽ chỉ cần di chuyển theo hướng đó một khoảng cách ngắn nhất định trước khi trở về trạng thái trước đó. Người chơi sẽ phải liên tục tạo ra tiếng ồn để dẫn NPC đến vị trí của mình. Điều này có thể là một phương pháp chấp nhận được để mô phỏng trí thông minh của

động vật, nhưng nó không đủ để mô phỏng quá trình suy nghĩ của một con người. Khi nghe thấy một âm thanh tạo ra bởi người chơi, các NPC cần ước tính vị trí nơi âm thanh được phát ra, đi đến vị trí đó, sau đó bắt đầu tìm kiếm khu vực xung quanh. Khả năng ước tính vị trí nguồn âm thanh của NPC phụ thuộc vào nhiều yếu tố bao gồm: hướng của nguồn âm, đặc điểm của âm thanh và các đặc điểm riêng của NPC.

5.2.3.c Ước tính vị trí nguồn âm

Vị trí của nguồn âm được ước tính bởi con người và cả NPC đều có sự sai lệch so với vị trí thực sự của nguồn âm do các yếu tố như độ lớn của âm thanh khi đến tai người nghe và hướng nhìn của người nghe tại thời điểm đó. Sự sai lệch trong việc ước tính vị trí nguồn âm sẽ giảm khi cường độ âm đến tai người nghe tăng lên đến xấp xỉ 70 dB (Davis & Stephens, 1974). Âm thanh rất lớn cũng khó có thể xác định nguồn do âm vang mà chúng tạo ra. Âm vang làm tăng sự sai lệch trong việc ước tính vị trí nguồn âm do những sóng âm thanh phản xạ từ nhiều hướng khác nhau (Giguere & Abel, 1993). Để xấp xỉ sự ảnh hưởng của cường độ âm đến sự ước tính vị trí nguồn âm, công thức bên dưới biểu diễn một parabol với trục đối xứng nằm ở 70 dB.

E1= (0.1×A2−7)2

Trong đó,E1là sai số trong việc ước tính nguồn âm tính bằng độ vàA2là cường độ âm khi đến tai người nghe (NPC) tính bằng dB.

Sự sai lệch trong ước tính vị trí nguồn âm nằm trong khoảng 2,75°đối với các âm thanh ở trước mặt người nghe và lên đến 20°cho âm thanh ở phía sau lưng người nghe trong điều kiện lý tưởng (một người nghe trẻ tuổi ngồi trong buồng chống dội âm) (Makous & Middlebrooks, 1990). Các phương trình dưới đây sẽ xấp xỉ độ sai lệch dựa vào hướng mà NPC đang hướng tới so với hướng của nguồn âm mà NPC đã ước tính được.

w=vˆl.vˆs

2 +1

2

E2=E1+w×Ef+ (1−w)×Eb

Trong đó, w là trọng số được sử dụng để làm tăng hoặc giảm tuyến tính độ sai lệch giữa âm thanh ở phía trước (Ef) và sộ độ sai lệch đối với âm thanh nằm phía sau người nghe (Eb). Lưu ý rằngEf bằng 2,75°vàEbbằng 20°đối với điều kiện lý tưởng.vllà vec tơ đã được chuẩn hóa chỉ theo hướng mà người nghe đang đối mặt.vslà vec tơ đã được chuẩn hóa chỉ về hướng của nguồn âm mà người nghe đã ước tính.E1là độ sai lệch đã được tính toán dựa vào độ lớn của âm thanh khi đến tai người nghe.E2là độ sai lệch kết hợp do cường độ âm thanh và hướng người nghe đang đối mặt so với hướng của nguồn âm thanh.

Nếu đường đi giữa nguồn âm thanh và người nghe không bị che khuất, thì đường đi của âm thanh là đường thẳng. Còn các đường đi có vật cản sẽ có nhiều ngã rẽ làm việc định vị nguồn của âm thanh khó khăn hơn. Độ sai lệch gây ra do các vật cản trên đường đi có thể được xấp xỉ bằng cách so sánh độ dài đường đi của âm thanh so với độ dài đường thẳng nối giữa người nghe và nguồn âm. Độ sai lệch này sẽ bằng với góc được tạo bởi vec tơ hướng của âm thanh khi đến tai người nghe và vec tơ hướng về nguồn âm thực sự, góc đó là gócθtrong hình bên dưới.

Hình 34: Do có vật cản trên đường đi nên người nghe sẽ dự đoán hướng của nguồn âm sai lệch với hướng thực sự của nguồn âm (Cowan, 2020, trang 177).

Độ sai lệch này sẽ được cộng với độ sai lệch đã được tính toán ở trên theo công thức sau:

E3=E2+tan−1( q D2 p−D2 a Da )×180π

Trong đó,Dplà độ dài đường đi của âm thanh vàDalà độ dài đoạn thẳng nối giữa người nghe (NPC) và nguồn âm thanh.E2là mức sai số gây ra bởi hướng của âm thanh và độ lớn của âm thanh như đã được tính ở trên. Tổng số sai số (E3) có thể được sử dụng để xác định diện tích của khu vực mà NPC sẽ cần tìm kiếm khi tìm nguồn phát âm thanh. Một diện tích tìm kiếm nhỏ ngụ ý rằng NPC tự tin về ước tính của mình.

Vị trí của nguồn âm thanh được ước tính cho mỗi NPC dựa trên sai số của việc ước tính vị trí nguồn âm. Kết quả ước tính tệ nhất sẽ đặt nguồn âm thanh vào phương (Vp) với khoảng cách bằng độ dài đường đi (Dp). Kết quả ước tính tốt nhất sẽ đặt nguồn âm vào đúng vị trí thực sự của nó, đó là vec tơ hướng tới nguồn âm (Va) với khoảng cách bằng độ dài đoạn thẳng (Da) giữa nguồn âm và người nghe như được mô tả bằng những công thức bên dưới:

w=max(1−E3 90,0), ˆ Ve=Vˆa×w+Vˆp×(1−w), De=Da×w+Dp×(1−w), Le=Ll+Vˆe×De

Trong đó, w là trọng số được sử dụng để thay đổi một cách tuyến tính giữa kết quả tệ nhất và kết quả tốt nhất khi ước tính vị trí nguồn âm .Velà một vectơ hướng đã chuẩn hóa chỉ về vị trí mà NPC ước tính nguồn âm thanh vàDelà khoảng cách ước tính giữa người nghe và nguồn âm thanh.Valà vec tơ hướng về vị trí thực sự của nguồn âm từ vị trí người nghe vàVplà vec tơ hướng về ngã rẽ cuối cùng (last corner) của đường đi âm thanh trước khi đến tai người nghe.Dplà độ dài đường đi của âm thanh để đến được người nghe vàDalà độ dài đoạn thẳng giữa người nghe và nguồn âm thanh.Lllà vị trí của người nghe (NPC) vàLelà vị trí mà người nghe ước tính nguồn âm thanh (adsbygoogle = window.adsbygoogle || []).push({});

được đặt.

5.2.3.d Tổng hợp quá trình hoạt động của mô hình

Để tổng hợp lại, quá trình hoạt động của mô hình từ lúc có âm thanh phát ra (từ người chơi) đến khi NPC ước tính vị trí của nguồn âm đó bao gồm các bước sau đây:

• Khi một âm thanh được phát ra, Emitter sẽ tạo ra một Message gửi đến Broadcaster mà nó đã đăng ký lúc được khởi tạo.

• Khi Broadcaster nhận được Message, nó sẽ kiểm tra xem trong số các Listener đã đăng ký với nó, Listener nào có thể nghe thấy được âm thanh này và gửi Message đến các Listener đó.

• Khi Listener nhận được Message từ Broadcaster, nó sẽ lưu Message đó vào hàng đợi và cứ sau 100ms nó sẽ tiến hành lọc các Message này với các Filter được gắn với nó, để loại bỏ các Message ứng với âm thanh có độ lớn dưới ngưỡng nghe của Listener. Đồng thời, trong trường hợp có nhiều Message trong hàng đợi nó sẽ tìm ra Message có độ lớn lớn nhất và sau 160ms (thời gian phản ứng trung bình của một thanh niên khi nghe thấy âm thanh) sẽ gửi đến mô đun Nhận thức (Cognition Module) của mình.

• Khi Cognition Module nhận được Message, nó sẽ tiến hành ước tính nguồn âm thanh với các bước như đã mô tả.

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 53 - 57)