NekoMDL: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Changelog, since it's truncated on workshop page)
Line 17: Line 17:


{{expand|title=Changelog|<pre>
{{expand|title=Changelog|<pre>
v2.1.1
; v2.1.1
Increase the maximum number of flexed vertices to 511451.
* Increase the maximum number of flexed vertices to 511451.
New qc command: $FileBufferSize; default is 8mb. if your model has very much detail, or very much animation, a larger file buffer will be needed. Increase its size appropriately to prevent compilation failures, and the compiler will also take more memory.
* New qc command: $FileBufferSize; default is 8mb. if your model has very much detail, or very much animation, a larger file buffer will be needed. Increase its size appropriately to prevent compilation failures, and the compiler will also take more memory.


v2.1.0
; v2.1.0
glTF&Assimp: fix wrong end frame causing compilation failure
* glTF&Assimp: fix wrong end frame causing compilation failure
Fix the bug that $CmdList can't be parsed
* Fix the bug that $CmdList can't be parsed


v2.0.5
; v2.0.5
Increase the maximum number of vertices in a single source file to 51w (511451), beyond which it will be split automatically.
* Increase the maximum number of vertices in a single source file to 51w (511451), beyond which it will be split automatically.
make sure $NoDecal is turned on in vmt, or make sure the number of vertices in each source file does not exceed 65536.
: make sure $NoDecal is turned on in vmt, or make sure the number of vertices in each source file does not exceed 65536.
Fix a bug that prevented compilation.
* Fix a bug that prevented compilation.


v2.0.4
; v2.0.4
New $Animation option: AppendScale
* New $Animation option: AppendScale
Fix a bug in glTF reading
* Fix a bug in glTF reading


v2.0.3
; v2.0.3
New command: $NoFastGltf
* New command: $NoFastGltf
Fix some bugs
* Fix some bugs


v2.0.2
; v2.0.2
Fixed inability to correctly parse filenames without extensions.
* Fixed inability to correctly parse filenames without extensions.
Using caching to improve loading speed of 'innode' options.
* Using caching to improve loading speed of 'innode' options.
glTF and Assimp: fix the animation used by default when ‘pick’ is not used.
* glTF and Assimp: fix the animation used by default when ‘pick’ is not used.


v2.0.1
; v2.0.1
Fix 'InNode' error.
* Fix 'InNode' error.


v2.0
; v2.0
glTF support for animation, default up axis changed to Y, support for node transforms。
* glTF support for animation, default up axis changed to Y, support for node transforms。
Throw away the FBX sdk.
* Throw away the FBX sdk.
Use Assimp model loading library, supports over 40 formats including FBX, PMX, VRM. Support for Animation/SceneNode/Mesh/MorphTarget.
* Use Assimp model loading library, supports over 40 formats including FBX, PMX, VRM. Support for Animation/SceneNode/Mesh/MorphTarget.
https://github.com/assimp/assimp/blob/master/doc/Fileformats.md
: https://github.com/assimp/assimp/blob/master/doc/Fileformats.md
New qc command: $FPS, sets the default animation frame rate and the animation sampling rate for glTF or Assimp.
* New qc command: $FPS, sets the default animation frame rate and the animation sampling rate for glTF or Assimp.
New source file parameters: 'InNode', 'SampleRate', 'Pick'. Ability to load part of the meshs or one of multiple animations in a single file. Only support glTF&Assimp(FBX..).
* New source file parameters: 'InNode', 'SampleRate', 'Pick'. Ability to load part of the meshs or one of multiple animations in a single file. Only support glTF&Assimp(FBX..).
More details in the NewCommands.qci file.
* More details in the NewCommands.qci file.
$UpAxis added parameters: 'glTF', 'Assimp'
* $UpAxis added parameters: 'glTF', 'Assimp'
DMX: Does not display an error when a vertex has too many influenced bones.
* DMX: Does not display an error when a vertex has too many influenced bones.


v1.4.1
; v1.4.1
New commands: $JiggleBoneRealign, $ReverseJiggleBoneRotation.
* New commands: $JiggleBoneRealign, $ReverseJiggleBoneRotation.
Use meshoptimizer instead of forsyth to optimize vertex caching, nvtristrip is no longer recommended.
* Use meshoptimizer instead of forsyth to optimize vertex caching, nvtristrip is no longer recommended.


v1.4.0
; v1.4.0
Upgrading to 64-bit.
* Upgrading to 64-bit.
The program is completely independent and no longer depends on the external vphysics.dll.
* The program is completely independent and no longer depends on the external vphysics.dll.
Floating point numbers support scientific notation.
* Floating point numbers support scientific notation.
Fixed the problem that after using $PushD, the source file with the absolute path could not be read normally.
* Fixed the problem that after using $PushD, the source file with the absolute path could not be read normally.
$IF macro support || operator.
* $IF macro support || operator.


v1.3.3
; v1.3.3
Fix $NekoDriverBone not supporting bones with “.” bone names
* Fix $NekoDriverBone not supporting bones with “.” bone names
Fix not recognizing source files with uppercase suffixes in qc.
* Fix not recognizing source files with uppercase suffixes in qc.


v1.3.2
; v1.3.2
Adjust the maximum number of materials to 128。
* Adjust the maximum number of materials to 128。
Use UTF8 encoding.
* Use UTF8 encoding.


v1.3.1
; v1.3.1
Fix a bug in $DefineVariable.
* Fix a bug in $DefineVariable.
Fix a bug in $EndIF.
* Fix a bug in $EndIF.


v1.3.0
; v1.3.0
The $if command supports '==' and '!=' expressions.
* The $if command supports '==' and '!=' expressions.
Fixed unused bones not collapsing.
* Fixed unused bones not collapsing.


v1.2.0
; v1.2.0
When the obj model cannot find the material texture, use the material name instead of "debugempty".
* When the obj model cannot find the material texture, use the material name instead of "debugempty".
obj model $Scale support.
obj model $Scale support.
Enter standalone mode when the command line parameter does not include "-game".
* Enter standalone mode when the command line parameter does not include "-game".
Added qc commands: $if,$ifdef,$elif,$eldef,$else,$endif,$UndefineVariable,$Msg.
* Added qc commands: $if,$ifdef,$elif,$eldef,$else,$endif,$UndefineVariable,$Msg.
Supports defining variables through command line parameters, usage: [-D<variable_name> <value>]
* Supports defining variables through command line parameters, usage: [-D<variable_name> <value>]


v1.1.0
; v1.1.0
Added fbx animation support.
* Added fbx animation support.


v1.0.3
; v1.0.3
Added "debris" as a valid option for $Contents.
* Added "debris" as a valid option for $Contents.


v1.0.2
; v1.0.2
Fixed: Will not collapse bones with vertex weights.
* Fixed: Will not collapse bones with vertex weights.
Changed: Bones that have only been used by $Attachment will not collapse.
* Changed: Bones that have only been used by $Attachment will not collapse.


v1.0.1
; v1.0.1
Changed: Do not collapse bones with no vertex weights used by $Attachments and $Bonemerge.
* Changed: Do not collapse bones with no vertex weights used by $Attachments and $Bonemerge.


v1.0
; v1.0
Added: $NekoModel flex related parameters for FBX and DMX support. The usage can be found in the example qc.
* Added: $NekoModel flex related parameters for FBX and DMX support. The usage can be found in the example qc.
Added: Fallback to use FBXSDK to parse fbx files, upgrade sdk version to 2020.3.2.
* Added: Fallback to use FBXSDK to parse fbx files, upgrade sdk version to 2020.3.2.
Added: Use the libraries required for static linking, no more dlls. note that when compiling models with $CollisionJoints, need to load vphysics.dll in the game directory.
* Added: Use the libraries required for static linking, no more dlls. note that when compiling models with $CollisionJoints, need to load vphysics.dll in the game directory.
Added: Does not compare sequence differences with the mdl file to be overwritten. This can be turned on with the command line parameter [-checksequenceorder].
* Added: Does not compare sequence differences with the mdl file to be overwritten. This can be turned on with the command line parameter [-checksequenceorder].
Added: Hot reloading hlmv without checking if the title bar is the same as $ModelName.
* Added: Hot reloading hlmv without checking if the title bar is the same as $ModelName.


v0.9.4
; v0.9.4
Fixed: When the driver bone of $NekoDriverBone is the parent of a procedural bone, the angle calculation of the procedural bone is incorrect.
* Fixed: When the driver bone of $NekoDriverBone is the parent of a procedural bone, the angle calculation of the procedural bone is incorrect.
Added: New command line parameter: "[-reloadhlmv]", which will hot-reload HLMV after successful compilation.
* Added: New command line parameter: "[-reloadhlmv]", which will hot-reload HLMV after successful compilation.


v0.9.3
; v0.9.3
Added: New command line parameter "[-blender <path>]", tells the compiler the directory where the Blender executable is located.
* Added: New command line parameter "[-blender <path>]", tells the compiler the directory where the Blender executable is located.
Changed: Call Blender to convert FBX to glTF. FBX now has the same functions as glTF. No longer dependent on fbxsdk.
* Changed: Call Blender to convert FBX to glTF. FBX now has the same functions as glTF. No longer dependent on fbxsdk.




v0.9.2
; v0.9.2
Added command line parameter [-maxbones <number>] to set the maximum number of bones in the compiled model
* Added command line parameter [-maxbones <number>] to set the maximum number of bones in the compiled model


v0.9.0 ~ v0.9.1
; v0.9.0 ~ v0.9.1
Changed: Modify the file buffer size in other places, now the entire model can have up to 1 million triangles.
* Changed: Modify the file buffer size in other places, now the entire model can have up to 1 million triangles.
Fixed: When automatically splitting a model with too high number of vertices, the split part will become an empty model.
* Fixed: When automatically splitting a model with too high number of vertices, the split part will become an empty model.
Added: support for glTF unskinned meshes.
* Added: support for glTF unskinned meshes.
Fixed: glTF does not support $lod command.
* Fixed: glTF does not support $lod command.


v0.8.0
; v0.8.0
Changed: Increase the buffer size for writing files to prevent high-polygon models from causing memory overflow and crashes.
* Changed: Increase the buffer size for writing files to prevent high-polygon models from causing memory overflow and crashes.
Changed: New icon
* Changed: New icon


v0.7.0
; v0.7.0
Added: $NekoModel supports eyeball and eyelid options
* Added: $NekoModel supports eyeball and eyelid options
Changed: The maximum number of cmds for animation is 128
* Changed: The maximum number of cmds for animation is 128
Added: gltf mesh $scale support
* Added: gltf mesh $scale support
Added: Apply $scale and animation parameter scale when reading animation parameter "forceboneposrot"
* Added: Apply $scale and animation parameter scale when reading animation parameter "forceboneposrot"
Added: $scale support for dmxeyelid, eyelid, eyeball
* Added: $scale support for dmxeyelid, eyelid, eyeball


v0.6.2
; v0.6.2
Fixed: Parameter "-outdir" does not support relative paths
* Fixed: Parameter "-outdir" does not support relative paths


v0.6.1
; v0.6.1
Added: command line parameters "-modelname"&"-outdir"
* Added: command line parameters "-modelname"&"-outdir"
Added: glb morph targer(shape key) support
* Added: glb morph targer(shape key) support


v0.6.0
; v0.6.0
Added: support gltf morph targer, glb not supported yet
* Added: support gltf morph targer, glb not supported yet
Added: new qc command "$NekoModel", support gltf using flex
* Added: new qc command "$NekoModel", support gltf using flex
Changed: $hbox does not write information about the capsule
* Changed: $hbox does not write information about the capsule
Fixed: "noautodmxrules" causes error report
* Fixed: "noautodmxrules" causes error report
Changed: $NekoDriverBone logic, supported bone collapse
* Changed: $NekoDriverBone logic, supported bone collapse


v0.5.1
; v0.5.1
Fixed: "$NekoDriverBone" position calculation error
* Fixed: "$NekoDriverBone" position calculation error
Fixed: When loading mdl in the game, the console reported an error that Keyvalues was missing "{"
* Fixed: When loading mdl in the game, the console reported an error that Keyvalues was missing "{"


v0.5.0
; v0.5.0
Added: "$forcecapsules", the compiler will skip processing this command to prevent errors.
* Added: "$forcecapsules", the compiler will skip processing this command to prevent errors.
Added: ".gltf" & ".glb" format support, flex or animation are not supported yet.
* Added: ".gltf" & ".glb" format support, flex or animation are not supported yet.
        The blender process uses the glb format the fastest. The following is a simple test:
The blender process uses the glb format the fastest. The following is a simple test:
        (136908 triangular face, divided into four parts, no flex)
(136908 triangular face, divided into four parts, no flex)
        Export: glb 12.2s | dmx 65.8s | smd 55.7s
Export: glb 12.2s | dmx 65.8s | smd 55.7s
        Compile: glb 1.15s | dmx 1.73s | smd 17.72s
Compile: glb 1.15s | dmx 1.73s | smd 17.72s


v0.4.1
; v0.4.1
Adjusted: Maximum "$Animation" is 4096
* Adjusted: Maximum "$Animation" is 4096


v0.4.0
; v0.4.0
Changed: parameter "-usenvtristrip" changed to "-nvtristrip"
* Changed: parameter "-usenvtristrip" changed to "-nvtristrip"
Fixed: $Keyvalues error reported in the console when loading mdl in the game
* Fixed: $Keyvalues error reported in the console when loading mdl in the game
Added: new qc command "$NekoDriverBone"
* Added: new qc command "$NekoDriverBone"


v0.3.1
; v0.3.1
Added: FBX format support (need to add a line of code "$prefer_fbx" to QC before use)
* Added: FBX format support (need to add a line of code "$prefer_fbx" to QC before use)
Added: Use Forsyth's model optimization algorithm (faster) instead of the default Nvidia algorithm (the parameter -usenvtristrip uses the old algorithm, slower)
* Added: Use Forsyth's model optimization algorithm (faster) instead of the default Nvidia algorithm (the parameter -usenvtristrip uses the old algorithm, slower)
Changed: The program uses 32-bit and turns on large memory support to ensure compatibility
* Changed: The program uses 32-bit and turns on large memory support to ensure compatibility
Fixed: Unable to compile collision mesh
* Fixed: Unable to compile collision mesh
Changed: compatible with model 15 dmx (please use model 18 for new dmx export)
* Changed: compatible with model 15 dmx (please use model 18 for new dmx export)
Adjusted: maximum Sequences is 2048
* Adjusted: maximum Sequences is 2048
Adjusted: Lower the maximum material limit to 64 to save memory
* Adjusted: Lower the maximum material limit to 64 to save memory
Fixed: some bugs
* Fixed: some bugs
Changed: the message printed by the console
* Changed: the message printed by the console
Changed: the compilation time is printed when the compilation is completed
* Changed: the compilation time is printed when the compilation is completed
Changed: the information starting with "CDynamicFunction:" is not printed
* Changed: the information starting with "CDynamicFunction:" is not printed
Fixed: Automatic splitting of meshes with an excess number of vertices causing compilation failure
* Fixed: Automatic splitting of meshes with an excess number of vertices causing compilation failure


v0.2-dev
; v0.2-dev
Adjusted: Bone weight culling lower than 5% is reduced to 0.01%
* Adjusted: Bone weight culling lower than 5% is reduced to 0.01%
Adjusted: Maximum vertices is 655360
* Adjusted: Maximum vertices is 655360
Adjusted: Maximum faces is 218,453
* Adjusted: Maximum faces is 218,453
Adjusted: Maximum materials is 128
* Adjusted: Maximum materials is 128
Adjusted: Maximum bones is 129
* Adjusted: Maximum bones is 129
</pre>}}
</pre>}}



