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
dotnet
command (.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.1
Windows, 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.dll
You 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
DebuggerDisplayAttribute
to 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
byteSize
is not 4 inNextDataOfSize
method.
- 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)