2
$\begingroup$

I have a huge amount of .wrl files. They mostly contain a single mesh. I want to write a small python script that loads each of these files, then reduces the contained meshes and saves it to a new file (ideally again a .wrl, but not necessary)

My script so far

import bpy
import os

for i in os.listdir("C:/PathToFiles"):
    if i.endswith("n.wrl"):
        fullPath = "C:/PathToFiles/" + i

        bpy.ops.import_scene.x3d(filepath=fullPath)

        bpy.ops.object.select_all(action='SELECT')
        bpy.ops.object.delete()

        continue
    else:
        continue

The saving part is missing for now. When first trying this I got the error message "blendata not defined" in line 2223 of import_x3d.py. I corrected this by replacing all occurences of blendata with bpydata.

Now it crashes with error in line 2044 of import_x3d.py with

ValueError: matrix * vector: len(matrix.col) and len(vector) must be the same

Since I have no real insight into the script or the .wrl file format I am kinda lost. Any suggestions?

$\endgroup$

1 Answer 1

0
$\begingroup$

I'm not entirely sure that it does the exact right thing but...

I edited the lines 2044 and 2045 to following lines in the import_x3d.py script in order to fix the error message I got. Basic idea is to just prolong the uv vector to 4 components and then copy the first to back to the target.

tmp = texmtx * luv.uv.to_4d()
luv.uv = tmp.xy

The scenes seem to be loaded, but I have not checked the UV coordinates in detail since for now I don't care that much about them. I may later.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .