2012-06-21 107 views
1

我是cocos3d的新手,並且已經閱讀了關於將3d模型加載到cocos3d中的一些信息。按照我的理解,在cocos3d中添加3D模型的原生方式是通過轉換器將從Blender或3DsMax獲得的模型轉換爲POD格式。這難道不是有點困難嗎?在我的應用程序中,我可以很容易地做到這一點,因爲我有幾個模型,但假設我正在寫一個有數百或數千個模型的大型遊戲,我應該這樣做嗎?轉換我擁有的每個模型?這是一個好習慣嗎?在cocos3d中加載3d模型

謝謝!

+0

3D引擎將是一個很大的痛苦,更使你的項目越複雜。考慮切換到Unity來處理所有資產管理問題。 – LearnCocos2D

+0

據我所知,POD是爲iPhone製造GPU的芯片製造商的封閉源代碼和專有文件格式。因此Collada2POD工具可能仍然是主要的轉換工具,並且經常會有額外的轉換步驟將Collada從您最喜愛的3D製作工具中取出,然後將它們拖放到XCode中。我希望未來能帶來更好的工具。 –

回答

0

好的,也許這個答案對別人有用。我已經寫了幾個腳本來自動從我的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文件,以便與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 

其中第一命令是「/路徑/到/混合器--background --python /路徑/要/ first/script -/path/to/blend/fi les/path/to/dae/files「。第二個命令是簡單的perl腳本執行。對不起,在第二個腳本中硬編碼常量變量:)希望對別人有用。

更新:我添加transform_apply功能到第一個劇本,因爲有高配車型的問題,而轉換應用,這導致在輸出錯誤那些沒有工具和資產管道

+0

感謝您的代碼,但完成後,文件格式不是pod。 – ZYiOS

+0

@Dio不,文件格式是pod。正如你所看到的,第一個腳本從Blender導出文件爲dae,第二個腳本啓動Collada2Pod轉換器,所以結果格式正是我們需要的 - pod。 – medvedNick