Skip to content

Commit

Permalink
added blender script to convert all tracks into 3D models
Browse files Browse the repository at this point in the history
  • Loading branch information
Faraphel committed May 27, 2022
1 parent 1ef62c5 commit 68cabd0
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 10 deletions.
44 changes: 34 additions & 10 deletions scripts/generate_track_preview.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
"""
this script allow you to more easily select map preview for each track.
"""
import shutil

import requests
from selenium import webdriver
import keyboard
import shutil
import ctypes
import time
import glob
Expand All @@ -13,42 +14,65 @@
get_filename = lambda file: ".".join(file.split(".")[:-1])
get_nodir = lambda file: file.replace("\\", "/").split("/")[-1]
move_cursor_to = ctypes.windll.user32.SetCursorPos
os.makedirs("./map preview/tmp/", exist_ok=True)

chrome_option = webdriver.ChromeOptions()
driver = webdriver.Chrome("./map preview/chromedriver.exe", options=chrome_option)
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")
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():
global track
print("saving screenshot")
driver.save_screenshot(filename=f"./map preview/image/{get_filename(get_nodir(track))}.png")
skip_to_next()


def skip_to_next():
global track
global track, latest_track_passed

if os.path.exists("./map preview/tmp/" + get_nodir(track)):
os.remove("./map preview/tmp/" + get_nodir(track))

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)

shutil.copy(track, "./map preview/tmp/" + get_nodir(track))
print(track)

shutil.copy(track, f"./map preview/tmp/{get_nodir(track)}")


skip_to_next()
keyboard.add_hotkey('h', save_screenshot)
keyboard.add_hotkey('j', ignore_track)

while True:
time.sleep(1)
41 changes: 41 additions & 0 deletions scripts/get 3D model from szs.py
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 68cabd0

Please sign in to comment.