Быстрый и эффективный способ перехода от объекта 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, который будет иметь правильные ссылки на файлы.

Есть много переменных, в зависимости от того, как исходные файлы структурированы, но это общая идея о том, как вы можете справиться с этим.

Другие вопросы по тегам