Pyffi

Latest version: v2.2.3

Safety actively analyzes 701507 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 14

1.2.2

============================

* cgf format:

- fixed various regression bugs that prevented qskope to run on cgf files

- updated to use the new data system

1.2.1

===========================

* nif format:

- new addIntegerExtraData function for NiObjectNET

1.2.0

============================

* installer directs to Python 2.5.4 if not installed

* using logging module for log messages

* nif format:

- swapping tangents and binormals in xml; renaming binormals to bitangents
(see http://www.terathon.com/code/tangent.html)

- updates for Fallout 3 format

- updated skin partition algorithm to work for Fallout 3

+ new triangles argument

+ new facemap argument to pre-define partitions (they will be split further
if needed to meet constraints)

+ sort vertex weight list by weight in skin partitions (except if padbones
is true; then sorted by bone index, to keep compatibility with ffvt3r)

+ option to maximize bone sharing

- mopps take material indices into account and compute welding info
(attempt to fix mopp multi-material issues, does not yet seem to work though)

- support for niftools bitflags by converting it to a bitstruct on the fly

- better algorithm for sending bones to bind position, including spells for
automating this function over a large number of nifs

- disable fast inverse in bind pos functions to increase numerical precision

- new algorithm to sync geometry bind poses, along with spell (this fixes
many issues with Morrowind imports and a few issues with Fallout 3 imports)

- more doctests for various functions

- a few more matrix functions (supNorm, substraction)

* dds format:

- updated to use the FileFormat.Data method (old inconvenient method removed)

* qskope:

- refactored the tree model

- all parenting functions are delegated to seperate DetailTree and GlobalTree
classes

- the DetailNode and GlobalNode classes only implement the minimal
functions to calculate the hierarchy, but no longer host the more
advanced hierarchy functions and data (this will save memory and
speed up regular use of pyffi outside qskope)

- EdgeFilter for generic edge type filtering; this is now a
parameter for every method that needs to list child nodes

1.1.0

============================

* nif format:

- a large number of functions have moved from the optimizer spell to
to the main interface, so they can be easily used in other scripts
without having to import this spell module
(getInterchangeableTriShape, getInterchangeableTriStrips,
isInterchangeable)

- new convenience functions in NiObjectNET, NiAVObject, and NiNode
(setExtraDatas, setProperties, setEffects, setChildren, etc.)

- updates for Fallout 3

* niftoaster

- new fix_addtangentspace spell to add missing tangent space blocks

- new fix_deltangentspace spell to remove tangent space blocks

- new fix_texturepath spell to change / into \ and to fix corrupted
newline characters (which sometimes resulted from older versions of
nifskope) in NiSourceTexture file paths

- new fix_clampmaterialalpha spell

- new fix_detachhavoktristripsdata spell

- the ffvt3r skin partition spell is now fix_ffvt3rskinpartition

- new opt_cleanreflists spell

- new opt_mergeduplicates spell

- new opt_geometry spell

- the optimize spell is now simply implemented as a combination of other
spells

* new internal implementation of bsdiff algorithm

* removed cry dae filter (an improved version of this filter is now
bundled with ColladaCGF)

* reorganization of file format description code

- all generic format description specific code has been moved to the
PyFFI.ObjectModels.FileFormat module

- all xml/xsd description specific code has been moved to the
PyFFI.ObjectModels.XML/XSD.FileFormat modules

- new NifFormat.Data class which now implements all the NIF file read and
write functions

* completely revamped spell system, which makes it much easier to customize
spells, and also enables more efficient implementations (thanks to tazpn for
some useful suggestions, see issue 2122196)

- toaster can call multiple spells at once

- toaster takes spell classes instead of modules

- for backwards compatibility, there is a class factory which turns any old
spell module into a new spell class (the Toaster class will automatically
convert any modules that it finds in its list of spells, so you do not need
to be worried about call the factory explicitly)

- early inspection of the header is possible, to avoid having to read all of
the file if no blocks of interest are present

- possibility to prevent the spell to cast itself on particular branches
(mostly useful to speed up the spell casting process)

- spells have callbacks for global initialization and finalization of
data within the toaster

- possibility to write output to a log file instead of to sys.stdout

- better messaging system (auto indentation, list nif tree as spell runs)

- support for spell hierarchies and spell grouping, in parallel or in series
or any combination of these

* replaced ad hoc class customization with partial classes (still wip
converting all the classes)

* xml object model expression parser

- implemented not operator

- expressions can combine multiple operators (only use this if the result
is independent of the order in which these operators are applied)

- new < and > operators

- support for vercond attribute for Fallout 3

* started on a new object model based on an ANTLR parser of a grammar aimed at
file format descriptions; this parser will eventually yield a more streamlined,
more optimized, and more customizable version of the current xml object model
(this is not yet bundled with the release, initial code is on svn)

1.0.5

============================

* niftoaster optimize

- fix for materials named skin, envmap2, etc. (issue 2121098)

- fix for empty source textures in texdesc (issue 2118481)

* niftoaster

- new spell to disable parallax (issue 2121283)

* toaster

- new options --diff and --patch to create and apply patches; interal
patcher uses bsdiff format, but you can also specify an arbitrary
external diff/patch command via --diff-cmd and --patch-cmd options
(the external command must take three arguments: oldfile, newfile,
and patchfile); note that this is still in experimental stage, not ready
for production use yet

1.0.4

============================

* niftoaster optimize

- morph data optimization (issue 2116594, fixes "bow" weapons)

Page 5 of 14

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.