顶点颜色:
python
import trimesh
import numpy as np
from PIL import Image
import os
scene = trimesh.load(r"E:\pro_math\math_image\3d_print\chaijian\baozha.glb", force='scene')
print(f"📦 找到 {len(scene.geometry)} 个部件")
all_colors = []
color_map = {}
for name, mesh in scene.geometry.items():
if not isinstance(mesh, trimesh.Trimesh):
continue
# 提取顶点颜色
if hasattr(mesh.visual, 'vertex_colors') and mesh.visual.vertex_colors is not None:
colors = mesh.visual.vertex_colors
# 取最常见的颜色(众数)
unique_colors, counts = np.unique(colors, axis=0, return_counts=True)
dominant = unique_colors[np.argmax(counts)]
hex_color = f"#{dominant[0]:02x}{dominant[1]:02x}{dominant[2]:02x}"
color_map[name] = hex_color
all_colors.append(hex_color)
print(f" {name}: {hex_color}")
# 去重颜色
unique_colors = list(set(all_colors))
print(f"\n🎨 共检测到 {len(unique_colors)} 种颜色:")
for c in unique_colors:
print(f" {c}")