Chương 4: Tạo chuyển động và tương tác trong VRML
4.1. Khái niệm sự kiện và tuyến nối
4.1. Sự kiện
“Event routing” cho phép một sự kiện phát sinh được truyền đến các “đích”- những nút trong
hệ thống, từ đó gây ra những thay đổi cho riêng nút đó và hệ thống.
Xử lý sự kiện
eventIn: Nhận sự kiện
eventOut: Gửi thông điệp
ROUTE: Thiết lập đường dẫn sự kiện giữa các nút
Script: Xử lý hành vi
4.2. Tuyến nối
ROUTE <name> . <field/eventName> TO <name> . <field/eventName>
Thường đặt ở cuối tệp tin hoặc cuối khai báo DEF
4.2. Các sensor
4.2.1. Time sensor
Cú pháp
TimeSensor {
# (0, ∞)
cycleInterval 1
enabled
loop
TRUE
FALSE
startTime
0
# (- ∞, ∞)
stopTime
0
# (- ∞, ∞)
eventOut
SFTime cycleTime
eventOut
SFFloat fraction_changed
eventOut
SFBool isActive
eventOut
SFTime time
}
Nút này tạo sự kiện theo thời gian. Dùng cho mục đích:
Mơ phỏng điều khiển và hình ảnh động
Điều khiển các hoạt động định kỳ
Khởi tạo sự kiện xảy ra duy nhất như đồng hồ báo thức
Thuộc tính
cycleInterval: Xác định số giây tạo ra các sự kiện, ví dụ có giá trị là 1.0 thì sẽ tạo ra các
sự kiện liên tiếp trong một giây.
enabled: Kích hoạt hay vơ hiệu hóa nút TimeSensor.
loop: Cho phép lặp hay không.
startTime: Thời gian bắt đầu chạy.
stopTime: Thời gian kết thúc chạy
set_startTime: Thiết lập lại thời gian bắt đầu chạy.
set_stopTime: Thiết lập lại thời gian kết thúc chạy.
set_enabled: Thiết lập lại trạng thái hoạt động.
Sự kiện
fraction_changed
Chỉ có khi sử dụng cycleInterval.
Gửi phần hoàn thành của chu kỳ hiện tại.
time
Gửi thời gian cho một đánh dấu mô phỏng(simulation tick).
Bắt đầu tại đánh dấu mô phỏng đầu tiên lớn hơn hay bằng startTime
Kết thúc tại stopTime hoặc tại startTime + N x cycleInterval với mỗi giá trị số
nguyên N hoặc lặp vô hạn tùy thuộc vào giá trị của trường khác.
isActive: Gửi giá trị TRUE khi nút TimeSensor bắt đầu chạy và FALSE khi dừng
lại.
cylcleTime: Gửi sự kiện thời gian ở startTime và vào lúc bắt đầu mỗi chu kỳ mới (hữu
ích cho việc đồng bộ hóa các đối tượng dựa trên thời gian)
Các sự kiện ra tạo ra liên tục.
Khi nút TimeSensor được kích hoạt nó tạo ra sự kiện isActive = TRUE và bắt đầu tạo
ra sự kiện time, fraction_change và cycleTime được chuyển đến các nút khác để điều
khiển ảnh động hoặc mô phỏng hành vi.