niftools / blender_niftools_addon

The Blender Niftools Addon is a Blender add-on to enable import and export of NetImmese File Formats including .nif, .kf, .egm.
http://www.niftools.org
Other
385 stars 104 forks source link

Error when importing nifs from Fallout: New Vegas (and Fallout 3) #499

Closed SecretImbecile closed 2 years ago

SecretImbecile commented 2 years ago

@niftools/blender-niftools-addon-reviewer -

Before creating a new issue, ensure that

The issue will get closed off immediately as invalid if

Fill out the template below to the best of your ability, including .blend files, nifs, logs; help us to help you.

Issue Overview

When importing a vanilla mesh file from Fallout: New Vegas, a warning occurs when importing the collision geometry. This same error message is then presented as an error when attempting to export the same file, causing the export to fail

Version Information

Blender Niftools Addon Version Info

0.0.13

Blender Version Info

3.0.0

Platform information

Windows 10 (64-bit)

Context

Warning produced on import Error produced on export As described above

Steps to Reproduce

  1. Import a vanilla dungeon mesh from Fallout:New Vegas
  2. An warning appears when importing
  3. An error appears when exporting, causing it to fail

Here's my .blend after attempting the import

Expected Result

The file imports without error

Actual Result

An error appears when exporting, causing it to fail

Possible Fix

As discussed with a developer:

It looks like it's getting stuck on the part where it's setting the penetration depth of the imported collision. Mind you, that also means it wouldn't import anything past that. And, of course, it prevents export.

Screenshot

blender-error

Logs and Files

Info Bar Output

Python: Traceback (most recent call last):
  File "C:\Users\Jack\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\operators\nif_import_op.py", line 127, in execute
    return NifImport(self, context).execute()
  File "C:\Users\Jack\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\nif_import.py", line 75, in execute
    self.load_files()  # needs to be first to provide version info.
  File "C:\Users\Jack\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\nif_import.py", line 141, in load_files
    NifData.init(NifFile.load_nif(NifOp.props.filepath))
  File "C:\Users\Jack\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\file_io\nif.py", line 57, in load_nif
    with open(file_path, "rb") as nif_stream:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Jack\\Documents\\'

location: <unknown location>:-1

Console Output

log-import.txt log-export.txt

Blend File

Blend FIle 2022-01-07.zip

Nif File

offrmwall01.zip

Similar Known Issues

May be related to other issues with collision data. Not certain if any match exactly.

Additional Information

I've also tested with a Fallout 3 nif and got the same result. (I assume the shared assets are identical files)

SecretImbecile commented 2 years ago

Upon further testing, this issue appears to be specific to Blender 3.0.0

neomonkeus commented 2 years ago

Thanks for investigating further. Created some labels to start identifying there types of version/backwards compatibility issues as we have a few starting to crop up atm. We have either had to revert things out as not supported by older versions and probably would want to put them back later once we drop older version support or for these type tickets where newer versions not being backwards compatible.

memoz commented 2 years ago

Similar issue with Fallout 4:

Executing - Niftools : Blender Niftools Addon v0.0.13(running on Blender 3.0.0, PyFFI 2.2.4.dev3)
Importing E:\Modding\work\ARX-7\Meshes\Armor\Gundam\ARX-8\ARX-7\ARX7PA_Body.nif
NIF file version: 14020007
Reading file
Python: Traceback (most recent call last):
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\operators\nif_import_op.py", line 127, in execute
    return NifImport(self, context).execute()
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\nif_import.py", line 75, in execute
    self.load_files()  # needs to be first to provide version info.
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\nif_import.py", line 141, in load_files
    NifData.init(NifFile.load_nif(NifOp.props.filepath))
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\file_io\nif.py", line 64, in load_nif
    data.read(nif_stream)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\dependencies\pyffi\formats\nif\__init__.py", line 1297, in read
    self.header.read(stream, data=self)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\dependencies\pyffi\object_models\xml\struct_.py", line 373, in read
    attr_value.read(stream, data)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\dependencies\pyffi\object_models\xml\array.py", line 303, in read
    elem.read(stream, data)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\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 (0x465F5C3A at 0x00000063)

location: <unknown location>:-1

File from this mod: https://www.nexusmods.com/fallout4/mods/32643

neomonkeus commented 2 years ago

Similar issue with Fallout 4:

Executing - Niftools : Blender Niftools Addon v0.0.13(running on Blender 3.0.0, PyFFI 2.2.4.dev3)
Importing E:\Modding\work\ARX-7\Meshes\Armor\Gundam\ARX-8\ARX-7\ARX7PA_Body.nif
NIF file version: 14020007
Reading file
Python: Traceback (most recent call last):
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\operators\nif_import_op.py", line 127, in execute
    return NifImport(self, context).execute()
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\nif_import.py", line 75, in execute
    self.load_files()  # needs to be first to provide version info.
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\nif_import.py", line 141, in load_files
    NifData.init(NifFile.load_nif(NifOp.props.filepath))
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\file_io\nif.py", line 64, in load_nif
    data.read(nif_stream)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\dependencies\pyffi\formats\nif\__init__.py", line 1297, in read
    self.header.read(stream, data=self)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\dependencies\pyffi\object_models\xml\struct_.py", line 373, in read
    attr_value.read(stream, data)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\io_scene_niftools\dependencies\pyffi\object_models\xml\array.py", line 303, in read
    elem.read(stream, data)
  File "C:\Users\spot\AppData\Roaming\Blender Foundation\Blender\3.0\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 (0x465F5C3A at 0x00000063)

location: <unknown location>:-1

File from this mod: https://www.nexusmods.com/fallout4/mods/32643

Fallout 4 support has nothing to do with this.

memoz commented 2 years ago

Fallout 4 support has nothing to do with this.

Oh, my bad. Sorry about that.

neomonkeus commented 2 years ago

Fallout 4 support has nothing to do with this.

Oh, my bad. Sorry about that.

No worries, here is a discussion thread you can follow - https://github.com/niftools/blender_niftools_addon/discussions/473 The two active devs are actively reworking our file library to support new versions into our format description which will ultimately lead to new game support.