NekoMDL

From Valve Developer Community
Jump to navigation Jump to search

Stub

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

NekoMDL is a fork of StudioMDL with additional features.

Features

  • Increased limits
  • 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