pywavefront - 如何提取每个顶点的颜色?

问题描述

我正在尝试为我从 https://www.turbosquid.com/3d-models/3d-s-chef-knife-model-1387505 下载的对象文件的每个顶点提取颜色。但是,下面的代码仅将每个顶点及其面的坐标保存在一个 json 文件没有颜色。如何使用 pywavefront 提取每个顶点的颜色?

import json
import numpy as np
from pywavefront import Wavefront

object_names = ["./objfiles/knife/knife"]

for object_name in object_names:

    object = Wavefront(object_name+".obj",create_materials=True,collect_faces=True)

    # collect faces
    faces = []
    for mesh in object.mesh_list:
        faces = faces + mesh.faces
    
    # collect vertices
    vertices = object.vertices

    data = {"faces":faces,"vertices":vertices}

    with open(object_name+".json",'w') as fp:
        json.dump(data,fp)

解决方法

您提到的目标文件不包含任何顶点颜色。就我而言,.OBJ 格式无法包含顶点颜色(当然除非您为它编写代码)。