Skip to content

Commit

Permalink
Merge pull request #2238 from KhronosGroup/fix_2213_uvmap_custom_attr…
Browse files Browse the repository at this point in the history
…ib_on_point

Fix #2213 custom uvmap on point domain
  • Loading branch information
julienduroure authored May 18, 2024
2 parents 3d3a970 + 92ccde1 commit f92d8f1
Showing 1 changed file with 26 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -429,17 +429,33 @@ def manage_material_info(self):
for attr in self.uvmap_attribute_list:
if attr + str(0) not in self.dots.dtype.names: # In case user exports custom attributes, we may have it already
# Vector in custom Attributes are Vector2 or Vector3 (but keeping only the first two data)
if self.blender_mesh.attributes[attr].data_type == "FLOAT_VECTOR":
data = np.empty(len(self.blender_mesh.loops) * 3, gltf2_blender_conversion.get_numpy_type('FLOAT2'))
self.blender_mesh.attributes[attr].data.foreach_get('vector', data)
data = data.reshape(-1, 3)
data = data[:,:2]
elif self.blender_mesh.attributes[attr].data_type == "FLOAT2":
data = np.empty(len(self.blender_mesh.loops) * 2, gltf2_blender_conversion.get_numpy_type('FLOAT2'))
self.blender_mesh.attributes[attr].data.foreach_get('vector', data)
data = data.reshape(-1, 2)
if self.blender_mesh.attributes[attr].domain == "CORNER":
if self.blender_mesh.attributes[attr].data_type == "FLOAT_VECTOR":
data = np.empty(len(self.blender_mesh.loops) * 3, gltf2_blender_conversion.get_numpy_type('FLOAT2'))
self.blender_mesh.attributes[attr].data.foreach_get('vector', data)
data = data.reshape(-1, 3)
data = data[:,:2]
elif self.blender_mesh.attributes[attr].data_type == "FLOAT2":
data = np.empty(len(self.blender_mesh.loops) * 2, gltf2_blender_conversion.get_numpy_type('FLOAT2'))
self.blender_mesh.attributes[attr].data.foreach_get('vector', data)
data = data.reshape(-1, 2)
else:
self.export_settings['log'].warning('We are not managing this case (UVMap as custom attribute for unknown type)')
continue
elif self.blender_mesh.attributes[attr].domain == "POINT":
if self.blender_mesh.attributes[attr].data_type == "FLOAT_VECTOR":
data = np.empty(len(self.blender_mesh.vertices) * 3, gltf2_blender_conversion.get_numpy_type('FLOAT2'))
self.blender_mesh.attributes[attr].data.foreach_get('vector', data)
data = data.reshape(-1, 3)
data = data[:,:2]
data = data[self.dots['vertex_index']]
elif self.blender_mesh.attributes[attr].data_type == "FLOAT2":
data = np.empty(len(self.blender_mesh.vertices) * 2, gltf2_blender_conversion.get_numpy_type('FLOAT2'))
self.blender_mesh.attributes[attr].data.foreach_get('vector', data)
data = data.reshape(-1, 2)
data = data[self.dots['vertex_index']]
else:
self.export_settings['log'].warning('We are not managing this case (UVMap as custom attribute for unknown type)')
self.export_settings['log'].warning('We are not managing this case (UVMap as custom attribute for unknown domain)')
continue
# Blender UV space -> glTF UV space
# u,v -> u,1-v
Expand Down

0 comments on commit f92d8f1

Please sign in to comment.