1

私はcocos3dを初めて使用し、3Dモデルをcocos3dにロードする方法についていくつかの情報を読みました。cocos3dに3dモデルを追加するネイティブな方法は、私が理解したように、Blenderまたは3DsMaxから取得したモデルをコンバーターを介してPOD形式に変換することです。少し難しいと思いませんか?私のアプリでは、モデルが少ないので簡単にこれを行うことができますが、数百または数千のモデルで大きなゲームを書いていると仮定すると、同じことをする必要がありますか?私が持っているすべてのモデルを変換しますか?それは良い習慣ですか?

ありがとう!

4

1 に答える 1

0

わかりました、多分この答えは誰かに役立つでしょう。3D デザイナー (彼らは Blender を使用しています) からの 3D モデルの取得を自動化するスクリプトをいくつか書きました。1 つ目は、.blend ファイルを .dae としてエクスポートすることです。これは Python で記述されており、ファイルは 1 つのディレクトリに存在する必要があります (次のスクリプトの引数リストを参照)。

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)

2 つ目は、これらの .dae ファイルを Collada2Pod を使用して .pod にエクスポートすることです。これは 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」です。2 番目のコマンドは、単に perl スクリプトを実行するだけです。2番目のスクリプトで定数変数をハードコーディングして申し訳ありません:)それが誰かに役立つことを願っています.

更新:transform_apply最初のスクリプトに関数を追加しました。これは、変換が適用されていないモデルに問題があり、出力に間違ったものが含まれていたためです。

于 2013-02-07T07:45:21.783 に答える