Getting to the way it's supposed to be!
This commit is contained in:
37
modules/ufbx/misc/split_content_test_gen.py
Normal file
37
modules/ufbx/misc/split_content_test_gen.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import transmute_fbx as tfbx
|
||||
from dataclasses import replace
|
||||
|
||||
Node = tfbx.Node
|
||||
Value = tfbx.Value
|
||||
|
||||
divisor = 1
|
||||
|
||||
def replace_content(node: Node) -> Node:
|
||||
global divisor
|
||||
if node.name == b"Content":
|
||||
value = node.values[0]
|
||||
values = []
|
||||
data = value.value
|
||||
size = len(data)
|
||||
step = max(1, size // divisor)
|
||||
for base in range(0, size, step):
|
||||
values.append(Value(b"R", data[base:base+step]))
|
||||
divisor *= 4
|
||||
return replace(node, values=values)
|
||||
return replace(node, children=[replace_content(n) for n in node.children])
|
||||
|
||||
if __name__ == "__main__":
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(usage="transmute_fbx.py src -o dst -v 7400 -f binary-be")
|
||||
parser.add_argument("src", help="Source file to read")
|
||||
parser.add_argument("dst", help="Output filename")
|
||||
argv = parser.parse_args()
|
||||
|
||||
with open(argv.src, "rb") as f:
|
||||
fbx = tfbx.parse_fbx(f)
|
||||
|
||||
fbx = replace(fbx, root=replace_content(fbx.root))
|
||||
|
||||
with open(argv.dst, "wb") as f:
|
||||
bf = tfbx.BinaryFormat(fbx.version, False, 1)
|
||||
tfbx.binary_dump_root(f, fbx.root, bf, fbx.footer)
|
||||
Reference in New Issue
Block a user