Browse Source

Fix #407.

As it turns out, these have been completely wrong since the beginning.
The disabled texture is, you guessed it, a texture--NOT a layer. Fix it.
pull/408/head
Adam Johnson 2 months ago
parent
commit
106ef01548
Signed by: Hoikas
GPG Key ID: 0B6515D6FF6F271E
  1. 22
      korman/exporter/material.py
  2. 8
      korman/exporter/utils.py

22
korman/exporter/material.py

@ -777,15 +777,19 @@ class MaterialConverter:
pl_env.addTargetNode(self._mgr.find_key(plSceneObject, bl=bo))
pl_env.addMatLayer(layer.key)
# This is really just so we don't raise any eyebrows if anyone is looking at the files.
# If you're disabling DCMs, then you're obviuously trolling!
# Cyan generates a single color image, but we'll just set the layer colors and go away.
fake_layer = self._mgr.find_create_object(plLayer, bl=bo, name="{}_DisabledDynEnvMap".format(texture.name))
fake_layer.ambient = layer.ambient
fake_layer.preshade = layer.preshade
fake_layer.runtime = layer.runtime
fake_layer.specular = layer.specular
pl_env.disableTexture = fake_layer.key
# Generate a single color image for use as a disabled texture.
disabled_color = utils.color_to_argb(texture.plasma_layer.envmap_color)
mm_name = f"StaticColorTex_4x4_{disabled_color:08X}"
tex_loc = self._mgr.get_textures_page(pl_env.key)
color_mm = self._mgr.find_object(plMipmap, name=mm_name, loc=tex_loc)
if color_mm is None:
color_mm = plMipmap(
name=mm_name, width=4, height=4, numLevels=1,
compType=plBitmap.kUncompressed, format=plBitmap.kRGB8888
)
color_mm.setRawImage(int.to_bytes(disabled_color, 4, byteorder="little") * 16)
self._mgr.add_object(color_mm, loc=tex_loc)
pl_env.disableTexture = color_mm.key
if pl_env.camera is None:
layer.UVWSrc = plLayerInterface.kUVWPosition

8
korman/exporter/utils.py

@ -43,6 +43,14 @@ def color(blcolor, alpha=1.0):
"""Converts a Blender Color into an hsColorRGBA"""
return hsColorRGBA(blcolor.r, blcolor.g, blcolor.b, alpha)
def color_to_argb(color, alpha=1.0):
return (
int(alpha * 255) << 24 |
int(color.r * 255) << 16 |
int(color.b * 255) << 8 |
int(color.g * 255)
) & 0xFFFFFFFF
def matrix44(blmat):
"""Converts a mathutils.Matrix to an hsMatrix44"""
hsmat = hsMatrix44()

Loading…
Cancel
Save