2017-09-05 371 views
0

我有幾個非常大的flt格式的對象文件。這些對象的所有紋理都在rgb和rgba文件中。我使用3DS Max將flt轉換爲fbx,但所有紋理仍然採用rgb/rgba格式。 Unity似乎不接受這些圖像文件。對於其中的一個,我使用image magik轉換所有圖像,然後在Unity中將每個相應的紋理添加到正確的材質。這是一個痛苦,非常耗時。不僅如此,它只適用於一個Unity項目,所以如果我想將其應用到任何其他項目或軟件中,我將不得不重做一次。那一個模型有幾百個紋理,其他的我也有。從rgb/rgba紋理的flt對象轉換爲jpg/png紋理的fbx的快速高效的方法

有沒有辦法將帶有RGB/RGBA紋理文件的FLT對象輕鬆轉換爲帶有JPG/PNG紋理文件的FBX對象?我可以輕鬆地將所有的rgb文件轉換爲jpg和rgba文件到png(如果有的話)。我可以使用3DS Max和Maya。

回答

0

現在還沒有一種簡單的一次性方法 - FLT和RGB都不是常見的文件格式。

也許最好的代碼解決方案是批量轉換所有圖像(改變它們的擴展名),然後在Unity中編寫一個AssetPostprocesor,匹配找到與資源引用的材料相對應的新的.tga或.jpg文件,將它們交換。這將節省Unity結束時的手工工作。如果這將是你經常做的事情,那麼這項工作是值得的。

你可以在Maya中做一些相當類似的事情:你可以將fbx文件導入空白的maya場景,查找文件紋理節點,並用tga或jpg或其他東西替換rgb/rgba擴展名。這看起來像這樣:

def update_fbx(filname, source = 'rgb', target = 'tga'): 
    cmds.file(f=True, new=True) # clear the scene 
    cmds.FBXImport(f=filename) # import the fbx 

    #assuming you have materials with file nodes pointing at 
    # rgb extensions, replace with tga 
    for each_file_node in cmds.ls(type = 'file'): 
     oldname = cmds.getAttr(each_file_node + ".ftn") 
     newname = oldname.replace(source, target) 
     cmds.setAttr(each_file_node + ".ftn", newname) 

然後將場景重新導出爲新的FBX,它將具有正確的文件引用。

有很多變量,這取決於源文件的結構,但這是您如何解決它的一般想法。