niftools / pyffi

PyFFI is a Python library for processing block structured files.
http://www.niftools.org/pyffi
Other
47 stars 26 forks source link

Error parsing NIF files from Spellbinder Demo #75

Open egore opened 3 years ago

egore commented 3 years ago

@niftools/pyffi-reviewers

Issue Overview

Opening any .NIF file in blender from https://archive.org/details/SpellbinderTheNexusConflictDemo fails.

Version Information

Pyffi Version Info

2.2.4.dev3

Platform information

Linux 5.10.9-arch1-1 #1 SMP PREEMPT Tue, 19 Jan 2021 22:06:06 +0000 x86_64 GNU/Linux

Steps to Reproduce

  1. Download the exe
  2. Install it
  3. Try to import Fem1.NIF (or any other file) into blender using the 0.0.3 NIF addon.

Logs and Files

niftools:INFO:Importing /home/.wine/drive_c/mythic/spellbinder/figures/Fem1.NIF
niftools:INFO:NIF file version: 2030000
niftools:INFO:Reading file
pyffi.nif.data:DEBUG:Reading header at 0x00000000
pyffi.nif.data:DEBUG:Version 0x02030000
pyffi.nif.data.struct:DEBUG:Array:copyright
pyffi.nif.data.array:DEBUG:Reading array of size 3
pyffi.nif.data:DEBUG:Reading NiMaterialProperty block at 0x0000009A
pyffi.nif.data.struct:DEBUG:* NiMaterialProperty.name = b'' : type <class 'pyffi.formats.nif.NifFormat.string'> at 0x0000009A offset 154 -
pyffi.nif.data.struct:DEBUG:* NiMaterialProperty.has_old_extra_data = False : type <class 'pyffi.formats.nif.NifFormat.bool'> at 0x0000009E offset 158 -
pyffi.nif.data.struct:DEBUG:* NiMaterialProperty.unknown_byte = 0 : type <class 'pyffi.object_models.common.UByte'> at 0x000000A2 offset 162 -
pyffi.nif.data.struct:DEBUG:Color3:ambient_color
pyffi.nif.data.struct:DEBUG:* Color3.r = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000A3 offset 163 -
pyffi.nif.data.struct:DEBUG:* Color3.g = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000A7 offset 167 -
pyffi.nif.data.struct:DEBUG:* Color3.b = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000AB offset 171 -
pyffi.nif.data.struct:DEBUG:Color3:diffuse_color
pyffi.nif.data.struct:DEBUG:* Color3.r = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000AF offset 175 -
pyffi.nif.data.struct:DEBUG:* Color3.g = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000B3 offset 179 -
pyffi.nif.data.struct:DEBUG:* Color3.b = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000B7 offset 183 -
pyffi.nif.data.struct:DEBUG:Color3:specular_color
pyffi.nif.data.struct:DEBUG:* Color3.r = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000BB offset 187 -
pyffi.nif.data.struct:DEBUG:* Color3.g = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000BF offset 191 -
pyffi.nif.data.struct:DEBUG:* Color3.b = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000C3 offset 195 -
pyffi.nif.data.struct:DEBUG:Color3:emissive_color
pyffi.nif.data.struct:DEBUG:* Color3.r = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000C7 offset 199 -
pyffi.nif.data.struct:DEBUG:* Color3.g = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000CB offset 203 -
pyffi.nif.data.struct:DEBUG:* Color3.b = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000CF offset 207 -
pyffi.nif.data.struct:DEBUG:* NiMaterialProperty.glossiness = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000D3 offset 211 -
pyffi.nif.data.struct:DEBUG:* NiMaterialProperty.alpha = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000D7 offset 215 -
pyffi.nif.data:DEBUG:Reading NiClod block at 0x000000E9
pyffi.nif.data.struct:DEBUG:* NiClod.name = b'' : type <class 'pyffi.formats.nif.NifFormat.string'> at 0x000000E9 offset 233 -
pyffi.nif.data.struct:DEBUG:* NiClod.has_old_extra_data = False : type <class 'pyffi.formats.nif.NifFormat.bool'> at 0x000000FA offset 250 -
pyffi.nif.data.struct:DEBUG:* NiClod.unknown_byte = 0 : type <class 'pyffi.object_models.common.UByte'> at 0x000000FE offset 254 -
pyffi.nif.data.struct:DEBUG:Vector3:translation
pyffi.nif.data.struct:DEBUG:* Vector3.x = 0 : type <class 'pyffi.object_models.common.Float'> at 0x000000FF offset 255 -
pyffi.nif.data.struct:DEBUG:* Vector3.y = 0 : type <class 'pyffi.object_models.common.Float'> at 0x00000103 offset 259 -
pyffi.nif.data.struct:DEBUG:* Vector3.z = 0 : type <class 'pyffi.object_models.common.Float'> at 0x00000107 offset 263 -
pyffi.nif.data.struct:DEBUG:Matrix33:rotation
pyffi.nif.data.struct:DEBUG:* Matrix33.m_11 = 1.0 : type <class 'pyffi.object_models.common.Float'> at 0x0000010B offset 267 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_21 = 0.0 : type <class 'pyffi.object_models.common.Float'> at 0x0000010F offset 271 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_31 = 0.0 : type <class 'pyffi.object_models.common.Float'> at 0x00000113 offset 275 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_12 = 0.0 : type <class 'pyffi.object_models.common.Float'> at 0x00000117 offset 279 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_22 = 1.0 : type <class 'pyffi.object_models.common.Float'> at 0x0000011B offset 283 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_32 = 0.0 : type <class 'pyffi.object_models.common.Float'> at 0x0000011F offset 287 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_13 = 0.0 : type <class 'pyffi.object_models.common.Float'> at 0x00000123 offset 291 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_23 = 0.0 : type <class 'pyffi.object_models.common.Float'> at 0x00000127 offset 295 -
pyffi.nif.data.struct:DEBUG:* Matrix33.m_33 = 1.0 : type <class 'pyffi.object_models.common.Float'> at 0x0000012B offset 299 -
pyffi.nif.data.struct:DEBUG:* NiClod.scale = 1.0 : type <class 'pyffi.object_models.common.Float'> at 0x0000012F offset 303 -
pyffi.nif.data.struct:DEBUG:Vector3:velocity
pyffi.nif.data.struct:DEBUG:* Vector3.x = 0 : type <class 'pyffi.object_models.common.Float'> at 0x00000133 offset 307 -
pyffi.nif.data.struct:DEBUG:* Vector3.y = 0 : type <class 'pyffi.object_models.common.Float'> at 0x00000137 offset 311 -
pyffi.nif.data.struct:DEBUG:* Vector3.z = 0 : type <class 'pyffi.object_models.common.Float'> at 0x0000013B offset 315 -
pyffi.nif.data.struct:DEBUG:* NiClod.num_properties = 0 : type <class 'pyffi.object_models.common.UInt'> at 0x0000013F offset 319 -
pyffi.nif.data.struct:DEBUG:Array:properties
pyffi.nif.data.array:DEBUG:Reading array of size 1
pyffi.nif.data.struct:DEBUG:Array:unknown_1
pyffi.nif.data.array:DEBUG:Reading array of size 4
pyffi.nif.data.struct:DEBUG:* NiClod.unknown_2 = 0 : type <class 'pyffi.object_models.common.UByte'> at 0x00000157 offset 343 -
pyffi.nif.data.struct:DEBUG:* NiClod.data = None : type <class 'pyffi.formats.nif.NifFormat.Ref'> at 0x00000158 offset 344 -
Python: Traceback (most recent call last):
File "/home/.config/blender/2.91/scripts/addons/io_scene_niftools/operators/nif_import_op.py", line 121, in execute
    return NifImport(self, context).execute()
File "/home/.config/blender/2.91/scripts/addons/io_scene_niftools/nif_import.py", line 74, in execute
    self.load_files()  # needs to be first to provide version info.
File "/home/.config/blender/2.91/scripts/addons/io_scene_niftools/nif_import.py", line 144, in load_files
    NifData.init(NifFile.load_nif(NifOp.props.filepath))
File "/home/.config/blender/2.91/scripts/addons/io_scene_niftools/file_io/nif.py", line 64, in load_nif
    data.read(nif_stream)
File "/home/.config/blender/2.91/scripts/addons/io_scene_niftools/dependencies/pyffi/formats/nif/__init__.py", line 1318, in read
    top_level_str.read(stream, data=self)
File "/home/.config/blender/2.91/scripts/addons/io_scene_niftools/dependencies/pyffi/object_models/common.py", line 667, in read
    raise ValueError('string too long (0x%08X at 0x%08X)'
ValueError: string too long (0xB6C4523E at 0x00000160)
location: <unknown location>:-1