Tweak map materials

This commit is contained in:
Pyogenics
2025-04-06 20:26:28 +01:00
parent 8a41d7a47a
commit 5b35a26c6e
2 changed files with 22 additions and 6 deletions

View File

@@ -253,7 +253,7 @@ class BattleMapBlenderImporter:
#TODO: implement spawn type name lookup #TODO: implement spawn type name lookup
ob = bpy.data.objects.new(f"SpawnPoint_{spawnPointData.type}", None) ob = bpy.data.objects.new(f"SpawnPoint_{spawnPointData.type}", None)
ob.empty_display_type = "ARROWS" ob.empty_display_type = "ARROWS"
ob.empty_display_size = 100 ob.empty_display_size = 100 # The map will be at 100x scale so it's a good idea to match that here
ob.location = spawnPointData.position ob.location = spawnPointData.position
ob.rotation_mode = "XYZ" ob.rotation_mode = "XYZ"
ob.rotation_euler = spawnPointData.rotation ob.rotation_euler = spawnPointData.rotation
@@ -266,8 +266,8 @@ class BattleMapBlenderImporter:
# Shader specific logic # Shader specific logic
if materialData.shader == "TankiOnline/SingleTextureShader": if materialData.shader == "TankiOnline/SingleTextureShader":
bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True) bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True)
bsdf.roughness = 1.0 bsdf.roughness_set(1.0)
bsdf.ior = 1.0 bsdf.ior_set(1.0)
# Try load texture # Try load texture
textureParameter = materialData.textureParameters[0] textureParameter = materialData.textureParameters[0]
@@ -277,8 +277,8 @@ class BattleMapBlenderImporter:
addImageTextureToMaterial(texture, ma.node_tree) addImageTextureToMaterial(texture, ma.node_tree)
elif materialData.shader == "TankiOnline/SpriteShader": elif materialData.shader == "TankiOnline/SpriteShader":
bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True) bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True)
bsdf.roughness = 1.0 bsdf.roughness_set(1.0)
bsdf.ior = 1.0 bsdf.ior_set(1.0)
# Try load texture # Try load texture
textureParameter = materialData.textureParameters[0] textureParameter = materialData.textureParameters[0]
@@ -287,6 +287,10 @@ class BattleMapBlenderImporter:
addImageTextureToMaterial(texture, ma.node_tree, linkAlpha=True) addImageTextureToMaterial(texture, ma.node_tree, linkAlpha=True)
elif materialData.shader == "TankiOnline/Terrain": elif materialData.shader == "TankiOnline/Terrain":
pass # XXX: still need to figure out how to do the terrain properly, all manual attempts have yielded mixed results
bsdf = PrincipledBSDFWrapper(ma, is_readonly=False, use_nodes=True)
bsdf.roughness_set(1.0)
bsdf.ior_set(1.0)
bsdf.base_color_set((0.0, 0.0, 0.0))
return ma return ma

View File

@@ -31,6 +31,7 @@ from .BattleMap import BattleMap
from .BattleMapBlenderImporter import BattleMapBlenderImporter from .BattleMapBlenderImporter import BattleMapBlenderImporter
from glob import glob from glob import glob
from time import time
''' '''
Addon preferences Addon preferences
@@ -69,6 +70,8 @@ class ImportA3D(Operator, ImportHelper):
return ImportHelper.invoke(self, context, event) return ImportHelper.invoke(self, context, event)
def execute(self, context): def execute(self, context):
importStartTime = time()
objects = [] objects = []
for file in self.files: for file in self.files:
filepath = self.directory + file.name filepath = self.directory + file.name
@@ -90,6 +93,9 @@ class ImportA3D(Operator, ImportHelper):
for obI, ob in enumerate(objects): for obI, ob in enumerate(objects):
collection.objects.link(ob) collection.objects.link(ob)
importEndTime = time()
self.report({'INFO'}, f"Imported {len(objects)} objects in {importEndTime-importStartTime}s")
return {"FINISHED"} return {"FINISHED"}
class ImportBattleMap(Operator, ImportHelper): class ImportBattleMap(Operator, ImportHelper):
@@ -114,6 +120,9 @@ class ImportBattleMap(Operator, ImportHelper):
def execute(self, context): def execute(self, context):
print(f"Reading BattleMap data from {self.filepath}") print(f"Reading BattleMap data from {self.filepath}")
importStartTime = time()
mapData = BattleMap() mapData = BattleMap()
with open(self.filepath, "rb") as file: with open(self.filepath, "rb") as file:
mapData.read(file) mapData.read(file)
@@ -128,6 +137,9 @@ class ImportBattleMap(Operator, ImportHelper):
for ob in objects: for ob in objects:
collection.objects.link(ob) collection.objects.link(ob)
importEndTime = time()
self.report({'INFO'}, f"Imported {len(objects)} objects in {importEndTime-importStartTime}s")
return {"FINISHED"} return {"FINISHED"}
''' '''