0

ブレンダーで実行しようとしているスクリプトがあります。このスクリプトは、1 つのディレクトリ内のすべてのファイルを調べてから、一度に 1 つずつ開き、そのファイルの頂点と面の数をファイルに出力します。私が抱えている 1 つの問題は、次のメッシュに移動する前にシーンからメッシュを削除することです。これが私がこれまでに持っているものです

import bpy


# print all objects
for obj in bpy.data.objects:
    print(obj.name)


# print all scene names in a list
print(bpy.data.scenes.keys())


# remove mesh Cube
if "Cube" in bpy.data.meshes:
    mesh = bpy.data.meshes["Cube"]
    print("removing mesh", mesh)
    bpy.data.meshes.remove(mesh)


# write images into a file next to the blend
import os
import bmesh

file = open("C:\\Users\\Jon\\Documents\\Dataset\\ReadMe.txt", 'a')
file.write("Name \t Vertices \t Faces \t QuadOrTriangle \t \n")

#os.chdir("C:\\Users\\Jon\\Documents\\Dataset\\SingleObjects\\")

path = "C:\\Users\\Jon\\Documents\\Dataset\\SingleObjects\\"

for data in os.listdir(path):

    bpy.ops.import_mesh.ply(filepath="C:\\Users\\Jon\\Documents\\Dataset\\SingleObjects\\" + data)

    me = bpy.context.object.data
    bm = bmesh.new()   # create an empty BMesh
    bm.from_mesh(me)   # fill it in from a Mesh

    #filepath = bpy.data.filepath
    for t in bpy.data.meshes:
         directory = bpy.path.abspath(t.name)

    FaceCounter = 0
    VertCounter = 0
    #QuadOrTri = 0

    for f in bm.faces:
        QuadOrTri = 0
        for v in f.verts:
            QuadOrTri = QuadOrTri + 1

    for f in bm.faces:
        FaceCounter = FaceCounter +1

    for v in bm.verts:
        VertCounter = VertCounter + 1

    file.write("%s.ply \t %d \t %d \t %d \n" % (directory, VertCounter, FaceCounter, QuadOrTri))

    for item in bpy.data.meshes:
        bpy.data.meshes.remove(item)

    file.close()

これは ply ファイルを使用して行う必要があります。誰かが私にいくつかのヒントやアドバイスを与えることができれば、それは素晴らしいことです! ありがとう!

4

1 に答える 1