starting with rerun bindings
parent
c85d762ecf
commit
9df43797a1
File diff suppressed because it is too large
Load Diff
|
|
@ -1,8 +1,9 @@
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
members = [
|
members = [
|
||||||
"lua_modules/filesystem"
|
"lua_modules/filesystem",
|
||||||
|
"lua_modules/rerun_lua"
|
||||||
]
|
]
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
mlua = { version = "0.9.1", features = ["lua54", "module"] }
|
mlua = { version = "0.9.1", features = ["lua54", "module", "serde"] }
|
||||||
4
justfile
4
justfile
|
|
@ -5,6 +5,10 @@ run-fs: (lua "fs.example.lua")
|
||||||
build-filesystem: (_copy-so "dev" "filesystem")
|
build-filesystem: (_copy-so "dev" "filesystem")
|
||||||
deploy-fs: (_deploy "filesystem")
|
deploy-fs: (_deploy "filesystem")
|
||||||
|
|
||||||
|
run-rr: (lua "rr.example.lua")
|
||||||
|
build-rr: (_copy-so "dev" "rerun_lua")
|
||||||
|
deploy-rr: (_deploy "rerun_lua")
|
||||||
|
|
||||||
lua file:
|
lua file:
|
||||||
LUA_CPATH=c_modules/?.so lua lua/{{file}}
|
LUA_CPATH=c_modules/?.so lua lua/{{file}}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
local rr = require("rerun_lua")
|
||||||
|
|
||||||
|
local record = rr.recording("example")
|
||||||
|
|
||||||
|
record:image("54-0.png", "/Users/tbr/Desktop/00054-0.png")
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
mod zip_sink;
|
// mod zip_sink;
|
||||||
|
|
||||||
use crate::resource::{Resource, ResourceInputStream};
|
use crate::resource::{Resource, ResourceInputStream};
|
||||||
|
|
||||||
pub trait ResourceSink {
|
pub trait ResourceSink {
|
||||||
fn add_file(&mut self, input_stream: DynResourceInputStream) {}
|
// fn add_file(&mut self, input_stream: DynResourceInputStream) {}
|
||||||
}
|
}
|
||||||
pub type DynResourceSink = Box<dyn ResourceSink>;
|
pub type DynResourceSink = Box<dyn ResourceSink>;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
[package]
|
||||||
|
name = "rerun_lua"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
image = { version = "0.24.7", features = ["png", "jpeg", "tiff"] }
|
||||||
|
mlua = { workspace = true }
|
||||||
|
rerun = "0.8.2"
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
use std::fmt::format;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use mlua::AnyUserData;
|
||||||
|
use mlua::prelude::*;
|
||||||
|
use rerun::{MsgSender, RecordingStream, RecordingStreamBuilder};
|
||||||
|
use rerun::components::Tensor;
|
||||||
|
|
||||||
|
fn recording(lua: &Lua, name: String) -> LuaResult<AnyUserData> {
|
||||||
|
let stream = RecordingStreamBuilder::new(name)
|
||||||
|
.connect(rerun::default_server_addr(), None)
|
||||||
|
.map_err(|err| LuaError::RuntimeError(err.to_string()))?;
|
||||||
|
lua.create_any_userdata(stream)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn register_bindings(lua: &Lua) -> LuaResult<()> {
|
||||||
|
lua.register_userdata_type::<RecordingStream>(|reg|{
|
||||||
|
reg.add_method("image", |lua, this, (entity_path, image_path): (String,String)| {
|
||||||
|
// let image = ImageReader::open(image_path.as_str())
|
||||||
|
// .map_err(|error| LuaError::RuntimeError(format!("Could not open image file: {}. Error: {}", image_path, error)))?
|
||||||
|
// .decode()
|
||||||
|
// .map_err(|error| LuaError::RuntimeError(format!("Could not read image file: {}. Error: {}", image_path, error)))?;
|
||||||
|
let image_tensor = Tensor::from_image_file(PathBuf::from(image_path.as_str()).as_path())
|
||||||
|
.map_err(|error| LuaError::RuntimeError(format!("Could not read image file {image_path}. Error: {error}")))?;
|
||||||
|
MsgSender::new(entity_path)
|
||||||
|
.with_timeless(true)
|
||||||
|
.with_component(&[image_tensor])
|
||||||
|
.map_err(|error| LuaError::RuntimeError(format!("Could not send message: {}", error)))?
|
||||||
|
.send(this)
|
||||||
|
.map_err(|error| LuaError::RuntimeError(format!("Could not send message {error}")))?;
|
||||||
|
Ok(())
|
||||||
|
});
|
||||||
|
})?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[mlua::lua_module]
|
||||||
|
fn rerun_lua(lua: &Lua) -> LuaResult<LuaTable> {
|
||||||
|
register_bindings(lua)?;
|
||||||
|
let exports = lua.create_table()?;
|
||||||
|
exports.set("recording", lua.create_function(recording)?)?;
|
||||||
|
Ok(exports)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue