It's hard to believe setting the freaking alpha property is this
complicated.
This commit is contained in:
parent
9ab6010ad8
commit
597fcd2f64
12 changed files with 142 additions and 10 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -7,3 +7,5 @@
|
||||||
/build/
|
/build/
|
||||||
node_modules/
|
node_modules/
|
||||||
*.blend[0-9]*
|
*.blend[0-9]*
|
||||||
|
.venv/*
|
||||||
|
!.venv/DONT_DELETE
|
1
.python-version
Normal file
1
.python-version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.7.9
|
0
.venv/DONT_DELETE
Normal file
0
.venv/DONT_DELETE
Normal file
9
.vscode/launch.json
vendored
9
.vscode/launch.json
vendored
|
@ -4,6 +4,15 @@
|
||||||
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Python: Aktuelle Datei",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"python": "${command:python.interpreterPath}",
|
||||||
|
"program": "${file}",
|
||||||
|
"args": ["--", "${workspaceFolder}/plugin/Data/Meshes/_EQ_ItemRoulette/roulette_container_final.nif"],
|
||||||
|
"console": "integratedTerminal"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "papyrus",
|
"type": "papyrus",
|
||||||
"name": "Skyrim",
|
"name": "Skyrim",
|
||||||
|
|
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"python.pythonPath": "${workspaceFolder}/.venv/Scripts/python.exe",
|
||||||
|
"jupyter.jupyterServerType": "local"
|
||||||
|
}
|
53
Makefile
53
Makefile
|
@ -1,4 +1,4 @@
|
||||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/c/ProgramData/chocolatey/bin:$(SystemRoot)/System32/WindowsPowerShell/v1.0
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/c/ProgramData/chocolatey/bin:$(SystemRoot)/System32:$(SystemRoot)/System32/WindowsPowerShell/v1.0:$(word 1,$(HOME) $(USERPROFILE))/.pyenv/pyenv-win/bin
|
||||||
|
|
||||||
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
current_dir := $(patsubst %/,%,$(dir $(mkfile_path)))
|
current_dir := $(patsubst %/,%,$(dir $(mkfile_path)))
|
||||||
|
@ -40,17 +40,36 @@ plugin/Data/Scripts/%.pex: Source/Scripts/%.psc
|
||||||
|
|
||||||
textures: $(textureFiles)
|
textures: $(textureFiles)
|
||||||
|
|
||||||
|
pipenv: .venv/pyvenv.cfg
|
||||||
|
|
||||||
plugin/Data/Textures/_EQ_ItemRoulette/%.dds: Source/Textures/_EQ_ItemRoulette/%.xcf export_gimp_textures.py
|
plugin/Data/Textures/_EQ_ItemRoulette/%.dds: Source/Textures/_EQ_ItemRoulette/%.xcf export_gimp_textures.py
|
||||||
GIMP=$$(powershell -Command '(Get-Item "$(ProgramW6432)/GIMP*/bin/gimp-console*.exe").FullName')
|
GIMP=$$(powershell -Command '(Get-Item "$(ProgramW6432)/GIMP*/bin/gimp-console*.exe").FullName')
|
||||||
"$$GIMP" -n -i --batch-interpreter python-fu-eval -b 'import export_gimp_textures ; export_gimp_textures.main("$<", "$@")'
|
"$$GIMP" -n -i --batch-interpreter python-fu-eval -b 'import export_gimp_textures ; export_gimp_textures.main("$<", "$@")'
|
||||||
|
|
||||||
|
.venv/lib/site-packages/pyffi/formats/kfm/kfmxml/kfm.xml:
|
||||||
|
mkdir -p "$(dir $@)"
|
||||||
|
powershell -Command 'Invoke-WebRequest -Uri "https://raw.githubusercontent.com/niftools/kfmxml/develop/kfm.xml" -OutFile "$@"'
|
||||||
|
|
||||||
|
.venv/lib/site-packages/pyffi/formats/nif/nifxml/nif.xml:
|
||||||
|
mkdir -p "$(dir $@)"
|
||||||
|
powershell -Command 'Invoke-WebRequest -Uri "https://raw.githubusercontent.com/niftools/nifxml/959cb9c3dd59a319e60e819fc8a1402f821f3684/nif.xml" -OutFile "$@"'
|
||||||
|
|
||||||
|
.PRECIOUS: .venv/pyvenv.cfg
|
||||||
|
.venv/pyvenv.cfg: Pipfile .venv/lib/site-packages/pyffi/formats/nif/nifxml/nif.xml .venv/lib/site-packages/pyffi/formats/kfm/kfmxml/kfm.xml
|
||||||
|
pyenv install $$(cat ".python-version")
|
||||||
|
pyenv exec pip install --user pipenv
|
||||||
|
pyenv exec python -m pipenv install
|
||||||
|
|
||||||
models: $(modelFiles) textures
|
models: $(modelFiles) textures
|
||||||
|
|
||||||
|
.PRECIOUS: build/ChunkMerge/ChunkMerge.exe
|
||||||
build/ChunkMerge/ChunkMerge.exe: build/chunkmerge.7z
|
build/ChunkMerge/ChunkMerge.exe: build/chunkmerge.7z
|
||||||
7z x -y "-obuild" "$<"
|
7z x -y "-obuild" "$<"
|
||||||
|
touch -c "$@"
|
||||||
|
|
||||||
|
.PRECIOUS: build/chunkmerge.7z
|
||||||
build/chunkmerge.7z:
|
build/chunkmerge.7z:
|
||||||
powershell -Command 'Invoke-WebRequest -Uri "https://github.com/downloads/skyfox69/NifUtils/ChunkMerge0155.7z" -OutFile build/chunkmerge.7z'
|
powershell -Command 'Invoke-WebRequest -Uri "https://github.com/downloads/skyfox69/NifUtils/ChunkMerge0155.7z" -OutFile "$@"'
|
||||||
|
|
||||||
build/ChunkMerge/ChunkMerge.xml: build/ChunkMerge/ChunkMerge.exe
|
build/ChunkMerge/ChunkMerge.xml: build/ChunkMerge/ChunkMerge.exe
|
||||||
cat > "$@" <<'HERE'
|
cat > "$@" <<'HERE'
|
||||||
|
@ -100,12 +119,30 @@ plugin/Data/Meshes/_EQ_ItemRoulette/%_final.nif: Source/Meshes/_EQ_ItemRoulette/
|
||||||
build/ChunkMerge/ChunkMerge.exe &
|
build/ChunkMerge/ChunkMerge.exe &
|
||||||
powershell -Command '$$env:ChunkMerge_NifFile=Split-Path (Join-Path "$@" "."); $$env:ChunkMerge_CollisionFile=Split-Path (Join-Path "$(filter %_collision.nif,$^)" ".") ; $$env:ChunkMerge_TemplateFile="$(notdir $(filter %_template.nif,$^))" ; Start-Process -Wait -FilePath AutoHotKey -ArgumentList @("ChunkMerge.ahk") ; Stop-Process -Name ChunkMerge'
|
powershell -Command '$$env:ChunkMerge_NifFile=Split-Path (Join-Path "$@" "."); $$env:ChunkMerge_CollisionFile=Split-Path (Join-Path "$(filter %_collision.nif,$^)" ".") ; $$env:ChunkMerge_TemplateFile="$(notdir $(filter %_template.nif,$^))" ; Start-Process -Wait -FilePath AutoHotKey -ArgumentList @("ChunkMerge.ahk") ; Stop-Process -Name ChunkMerge'
|
||||||
|
|
||||||
|
.PRECIOUS: build/blender-windows64/blender.exe
|
||||||
|
build/blender-windows64/blender.exe: build/blender.zip build/blender-windows64/2.93/scripts/addons/io_scene_niftools/__init__.py
|
||||||
|
7z x -y "-obuild" "$<"
|
||||||
|
touch -c "$@"
|
||||||
|
|
||||||
|
.PRECIOUS: build/blender-windows64/2.93/scripts/addons/io_scene_niftools/__init__.py
|
||||||
|
build/blender-windows64/2.93/scripts/addons/io_scene_niftools/__init__.py: build/blender-niftools.zip
|
||||||
|
7z x -y "-o$$(dirname "$$(dirname "$@")")" "$<"
|
||||||
|
touch -c "$@"
|
||||||
|
|
||||||
|
.PRECIOUS: build/blender-niftools.zip
|
||||||
|
build/blender-niftools.zip:
|
||||||
|
powershell -Command 'Invoke-WebRequest -Uri "https://github.com/niftools/blender_niftools_addon/releases/download/v0.0.6/blender_niftools_addon-v0.0.6-2021-04-24-fa4123d.zip" -OutFile "$@"'
|
||||||
|
|
||||||
|
.PRECIOUS: build/blender.zip
|
||||||
|
build/blender.zip:
|
||||||
|
powershell -Command 'Invoke-WebRequest -Uri "https://mirror.clarkson.edu/blender/release/Blender2.93/blender-2.93.0-windows-x64.zip" -OutFile "$@"'
|
||||||
|
|
||||||
.PRECIOUS: plugin/Data/Meshes/_EQ_ItemRoulette/%_mesh.nif
|
.PRECIOUS: plugin/Data/Meshes/_EQ_ItemRoulette/%_mesh.nif
|
||||||
plugin/Data/Meshes/_EQ_ItemRoulette/%_mesh.nif: Source/Meshes/_EQ_ItemRoulette/%_mesh.blend
|
plugin/Data/Meshes/_EQ_ItemRoulette/%_mesh.nif: Source/Meshes/_EQ_ItemRoulette/%_mesh.blend build/blender-windows64/blender.exe
|
||||||
BLENDER=$$(powershell -Command '(Get-Item "$(ProgramW6432)/Blender*/Blender*/blender.exe").FullName')
|
BLENDER="$(word 2, $^)"
|
||||||
"$$BLENDER" --background --python "./export_blender_models.py" -- "$^" "$@"
|
"$$BLENDER" --background --python "./export_blender_models.py" -- "$<" "$@"
|
||||||
|
|
||||||
.PRECIOUS: plugin/Data/Meshes/_EQ_ItemRoulette/%_collision.nif
|
.PRECIOUS: plugin/Data/Meshes/_EQ_ItemRoulette/%_collision.nif
|
||||||
plugin/Data/Meshes/_EQ_ItemRoulette/%_collision.nif: Source/Meshes/_EQ_ItemRoulette/%_collision.blend
|
plugin/Data/Meshes/_EQ_ItemRoulette/%_collision.nif: Source/Meshes/_EQ_ItemRoulette/%_collision.blend build/blender-windows64/blender.exe
|
||||||
BLENDER=$$(powershell -Command '(Get-Item "$(ProgramW6432)/Blender*/Blender*/blender.exe").FullName')
|
BLENDER="$(word 2, $^)"
|
||||||
"$$BLENDER" --background --python "./export_blender_models.py" -- "$^" "$@"
|
"$$BLENDER" --background --python "./export_blender_models.py" -- "$<" "$@"
|
9
Pipfile
Normal file
9
Pipfile
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[[source]]
|
||||||
|
url = "https://pypi.python.org/simple"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
pyqt4 = {file = "https://download.lfd.uci.edu/pythonlibs/q4trcu4l/PyQt4-4.11.4-cp37-cp37m-win_amd64.whl"}
|
||||||
|
pyffi = {file = "https://github.com/amorilia/pyffi/archive/refs/tags/pyffi-2.2.2.zip"}
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.7.9"
|
33
Pipfile.lock
generated
Normal file
33
Pipfile.lock
generated
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "bb61dfe357ea16e199e93ef79d83cabdc7fef8a99c5376ba3a5a6aa2428f4eeb"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.7.9"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"url": "https://pypi.python.org/simple"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"pyffi": {
|
||||||
|
"file": "https://github.com/amorilia/pyffi/archive/refs/tags/pyffi-2.2.2.zip",
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2ebdeb86e29e9b532b40fe61b6005e0d29973f2f7e966dbb9fc9c1f4680fa3ca"
|
||||||
|
],
|
||||||
|
"version": "==2.2.2"
|
||||||
|
},
|
||||||
|
"pyqt4": {
|
||||||
|
"file": "https://download.lfd.uci.edu/pythonlibs/q4trcu4l/PyQt4-4.11.4-cp37-cp37m-win_amd64.whl",
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3bd04c8576ffdc6db3b991642d1657fcee4df803c869a97d11a6eaab1445d59a"
|
||||||
|
],
|
||||||
|
"version": "==4.11.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
|
@ -63,7 +63,7 @@ if($InstallDependencies) {
|
||||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
||||||
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
||||||
|
|
||||||
choco install blender gimp 7zip autohotkey make nodejs
|
choco install gimp 7zip autohotkey make nodejs pyenv-win
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,10 @@ try:
|
||||||
index = argv.index("--") + 1
|
index = argv.index("--") + 1
|
||||||
except ValueError:
|
except ValueError:
|
||||||
index = len(argv)
|
index = len(argv)
|
||||||
|
|
||||||
argv = argv[index:]
|
argv = argv[index:]
|
||||||
|
|
||||||
|
bpy.ops.preferences.addon_enable(module='io_scene_niftools')
|
||||||
|
|
||||||
curdir = Path(__file__).parent
|
curdir = Path(__file__).parent
|
||||||
blend_path = Path(argv[0])
|
blend_path = Path(argv[0])
|
||||||
nif_path = Path(argv[1])
|
nif_path = Path(argv[1])
|
||||||
|
|
2
nif.xml
2
nif.xml
|
@ -111,9 +111,11 @@
|
||||||
A standard 32-bit floating point number.
|
A standard 32-bit floating point number.
|
||||||
</basic>
|
</basic>
|
||||||
|
|
||||||
|
<!--
|
||||||
<basic name="hfloat" count="0">
|
<basic name="hfloat" count="0">
|
||||||
A 16-bit floating point number.
|
A 16-bit floating point number.
|
||||||
</basic>
|
</basic>
|
||||||
|
-->
|
||||||
|
|
||||||
<basic name="HeaderString" count="0">
|
<basic name="HeaderString" count="0">
|
||||||
A variable length string that ends with a newline character (0x0A). The string starts as follows depending on the version:
|
A variable length string that ends with a newline character (0x0A). The string starts as follows depending on the version:
|
||||||
|
|
34
setalpha.py
Normal file
34
setalpha.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
from io import UnsupportedOperation
|
||||||
|
import pyffi
|
||||||
|
import pickle
|
||||||
|
from pyffi.formats.nif import NifFormat
|
||||||
|
import sys
|
||||||
|
|
||||||
|
argv = sys.argv
|
||||||
|
try:
|
||||||
|
index = argv.index("--") + 1
|
||||||
|
except ValueError:
|
||||||
|
index = len(argv)
|
||||||
|
argv = argv[index:]
|
||||||
|
|
||||||
|
data = NifFormat.Data()
|
||||||
|
with open(argv[0], 'rb') as nif_stream:
|
||||||
|
data.inspect_version_only(nif_stream)
|
||||||
|
if data.version >= 0:
|
||||||
|
data.read(nif_stream)
|
||||||
|
elif data.version == -1:
|
||||||
|
raise UnsupportedOperation("Unsupported NIF version")
|
||||||
|
else:
|
||||||
|
raise UnsupportedOperation("Not a NIF")
|
||||||
|
|
||||||
|
for child in data.get_global_iterator():
|
||||||
|
if isinstance(child, NifFormat.NiTriShape):
|
||||||
|
alpha = NifFormat.NiAlphaProperty()
|
||||||
|
alpha.flags = 4845
|
||||||
|
child.bs_properties.append(alpha)
|
||||||
|
child.bs_properties.update_size()
|
||||||
|
|
||||||
|
with open('Z:/farts.nif', 'wb') as nif_out:
|
||||||
|
data.write(nif_out)
|
||||||
|
|
||||||
|
print('frick')
|
Loading…
Add table
Reference in a new issue