v を更新
48
v.md
48
v.md
@@ -60,27 +60,39 @@ use std::thread::sleep;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
let target = "127.0.0.1:39539";
|
let target = "127.0.0.1:39539";
|
||||||
|
|
||||||
// Blink
|
println!("Sending blink to {}", target);
|
||||||
for value in [0.0, 0.5, 1.0, 0.5, 0.0] {
|
|
||||||
send(&socket, target, "Blink", value);
|
// Blink animation (same as airse-vmc do_blink)
|
||||||
sleep(Duration::from_millis(40));
|
for i in 0..=5 {
|
||||||
}
|
let value = if i <= 2 { i as f32 / 2.0 } else { (5 - i) as f32 / 2.0 };
|
||||||
|
println!(" Blink: {}", value);
|
||||||
|
blink(&socket, target, value);
|
||||||
|
sleep(Duration::from_millis(30));
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Done");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send(socket: &UdpSocket, target: &str, name: &str, value: f32) {
|
fn blink(socket: &UdpSocket, target: &str, value: f32) {
|
||||||
let msg = OscMessage {
|
// Send all three Blink blend shapes (like airse-vmc)
|
||||||
addr: "/VMC/Ext/Blend/Val".into(),
|
for name in &["Blink", "Blink_L", "Blink_R"] {
|
||||||
args: vec![OscType::String(name.into()), OscType::Float(value)],
|
let msg = OscMessage {
|
||||||
};
|
addr: "/VMC/Ext/Blend/Val".to_string(),
|
||||||
let buf = rosc::encoder::encode(&OscPacket::Message(msg)).unwrap();
|
args: vec![OscType::String(name.to_string()), OscType::Float(value)],
|
||||||
socket.send_to(&buf, target).unwrap();
|
};
|
||||||
|
let buf = rosc::encoder::encode(&OscPacket::Message(msg)).unwrap();
|
||||||
|
socket.send_to(&buf, target).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
// Apply
|
// Apply
|
||||||
let apply = OscMessage { addr: "/VMC/Ext/Blend/Apply".into(), args: vec![] };
|
let apply = OscMessage {
|
||||||
let buf = rosc::encoder::encode(&OscPacket::Message(apply)).unwrap();
|
addr: "/VMC/Ext/Blend/Apply".to_string(),
|
||||||
socket.send_to(&buf, target).unwrap();
|
args: vec![],
|
||||||
|
};
|
||||||
|
let buf = rosc::encoder::encode(&OscPacket::Message(apply)).unwrap();
|
||||||
|
socket.send_to(&buf, target).unwrap();
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Reference in New Issue
Block a user