Browse Source

Update GeoVertex UV touching for HSPlasma changes

plGeometrySpan.TempVertex.uvs now returns an immutable tuple, so we have
to convert that to a list. Furthermore, I took the liberty of changing
to code to avoid spin-washing on the first encounter of a bumpmapped
vertex.
pull/50/head^2
Adam Johnson 8 years ago
parent
commit
08d93dd797
Signed by: Hoikas
GPG Key ID: 0B6515D6FF6F271E
  1. 38
      korman/exporter/mesh.py

38
korman/exporter/mesh.py

@ -285,21 +285,31 @@ class MeshConverter:
geoVertex.normal = hsVector3(*tessface.normal) geoVertex.normal = hsVector3(*tessface.normal)
geoVertex.color = hsColor32(*vertex_color) geoVertex.color = hsColor32(*vertex_color)
geoVertex.uvs = [hsVector3(uv[0], 1.0 - uv[1], 0.0) for uv in uvws] uvs = [hsVector3(uv[0], 1.0 - uv[1], 0.0) for uv in uvws]
if bumpmap is not None:
data.blender2gs[vertex][coluv] = len(data.vertices) uvs.append(dPosDu)
uvs.append(dPosDv)
geoVertex.uvs = uvs
idx = len(data.vertices)
data.blender2gs[vertex][coluv] = idx
data.vertices.append(geoVertex) data.vertices.append(geoVertex)
face_verts.append(idx)
face_verts.append(data.blender2gs[vertex][coluv]) else:
# If we have a bump mapping layer, then we need to add the bump gradients for
if bumpmap is not None: # this face to the vertex's magic channels
idx = len(uvws) if bumpmap is not None:
geoVert = data.vertices[data.blender2gs[vertex][coluv]] num_user_uvs = len(uvws)
# We can't edit in place :\ geoVertex = data.vertices[data.blender2gs[vertex][coluv]]
uvMaps = geoVert.uvs
uvMaps[idx] += dPosDu # Unfortunately, PyHSPlasma returns a copy of everything. Previously, editing
uvMaps[idx + 1] += dPosDv # in place would result in silent failures; however, as of python_refactor,
geoVert.uvs = uvMaps # PyHSPlasma now returns tuples to indicate this.
geoUVs = list(geoVertex.uvs)
geoUVs[num_user_uvs] += dPosDu
geoUVs[num_user_uvs+1] += dPosDv
geoVertex.uvs = geoUVs
face_verts.append(data.blender2gs[vertex][coluv])
# Convert to triangles, if need be... # Convert to triangles, if need be...
if len(face_verts) == 3: if len(face_verts) == 3:

Loading…
Cancel
Save