хорошо, может быть, этот ответ будет полезен для кого-то. Я написал несколько скриптов для автоматизации получения 3D-моделей от моих 3D-дизайнеров (они используют Blender). Первый — экспортировать .blend файлы как .dae, он написан на Python, файлы должны находиться в одном каталоге (см. список аргументов в следующих скриптах):
import os
import sys
import glob
import bpy
if len(sys.argv) != 7:
print("Must provide input and output path")
else:
for infile in glob.glob(os.path.join(sys.argv[5], '*.blend')):
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
bpy.ops.wm.open_mainfile(filepath=infile)
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.transform_apply(location=True,rotation=True,scale=True)
outfilename = os.path.splitext(os.path.split(infile)[1])[0] + ".dae"
bpy.ops.wm.collada_export(filepath=os.path.join(sys.argv[6], outfilename),apply_modifiers=True,include_armatures=True,deform_bones_only=True,include_uv_textures=True,include_material_textures=True,active_uv_only=True)
второй — экспортировать эти файлы .dae в .pod с помощью Collada2Pod, это Perl:
#!/usr/bin/perl
my $dir = '/Users/nikita/Develop/model_convertor/dae_models/';
my $out_dir = '/Users/nikita/Develop/model_convertor/pod_models/';
my $collada = '/Users/nikita/Develop/model_convertor/Collada2POD/MacOS_x86_32/Collada2POD';
opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
next if ($file !~ m/\.dae/);
$out_file = $file;
$out_file =~ s/dae/pod/g;
$command = "$collada -i=$dir$file -o=$out_dir$out_file";
system($command);
}
пример использования:
/Applications/blender.app/Contents/MacOS/blender --background --python /Users/nikita/Develop/model_convertor/exporter.py -- /Users/nikita/Develop/model_convertor/catalog /Users/nikita/Develop/model_convertor/dae_models
perl /Users/nikita/Develop/model_convertor/convertor.pl
где первая команда: "/path/to/blender --background --python /path/to/first/script -- /path/to/blend/files /path/to/dae/files". Вторая команда — это просто выполнение Perl-скрипта. Извините за жесткое кодирование постоянных переменных во втором скрипте :) Надеюсь, это будет кому-то полезно.
Обновление: я добавил функцию transform_apply
в первый скрипт, так как были проблемы с моделями без примененных преобразований, из-за чего в выводе были неправильные
person
medvedNick
schedule
07.02.2013