Skip to content

Repository files navigation

YSMViewer

A cross-platform 3D model viewer for .ysm files — Encrypted binary format used for Minecraft player models. Built with Avalonia.

Live Preview

Try it in your browser: YSMViewer Live

Quick Start

git clone https://github.com/DrAbcOfficial/YSMViewer.git
cd YSMViewer
dotnet build YSMViewer.slnx
dotnet run --project YSMViewer.Desktop

Open a .ysm file via Open YSM button or launch with a file:

dotnet run --project YSMViewer.Desktop -- path/to/model.ysm
  • SDK: .NET 10.0

Camera Controls

Operation Desktop Browser
Orbit Left mouse drag Left mouse drag
Zoom Mouse scroll / middle mouse drag Mouse scroll / pinch
Pan Right mouse drag Right mouse drag
Reset view Bottom bar Reset button Bottom bar Reset button
Front view Bottom bar Front button Bottom bar Front button
Left view Bottom bar Left button Bottom bar Left button
Top view Bottom bar Top button Bottom bar Top button

Project Structure

Project Target Purpose
YSMViewer/ net10.0 Shared UI library: Views, ViewModels, Services, 3D scene
YSMViewer.Core/ net10.0 Shared parsing/model library consumed by all other projects
YSMViewer.Desktop/ net10.0 Desktop launcher
YSMViewer.Browser/ net10.0-browser (WASM) Browser launcher
ThumbnailProviders/YSMViewer.ThumbnailProvider/ net10.0 NativeAOT thumbnail rendering library
ThumbnailProviders/YSMViewer.ThumbnailProvider.Win/ Native (C++/COM) Windows Explorer thumbnail provider
ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/ Native (C) Linux XDG thumbnailer CLI
ThumbnailProviders/YSMViewer.ThumbnailProvider.OSX/ Objective-C macOS Quick Look thumbnail provider

Windows Thumbnail Provider

Build & register from a Visual Studio x64 Native Tools command prompt:

# Build C# library
dotnet publish ThumbnailProviders/YSMViewer.ThumbnailProvider -c Release -r win-x64 -o publish/thumbnail-win

# Build native COM wrapper
msbuild ThumbnailProviders\YSMViewer.ThumbnailProvider.Win\YSMViewer.ThumbnailProvider.Win.vcxproj /p:Configuration=Release /p:OutDir="%cd%\publish\thumbnail-win\"

# Register (admin required)
.\publish\thumbnail-win\install.ps1

# Unregister
.\publish\thumbnail-win\uninstall.ps1

Linux XDG Thumbnail Provider

The XDG thumbnailer uses MIME application/vnd.ysm.model+encrypted and covers file managers that honor freedesktop thumbnailers, such as Nautilus, Nemo, Caja, and Thunar. KDE Dolphin may require a future KIO plugin for first-class support.

# Publish NativeAOT rendering library
dotnet publish ThumbnailProviders/YSMViewer.ThumbnailProvider -c Release -r linux-x64 -o publish/thumbnail-xdg

# Build CLI
make -C ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG BUILD_DIR="$PWD/publish/thumbnail-xdg"

# Copy metadata and install scripts
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/ysm.thumbnailer.in publish/thumbnail-xdg/
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/application-vnd-ysm-model-encrypted.xml publish/thumbnail-xdg/
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/install.sh publish/thumbnail-xdg/
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/uninstall.sh publish/thumbnail-xdg/
chmod +x publish/thumbnail-xdg/ysm-thumbnailer

# Install (user-level)
./publish/thumbnail-xdg/install.sh

macOS Thumbnail Provider

The macOS provider is a minimal Objective-C Quick Look generator that loads the NativeAOT rendering library from the generator bundle.

Note: I do not have a macOS machine. The OSX thumbnail provider can only be compile-checked via CI; no runtime testing is possible.

dotnet publish ThumbnailProviders/YSMViewer.ThumbnailProvider -c Release -r osx-arm64 -o publish/thumbnail-osx/native
make -C ThumbnailProviders/YSMViewer.ThumbnailProvider.OSX BUILD_DIR="$PWD/publish/thumbnail-osx" NATIVE_LIB="$PWD/publish/thumbnail-osx/native/libYSMViewer.ThumbnailProvider.dylib"

Tech Stack

Acknowledgements

About

YSM model Viewer

Topics

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages