Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preparations for release 0.4 #46

Merged
merged 4 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 11 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,25 @@
# The AssetFetch Specification

**AssetFetch** is an HTTP- and JSON-based system for browsing, retrieving and handling/importing digital assets for media creation.
The AssetFetch Protocol aims to provide a standardized way for artists to browse libraries of downloadable assets offered by providers *outside* their current production environment/pipeline, such as those of commercial or non-profit 3D asset vendors, marketplaces or other repositories of models, textures or any other kind of digital assets.
The AssetFetch Protocol aims to provide a standardized way for artists to browse libraries of downloadable assets offered by providers *outside* their current production environment/pipeline, such as those of commercial or free 3D asset vendors, marketplaces or other repositories of models, textures or adjacent kinds of digital assets.

It aims to help in creating an artist experience similar to existing native integrations, such as proprietary import plugins like, with less development overhead in order to increase interoperability between vendors and applications and allow more vendors - especially smaller ones - to offer their assets to artists right in the applications where they need them.
It aims to create an artist experience similar to existing proprietary import plugins with less development overhead in order to increase interoperability between vendors and applications and allow more vendors - especially smaller ones - to offer their assets to artists right in the applications where they need them.

# Features

- Header-based Authentication using numerous methods and a login-system to show account balance
- Browsing assets with thumbnails, server-side searching and filtering, license data, author data and more
- Support for multiple resolutions, quality levels or any other kind of variation of assets
- Header-based Authentication.
- Browsing assets with thumbnails, server-side searching and filtering, license data, author data and more.
- Support for multiple resolutions, quality levels or any other kind of variation of assets.
- Support for zipped downloads: Providers can still send metadata for individual asset files, even if the actual download arrives in just one zip file.
- Ways for checking compatibility with different open or vendor-native formats: The provider offers metadata for multiple versions of the same asset which the client can use to judge whether it will be able to actually import the file BEFORE downloading it, as best as possible (100% certainty will be impossible).
- Support for dynamically generated asset downloads (think ticking boxes about which PBR maps you want and then getting a Zip file with exactly those maps)
- Purchasing assets (even composite assets that require multiple purchases) through an "asset unlocking" system. (The actual payment isn't handled by AF, users still need to sign up on the provider's website)
- Support for temporarily generated download links
- Ways of linking loose files together to cover "loose materials" (i.e. materials that arrive as just a bunch of material maps without any further files like .MTLX)
- Purchasing assets (even composite assets that require multiple purchases) through an "asset unlocking" system. The actual payment isn't handled by AF, users still need to sign up on the provider's website.
- Ways of linking loose files together to cover "loose materials" to make the distribution of PBR materials and HDRIs easier.
- Theming and branding options for providers with banner images, if the client chooses to display those.
- Custom metadata for common file formats, like which axis represents "up" in an .obj file.
- Custom metadata for common file formats.

# This is a Work-In-Progress
Everything here at the moment should be regarded as a starting-off point for future testing and discussion about how the transfer of 3D assets from vendors to clients can be made made more open and interoperable.

There are still numerous milestones to hit before a version 1.0 can be released. Among other things...
There are still numerous milestones to hit before a version 1.0 can be released:

- Create better examples for basically everything. This includes examples for every element of the specification as well as more general examples and user stories to better illustrate what AssetFetch is, how it works and the value it delivers both for asset vendors and users.

Expand All @@ -45,15 +42,10 @@ JSON-Schemas for AssetFetch are provided in the `/json-schema` subdirectory of t
The best way to contribute at this stage is by opening issues with questions, contradictions in the specifications, suggestions for datablocks or any other thoughts about the specification.

The specification document is written in markdown and therefore easily editable with any text editor.

The recommended environment for editing `spec.md` is Visual Studio Code with the following extensions:
However, the recommended environment for editing `spec.md` is Visual Studio Code with the following extensions:

- Markdown Preview Mermaid Support (`bierner.markdown-mermaid`)
- Markdown All-In-One (`yzhang.markdown-all-in-one`)

To maintain proper document structure, the commands "Format Document" and "Markdown-All-In-One: Add/Update section Numbers" should be used.

For checking the integrity of document links, [tcort/markdown-link-check](https://github.com/tcort/markdown-link-check) is recommended, invoked like this:
```
docker run -v ${PWD}:/tmp:ro --rm -i ghcr.io/tcort/markdown-link-check:stable /tmp/spec.md
```
All PRs are tested for dead markdown links and syntax issues in the JSON schema.
3 changes: 1 addition & 2 deletions json-schema/endpoint/asset_list.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,7 @@
},
"required": [
"implementation_list_query"
],
"$comment": "The 'allOf' section ensures that no two datablocks with the same prefix are used."
]
}
}
}
Expand Down
1 change: 0 additions & 1 deletion json-schema/endpoint/implementation_list.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
"additionalProperties": false,
"properties": {
"id": {
"$comment": "A unique id for this implementation.",
"type": "string",
"pattern": "[a-zA-Z0-9\\._]+"
},
Expand Down
2 changes: 1 addition & 1 deletion json-schema/template/variable_query.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
]
}
},
"$comment": "This if-clause ensures that the 'choices' array is required if and only if 'select' mode is used.",
"$comment": "This if-clause ensures that the 'choices' array is required only if 'select' mode is used.",
"if": {
"properties": {
"type": {
Expand Down
Loading