Revision as of 11:40, 11 August 2024

Stub

This article or section is a stub. You can help by expanding it.

NekoMDL is a fork of StudioMDL with additional features.

Features

  • 64-bit with no dependancies; can run standalone
  • Faster compilation (using new algorithm instead of nvtristrip, https://github.com/zeux/meshoptimizer)
  • Wikipedia icon glTF support, including animation and flexes.(using https://github.com/spnda/fastgltf)
  • FBX support, including animation and flexes. (using Assimp, indirectly supports nearly 40 formats. https://github.com/assimp/assimp/blob/master/doc/Fileformats.md)
  • Single-file glTF or FBX: support for reading part of the scene tree; support for multiple animations
  • Two commands for setting the $jigglebone axis.
  • Simple way to configure many procedural bones
  • $contents can be set to "debris", to be solid to VPhysics and bullets, but nonsolid to QPhysics.
  • Set variables that are used dependent upon command line parameters. (-Dvar=val)
  • New command line arguments: -modelname, -outdir, -reloadhlmv
  • Conditional macros: $if, $ifdef, $else, $elif, $eldef, $endif
  • Some new qc commands, see newcommands.qci in the distribution file for details.
Changelog
; v2.1.1
* Increase the maximum number of flexed vertices to 511451.
* New qc command: $FileBufferSize; default is 8mb. if your model has very much detail, or very much animation, a larger file buffer will be needed. Increase its size appropriately to prevent compilation failures, and the compiler will also take more memory.

; v2.1.0
* glTF&Assimp: fix wrong end frame causing compilation failure
* Fix the bug that $CmdList can't be parsed

; v2.0.5
* Increase the maximum number of vertices in a single source file to 51w (511451), beyond which it will be split automatically.
: make sure $NoDecal is turned on in vmt, or make sure the number of vertices in each source file does not exceed 65536.
* Fix a bug that prevented compilation.

; v2.0.4
* New $Animation option: AppendScale
* Fix a bug in glTF reading

; v2.0.3
* New command: $NoFastGltf
* Fix some bugs

; v2.0.2
* Fixed inability to correctly parse filenames without extensions.
* Using caching to improve loading speed of 'innode' options.
* glTF and Assimp: fix the animation used by default when ‘pick’ is not used.

; v2.0.1
* Fix 'InNode' error.

; v2.0
* glTF support for animation, default up axis changed to Y, support for node transforms。
* Throw away the FBX sdk.
* Use Assimp model loading library, supports over 40 formats including FBX, PMX, VRM. Support for Animation/SceneNode/Mesh/MorphTarget.
: https://github.com/assimp/assimp/blob/master/doc/Fileformats.md
* New qc command: $FPS, sets the default animation frame rate and the animation sampling rate for glTF or Assimp.
* New source file parameters: 'InNode', 'SampleRate', 'Pick'. Ability to load part of the meshs or one of multiple animations in a single file. Only support glTF&Assimp(FBX..).
* More details in the NewCommands.qci file.
* $UpAxis added parameters: 'glTF', 'Assimp'
* DMX: Does not display an error when a vertex has too many influenced bones.

; v1.4.1
* New commands: $JiggleBoneRealign, $ReverseJiggleBoneRotation.
* Use meshoptimizer instead of forsyth to optimize vertex caching, nvtristrip is no longer recommended.

; v1.4.0
* Upgrading to 64-bit.
* The program is completely independent and no longer depends on the external vphysics.dll.
* Floating point numbers support scientific notation.
* Fixed the problem that after using $PushD, the source file with the absolute path could not be read normally.
* $IF macro support || operator.

; v1.3.3
* Fix $NekoDriverBone not supporting bones with “.” bone names
* Fix not recognizing source files with uppercase suffixes in qc.

; v1.3.2
* Adjust the maximum number of materials to 128。
* Use UTF8 encoding.

; v1.3.1
* Fix a bug in $DefineVariable.
* Fix a bug in $EndIF.

; v1.3.0
* The $if command supports '==' and '!=' expressions.
* Fixed unused bones not collapsing.

; v1.2.0
* When the obj model cannot find the material texture, use the material name instead of "debugempty".
obj model $Scale support.
* Enter standalone mode when the command line parameter does not include "-game".
* Added qc commands: $if,$ifdef,$elif,$eldef,$else,$endif,$UndefineVariable,$Msg.
* Supports defining variables through command line parameters, usage: [-D<variable_name> <value>]

; v1.1.0
* Added fbx animation support.

; v1.0.3
* Added "debris" as a valid option for $Contents.

; v1.0.2
* Fixed: Will not collapse bones with vertex weights.
* Changed: Bones that have only been used by $Attachment will not collapse.

; v1.0.1
* Changed: Do not collapse bones with no vertex weights used by $Attachments and $Bonemerge.

; v1.0
* Added: $NekoModel flex related parameters for FBX and DMX support. The usage can be found in the example qc.
* Added: Fallback to use FBXSDK to parse fbx files, upgrade sdk version to 2020.3.2.
* Added: Use the libraries required for static linking, no more dlls. note that when compiling models with $CollisionJoints, need to load vphysics.dll in the game directory.
* Added: Does not compare sequence differences with the mdl file to be overwritten. This can be turned on with the command line parameter [-checksequenceorder].
* Added: Hot reloading hlmv without checking if the title bar is the same as $ModelName.

; v0.9.4
* Fixed: When the driver bone of $NekoDriverBone is the parent of a procedural bone, the angle calculation of the procedural bone is incorrect.
* Added: New command line parameter: "[-reloadhlmv]", which will hot-reload HLMV after successful compilation.

; v0.9.3
* Added: New command line parameter "[-blender <path>]", tells the compiler the directory where the Blender executable is located.
* Changed: Call Blender to convert FBX to glTF. FBX now has the same functions as glTF. No longer dependent on fbxsdk.


; v0.9.2
* Added command line parameter [-maxbones <number>] to set the maximum number of bones in the compiled model

; v0.9.0 ~ v0.9.1
* Changed: Modify the file buffer size in other places, now the entire model can have up to 1 million triangles.
* Fixed: When automatically splitting a model with too high number of vertices, the split part will become an empty model.
* Added: support for glTF unskinned meshes.
* Fixed: glTF does not support $lod command.

; v0.8.0
* Changed: Increase the buffer size for writing files to prevent high-polygon models from causing memory overflow and crashes.
* Changed: New icon

; v0.7.0
* Added: $NekoModel supports eyeball and eyelid options
* Changed: The maximum number of cmds for animation is 128
* Added: gltf mesh $scale support
* Added: Apply $scale and animation parameter scale when reading animation parameter "forceboneposrot"
* Added: $scale support for dmxeyelid, eyelid, eyeball

; v0.6.2
* Fixed: Parameter "-outdir" does not support relative paths

; v0.6.1
* Added: command line parameters "-modelname"&"-outdir"
* Added: glb morph targer(shape key) support

; v0.6.0
* Added: support gltf morph targer, glb not supported yet
* Added: new qc command "$NekoModel", support gltf using flex
* Changed: $hbox does not write information about the capsule
* Fixed: "noautodmxrules" causes error report
* Changed: $NekoDriverBone logic, supported bone collapse

; v0.5.1
* Fixed: "$NekoDriverBone" position calculation error
* Fixed: When loading mdl in the game, the console reported an error that Keyvalues was missing "{"

; v0.5.0
* Added: "$forcecapsules", the compiler will skip processing this command to prevent errors.
* Added: ".gltf" & ".glb" format support, flex or animation are not supported yet.
 The blender process uses the glb format the fastest. The following is a simple test:
 (136908 triangular face, divided into four parts, no flex)
 Export: glb 12.2s | dmx 65.8s | smd 55.7s
 Compile: glb 1.15s | dmx 1.73s | smd 17.72s

; v0.4.1
* Adjusted: Maximum "$Animation" is 4096

; v0.4.0
* Changed: parameter "-usenvtristrip" changed to "-nvtristrip"
* Fixed: $Keyvalues error reported in the console when loading mdl in the game
* Added: new qc command "$NekoDriverBone"

; v0.3.1
* Added: FBX format support (need to add a line of code "$prefer_fbx" to QC before use)
* Added: Use Forsyth's model optimization algorithm (faster) instead of the default Nvidia algorithm (the parameter -usenvtristrip uses the old algorithm, slower)
* Changed: The program uses 32-bit and turns on large memory support to ensure compatibility
* Fixed: Unable to compile collision mesh
* Changed: compatible with model 15 dmx (please use model 18 for new dmx export)
* Adjusted: maximum Sequences is 2048
* Adjusted: Lower the maximum material limit to 64 to save memory
* Fixed: some bugs
* Changed: the message printed by the console
* Changed: the compilation time is printed when the compilation is completed
* Changed: the information starting with "CDynamicFunction:" is not printed
* Fixed: Automatic splitting of meshes with an excess number of vertices causing compilation failure

; v0.2-dev
* Adjusted: Bone weight culling lower than 5% is reduced to 0.01%
* Adjusted: Maximum vertices is 655360
* Adjusted: Maximum faces is 218,453
* Adjusted: Maximum materials is 128
* Adjusted: Maximum bones is 129

External links