NekoMDL

From Valve Developer Community
Revision as of 11:34, 11 August 2024 by SirYodaJedi (talk | contribs) (Changelog, since it's truncated on workshop page)
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

  • 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