我是cocos3d的新手,並且已經閱讀了關於將3d模型加載到cocos3d中的一些信息。按照我的理解,在cocos3d中添加3D模型的原生方式是通過轉換器將從Blender或3DsMax獲得的模型轉換爲POD格式。這難道不是有點困難嗎?在我的應用程序中,我可以很容易地做到這一點,因爲我有幾個模型,但假設我正在寫一個有數百或數千個模型的大型遊戲,我應該這樣做嗎?轉換我擁有的每個模型?這是一個好習慣嗎?在cocos3d中加載3d模型
謝謝!
我是cocos3d的新手,並且已經閱讀了關於將3d模型加載到cocos3d中的一些信息。按照我的理解,在cocos3d中添加3D模型的原生方式是通過轉換器將從Blender或3DsMax獲得的模型轉換爲POD格式。這難道不是有點困難嗎?在我的應用程序中,我可以很容易地做到這一點,因爲我有幾個模型,但假設我正在寫一個有數百或數千個模型的大型遊戲,我應該這樣做嗎?轉換我擁有的每個模型?這是一個好習慣嗎?在cocos3d中加載3d模型
謝謝!
好的,也許這個答案對別人有用。我已經寫了幾個腳本來自動從我的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
功能到第一個劇本,因爲有高配車型的問題,而轉換應用,這導致在輸出錯誤那些沒有工具和資產管道
感謝您的代碼,但完成後,文件格式不是pod。 – ZYiOS
@Dio不,文件格式是pod。正如你所看到的,第一個腳本從Blender導出文件爲dae,第二個腳本啓動Collada2Pod轉換器,所以結果格式正是我們需要的 - pod。 – medvedNick
3D引擎將是一個很大的痛苦,更使你的項目越複雜。考慮切換到Unity來處理所有資產管理問題。 – LearnCocos2D
據我所知,POD是爲iPhone製造GPU的芯片製造商的封閉源代碼和專有文件格式。因此Collada2POD工具可能仍然是主要的轉換工具,並且經常會有額外的轉換步驟將Collada從您最喜愛的3D製作工具中取出,然後將它們拖放到XCode中。我希望未來能帶來更好的工具。 –