Crates.io | orphism |
lib.rs | orphism |
version | 0.3.0 |
source | src |
created_at | 2023-11-15 18:47:32.113762 |
updated_at | 2023-11-28 02:53:23.311501 |
description | a library for interacting with a certain format sometimes used for VTuber model assets |
homepage | |
repository | https://github.com/vtubing/orphism |
max_upload_size | |
id | 1036680 |
size | 23,732 |
As a VTuber, your model probably came with a bunch of files in a runtime
directory. orphism
is a library for the Rust programming language that lets
you load and interpret those files your own programs, assuming those programs
are written in Rust.
What you do from there is up to you.
While it may be possible to build some or all of those things using this library, they are all very deliberately out of scope for this project.
As a token of my gratitude for the VTubing community and all they do every day.
To open a path for other Rustaceans to build cool things in the VTubing space.
Run the following Cargo command in your project directory (assuming you have cargo-edit installed):
cargo add orphism
Or add the following line to your Cargo.toml
(in the [dependencies]
array):
orphism = "^ 0.2"
A minimal program might look something like this:
use orphism::Runtime;
use orphism::moc3::Model;
use std::path::PathBuf;
fn main() {
let runtime = Runtime::new_from_runtime_path(PathBuf::from("./path/to/model/runtime")).expect("failed to load runtime directory");
let moc3 = runtime.load_model().expect("failed to load model").data;
let model = Model::read(moc3).expect("failed to parse model");
}
orphism
primary revolves around two data types.
The Runtime
struct in orphism
represents the runtime/
directory that
contains your runtime model assets. This is essentially the state on disk, and
mechanisms for loading from that state.
Most runtimes contain a single model, along with other files relating to that
model, and orphism
will attempt to detect this. If there are multiple models
detected in a given runtime directory, it will return an error indicating the
issue, along with the path it was attempting to load from.
For these cases, there is a Runtime::new_from_model_path
that allows you to
disambiguate by targeting a specific model file.
One you have a Runtime
, you can call .load_model()
on it to load the Model
.
The Model
struct in orphism
represents the contents of those files, once
loaded and parsed. This is essentially the state in memory, and mechanisms for
accessing and using the data.
orphism
is made up of several related crates. The top-level crate is this one,
and it re-exports all the other sub-crates (with the exception of orphist
),
in addition to providing unified error handling.
If you don't need all of it, each of the supported data formats has a separate crate, so you can load only what you need for whatever you want to do.
There's also a command-line interface that's mostly useful for testing and validation.
orphism
is available under the MIT License. See LICENSE.txt
for the full text.
While the license is short, it's still written in fancy lawyer-speak. If you prefer more down-to-earth language, consider the following: