mirror of
https://github.com/mii443/rust-openvr.git
synced 2025-08-22 16:25:36 +00:00
62 lines
2.0 KiB
Rust
62 lines
2.0 KiB
Rust
extern crate openvr;
|
|
|
|
pub fn main () {
|
|
{
|
|
// init vr system
|
|
let system = match openvr::init() {
|
|
Ok(ivr) => ivr,
|
|
Err(err) => {
|
|
println!("Failed to create IVRSystem subsystem {:?}", err);
|
|
return;
|
|
}
|
|
};
|
|
|
|
// init camera subsystem
|
|
let camera = match openvr::subsystems::tracked_camera() {
|
|
Ok(ivr) => ivr,
|
|
Err(err) => {
|
|
println!("Failed to create IVRTrackedCamera subsystem {:?}", err);
|
|
return;
|
|
}
|
|
};
|
|
|
|
// look for tracked devices with a camera
|
|
let mut camera_device = None;
|
|
for device in system.tracked_devices(0.0).connected_iter() {
|
|
if camera.has_camera(&device).unwrap_or(false) {
|
|
println!("Tracked Device with camera found, ID: {}", device.index);
|
|
println!("\t{:?}", device.device_class());
|
|
println!("\t{:?}", camera.frame_size(&device, openvr::tracked_camera::CameraFrameType::MaximumUndistorted));
|
|
println!("\t{:?}", camera.intrinisics(&device, openvr::tracked_camera::CameraFrameType::MaximumUndistorted));
|
|
|
|
camera_device = Some(device.clone());
|
|
}
|
|
}
|
|
|
|
// make sure camera is available
|
|
if camera_device.is_none() {
|
|
println!("No tracked device with camera found. Exiting..");
|
|
|
|
openvr::shutdown();
|
|
return;
|
|
}
|
|
|
|
// create stream
|
|
let stream = camera.stream(&camera_device.unwrap()).unwrap_or_else(|err| {
|
|
println!("Could not start stream to camera: {}", err.message());
|
|
openvr::shutdown();
|
|
panic!("");
|
|
});
|
|
|
|
let frame = stream.read(openvr::tracked_camera::CameraFrameType::MaximumUndistorted).unwrap_or_else(|err| {
|
|
println!("Could not read from camera stream: {}", err.message());
|
|
openvr::shutdown();
|
|
panic!("");
|
|
});
|
|
|
|
println!("Frame Data recieved! {:?}", frame);
|
|
}
|
|
|
|
openvr::shutdown();
|
|
}
|