PMX file parser library of C#, which is thread-safe and zero-allocation.
PMX file is MMD (Miku Miku Dance) model file.
This parser parses PMX file into structual C# class.
This is just a parser, so drawing 3D models is NOT SUPPORTED in this library.
Parsing from file name
var pmx = MMDTools.PMXParser.Parse("your_file.pmx");Parsing from Stream
using(var stream = System.IO.File.OpenRead(fileName))
{
var pmx = MMDTools.PMXParser.Parse(stream);
}MMDTools.Unmanaged.PMXParser
You can use it instead of MMDTools.PMXParser.
MMDTools.Unmanaged.PMXParser parses data into MMDTools.Unmanaged.PMXObject, as MMDTools.PMXParser do that into MMDTools.PMXObject.
MMDTools.Unmanaged.PMXObject has all data in unmanaged memory,
and it can be released explicitly by calling Dispose().
using(var stream = System.IO.File.OpenRead(fileName))
using(var pmx = MMDTools.Unmanaged.PMXParser(stream))
{
Console.WriteLine(pmx.Name.ToString());
}- C# 8.0
dotnetcommand (.NET Core CLI Tools)
The package is published on Nuget.
https://www.nuget.org/packages/PMXParser
# nuget package manager
PM> Install-Package PMXParser -Version 1.1.1Windows, Mac, Linux
$ git clone https://github.com/ikorin24/PMXParser.git
$ cd PMXParser
$ dotnet build PMXParser/PMXParser.csproj -c Release
# ---> PMXParser/bin/Release/netstandard2.0/PMXParser.dllYou can see the format of PMX in a text of PmxEditor, download from the following link. Download zip and extract 'PmxEditor/Lib/PMX仕様書/PMX仕様.txt'. (It is written in Japanese)
NOTICE
PmxEditor is NOT MY PRODUCTION.
http://kkhk22.seesaa.net/category/14045227-1.html
Author : ikorin24
This repository is under MIT License.
This repository contains some licensed products. The list of them and their license are HERE.
First Release
Bug fix and performance improvement a little
- Add .NET Framework version
- Add
DebuggerDisplayAttributeto some types
- Change target .NET version into .NET Standard 2.1 and 2.0.
- Fix small bugs.
- Fix a big bug.
- Parse incorrect value in case of
byteSizeis not 4 inNextDataOfSizemethod.
- Parse incorrect value in case of
- Add parser for unmanaged memory version. (in namespace
MMDTools.Unmanaged) - Fix a bug in multi-thread.
- Fix some other bugs.
- Fix bags
- Add target frameworks (netstandard2.1, netcoreapp3.1, net5.0)