Neutrino/README.md

61 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2021-08-17 21:57:58 +00:00
# Neutrino
2021-08-17 23:27:24 +00:00
## A flexible exchange format for 3D scene data
2021-08-17 22:01:04 +00:00
> A neutrino is a fermion (an elementary particle) that interacts only via the weak interaction and gravity. The neutrino is so named because it is electrically neutral and because its rest mass is so small that it was long thought to be zero. The rest mass of the neutrino is much smaller than that of the other known elementary particles excluding massless particles. Neutrinos typically pass through normal matter unimpeded and undetected.
- [Neutrino on Wikipedia](https://en.wikipedia.org/wiki/Neutrino)
## Goals/properties of the format
Neutrino should have:
2021-08-17 22:12:16 +00:00
1. Reliable core data structure
2021-08-17 22:01:04 +00:00
3. Simple cross-platform integration
2021-08-17 22:12:16 +00:00
4. Safe extensibility
2021-08-17 22:01:04 +00:00
2021-08-17 22:12:16 +00:00
### Reliable core data structure
2021-08-17 22:01:04 +00:00
- No redundancy
2021-08-17 22:12:16 +00:00
- Explicit data types
2021-08-17 22:01:04 +00:00
- No junk data (anything that isn't universally relevant to the vast majority of 3D software)
2021-08-17 22:18:50 +00:00
- Non-hierarchical structure which can facilitate conversion between different softwares' conventions
- *For example: Many softwares use DAGs (Directed Acyclic Graphs) to structure their scenes, but not all of them. Neutrino should not be limited to any specific software's convention.*
2021-08-17 22:01:04 +00:00
### Human-readable syntax
- Clear, categorical data hierarchy (meshes → transforms, materials → texture maps, etc.)
2021-08-17 22:12:16 +00:00
- Stored via an ASCII format which can be directly opened and read by users
2021-08-17 22:01:04 +00:00
- Verbose data structures with simple English names (for example, named location/rotation/scale arrays in a transform dictionary rather than a nameless array of arrays which looks like Matrix code) (similar philosophy to Python and Ruby syntax)
### Simple cross-platform integration
- No application-specific data structures
2021-08-17 22:12:16 +00:00
### Safe extensibility
2021-08-17 22:01:04 +00:00
- Should be able to support arbitrary, additional data for specific pipeline needs
- Additional data will be discarded by the Neutrino preprocessor if it's not recognized by the target application. The core data structure can never be modified since it's the fallback.
# Format specification
*Note: This is very much a work-in-progress.*
## Neutrino Alpha
### Example
2021-08-17 22:12:16 +00:00
```
2021-08-30 20:07:33 +00:00
@{
string,
float,
int
}
#{
2:"100"
}
*{
&0,
0:"Hello, world! Here's a bunch of special characters: @#*{},,/|,{{}#@*",
1:"512.0",
&0
2021-08-17 22:01:04 +00:00
}
```