Быстрый и эффективный способ перехода от объекта flt с текстурами rgb/rgba к fbx с текстурами jpg/png
У меня есть несколько действительно больших объектных файлов в формате flt. Эти объекты имеют все свои текстуры в файлах rgb и rgba. Я использовал 3DS Max для преобразования из flt в fbx, но все текстуры все еще в формате rgb/rgba. Unity, похоже, не принимает эти файлы изображений. Для одного из них я преобразовал все изображения, используя магию изображений, а затем в Unity добавив каждую соответствующую текстуру к нужному материалу. Это была боль и очень много времени. Мало того, это применимо только к одному проекту Unity, поэтому, если бы я захотел включить его в любой другой проект или программное обеспечение, мне пришлось бы сделать это снова. У этой модели было несколько сотен текстур, как и у других.
Есть ли способ легко преобразовать объект FLT с файлами текстуры RGB/RGBA в объект FBX с файлами текстуры JPG/PNG? Я могу легко конвертировать все файлы rgb в jpg, а файлы rgba - в png (если это имеет значение). У меня есть 3DS Max и Maya, которые я могу использовать.
1 ответ
Нет простого одноразового способа сделать это - ни FLT, ни RGB не являются распространенными форматами файлов в наши дни.
Вероятно, лучшим решением для кода является преобразование всех изображений в пакетном режиме (изменение их расширений), а затем запись AssetPostprocesor в Unity, который соответствует, находит новые файлы.tga или.jpg, соответствующие материалам, на которые ссылаются ресурсы, и заменяет их. Это спасет ручную работу на конце Unity. Если это будет чем-то, что вы делаете часто, то это стоит того.
Вы можете сделать что-то похожее в Maya: вы импортируете файл fbx в пустую сцену maya, поищите узлы текстур файла и замените расширения rgb / rgba на tga или jpg или что-то еще. Это будет выглядеть примерно так:
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, который будет иметь правильные ссылки на файлы.
Есть много переменных, в зависимости от того, как исходные файлы структурированы, но это общая идея о том, как вы можете справиться с этим.