mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-03 11:18:26 +02:00
added blender script to convert all tracks into 3D models
This commit is contained in:
parent
1ef62c5284
commit
68cabd0f86
2 changed files with 75 additions and 10 deletions
|
@ -1,10 +1,11 @@
|
||||||
"""
|
"""
|
||||||
this script allow you to more easily select map preview for each track.
|
this script allow you to more easily select map preview for each track.
|
||||||
"""
|
"""
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
import requests
|
||||||
from selenium import webdriver
|
from selenium import webdriver
|
||||||
import keyboard
|
import keyboard
|
||||||
import shutil
|
|
||||||
import ctypes
|
import ctypes
|
||||||
import time
|
import time
|
||||||
import glob
|
import glob
|
||||||
|
@ -13,42 +14,65 @@ import os
|
||||||
get_filename = lambda file: ".".join(file.split(".")[:-1])
|
get_filename = lambda file: ".".join(file.split(".")[:-1])
|
||||||
get_nodir = lambda file: file.replace("\\", "/").split("/")[-1]
|
get_nodir = lambda file: file.replace("\\", "/").split("/")[-1]
|
||||||
move_cursor_to = ctypes.windll.user32.SetCursorPos
|
move_cursor_to = ctypes.windll.user32.SetCursorPos
|
||||||
|
os.makedirs("./map preview/tmp/", exist_ok=True)
|
||||||
|
|
||||||
chrome_option = webdriver.ChromeOptions()
|
chrome_option = webdriver.ChromeOptions()
|
||||||
driver = webdriver.Chrome("./map preview/chromedriver.exe", options=chrome_option)
|
driver = webdriver.Chrome("./map preview/chromedriver.exe", options=chrome_option)
|
||||||
driver.get("https://noclip.website/")
|
driver.get("https://noclip.website/")
|
||||||
driver.fullscreen_window()
|
|
||||||
time.sleep(5)
|
|
||||||
|
|
||||||
driver.execute_script(
|
|
||||||
"var element = arguments[0]; element.parentNode.removeChild(element);",
|
|
||||||
driver.find_element_by_id("Panel")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
LAST_TRACK_PLAYED = "d97a4b29d422e830e07e98196e4f2e3f41a90086"
|
||||||
|
latest_track_passed = LAST_TRACK_PLAYED is None
|
||||||
tracks = glob.iglob("../file/Track/*.szs")
|
tracks = glob.iglob("../file/Track/*.szs")
|
||||||
track = "none.png"
|
track = "none.png"
|
||||||
|
|
||||||
|
|
||||||
|
def ignore_track():
|
||||||
|
global track, driver
|
||||||
|
print("skipping to next track")
|
||||||
|
|
||||||
|
driver.close()
|
||||||
|
driver = webdriver.Chrome("./map preview/chromedriver.exe", options=chrome_option)
|
||||||
|
driver.get("https://noclip.website/")
|
||||||
|
|
||||||
|
skip_to_next()
|
||||||
|
|
||||||
|
|
||||||
def save_screenshot():
|
def save_screenshot():
|
||||||
global track
|
global track
|
||||||
|
print("saving screenshot")
|
||||||
driver.save_screenshot(filename=f"./map preview/image/{get_filename(get_nodir(track))}.png")
|
driver.save_screenshot(filename=f"./map preview/image/{get_filename(get_nodir(track))}.png")
|
||||||
skip_to_next()
|
skip_to_next()
|
||||||
|
|
||||||
|
|
||||||
def skip_to_next():
|
def skip_to_next():
|
||||||
global track
|
global track, latest_track_passed
|
||||||
|
|
||||||
if os.path.exists("./map preview/tmp/" + get_nodir(track)):
|
if os.path.exists("./map preview/tmp/" + get_nodir(track)):
|
||||||
os.remove("./map preview/tmp/" + get_nodir(track))
|
os.remove("./map preview/tmp/" + get_nodir(track))
|
||||||
|
|
||||||
track = next(tracks)
|
track = next(tracks)
|
||||||
while os.path.exists(f"./map preview/image/{get_filename(get_nodir(track))}.png"):
|
|
||||||
|
while True:
|
||||||
|
sha1 = get_nodir(track).replace(".szs", "")
|
||||||
|
if not latest_track_passed and sha1 != LAST_TRACK_PLAYED:
|
||||||
|
track = next(tracks)
|
||||||
|
continue
|
||||||
|
|
||||||
|
else: latest_track_passed = True
|
||||||
|
|
||||||
|
if requests.get(f"https://github.com/Faraphel/MKWF-Install/raw/track-preview/map/{sha1}.png").status_code != 200: break
|
||||||
|
print(f"track {sha1} already exist !")
|
||||||
track = next(tracks)
|
track = next(tracks)
|
||||||
|
|
||||||
shutil.copy(track, "./map preview/tmp/" + get_nodir(track))
|
print(track)
|
||||||
|
|
||||||
|
shutil.copy(track, f"./map preview/tmp/{get_nodir(track)}")
|
||||||
|
|
||||||
|
|
||||||
skip_to_next()
|
skip_to_next()
|
||||||
keyboard.add_hotkey('h', save_screenshot)
|
keyboard.add_hotkey('h', save_screenshot)
|
||||||
|
keyboard.add_hotkey('j', ignore_track)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
41
scripts/get 3D model from szs.py
Normal file
41
scripts/get 3D model from szs.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import bpy
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
import glob
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
TRACK_DIR: str = r"C:\Users\RC606\PycharmProjects\MKWF-Install\file\Track"
|
||||||
|
DEST_DIR: str = r"D:/gltf/"
|
||||||
|
|
||||||
|
def clear_scene():
|
||||||
|
bpy.ops.object.select_all(action='SELECT')
|
||||||
|
bpy.ops.object.delete(use_global=False)
|
||||||
|
|
||||||
|
os.chdir(TRACK_DIR)
|
||||||
|
os.makedirs(DEST_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
clear_scene()
|
||||||
|
|
||||||
|
for file in glob.iglob("./*.szs"):
|
||||||
|
try:
|
||||||
|
|
||||||
|
print(sha1 := file.split("/")[-1].split("\\")[-1].split(".")[0])
|
||||||
|
if os.path.exists(f"{DEST_DIR}/{sha1}.glb"): continue
|
||||||
|
|
||||||
|
subprocess.run(["wszst", "extract", file], creationflags=subprocess.CREATE_NO_WINDOW)
|
||||||
|
if not os.path.exists(f"./{sha1}.d/course_model.brres"): continue
|
||||||
|
subprocess.run(["abmatt", "convert", f"./{sha1}.d/course_model.brres", "to", f"./{sha1}.d/course_model.obj"], creationflags=subprocess.CREATE_NO_WINDOW)
|
||||||
|
if not os.path.exists(f"./{sha1}.d/course_model.obj"): continue
|
||||||
|
|
||||||
|
bpy.ops.import_scene.obj(filepath=f"./{sha1}.d/course_model.obj")
|
||||||
|
bpy.ops.export_scene.gltf(filepath=f"{DEST_DIR}/{sha1}.glb")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
with open("./error.log", "a") as file: file.write(str(e))
|
||||||
|
|
||||||
|
finally:
|
||||||
|
try:
|
||||||
|
clear_scene()
|
||||||
|
shutil.rmtree(f"./{sha1}.d/")
|
||||||
|
except: pass
|
||||||
|
|
Loading…
Reference in a new issue