3ds: всё включено (текстуры внутри файла .3ds)

Автор
Сообщение
Активность: 0
На сайте c 15.12.2011
Сообщений: 3
Здравствуйте, уважаемое сообщество!

Чтобы объяснить контекст возникшей проблемы (вопросы можно сразу посмотреть внизу), мне следует кратко описать ситуацию.

Давным-давно в далекой Галактике...
Вашему покорному слуге, работающему системным программистом, пришлось столкнуться с проблемой работы с 3D-моделями из среды Delphi.
Задача была - создать и хотя бы просто вывести эту модельку на форму и интерактивно её крутить.
Поскольку опыта работы с 3D кроме небольшой практики в OpenGL не имелось, было принято решение изучить одну из сред разработки. Это и стало камнем преткновения.
Среди узкого круга "самых крутых", в который по субъективному мнению автора входили 3ds Max и Cinema4D, была выбрана, изучена и освоена (на какой-то процент, конечно) последняя. В ней и была создана 3D-модель. Каково же было удивление автора, когда он начал понимать, что неладно что-то в Королевстве Стандартов мира 3D. Родной формат синемы c4d вдруг оказался вещью в себе и ну никак не хотел дружить с остальными, предлагая на откуп сетку вершин при экспорте и не более.
Сервера гугла перегревались от интенсивности поисков решения проблемы экспорта из синемы в нужный формат с текстурами.
Позже работа свернула не туда и данное развлечение было приостановлено. Но проект возродился как Феникс из пепла и даже неплохо преуспел в развитии.

В виду чего преамбулу завершаю и мягко перехожу к конкретике.

Инструментарий
1) Delphi 7 (с GLScene, если о чём-нибудь говорит)
2) Модель формата c4d с наложенными материалами (текстуры bmp)
3) Желание заставить их (модель и Delphi) взаимодействовать путём конвертации модели в 3ds
4) Установлены Cinema 4D R13 и 3ds Max 2011

Было испробовано
- Экспорт из Cinema 4D во все доступные форматы, включая 3ds
- Запекание текстур
- Конвертация модели несколькими различными конвертерами, в том числе Deep Exploration с ручной заменой текстур и сохранением в 3ds
- Создание модели с нуля в GLScene (3D-компонент для Delphi)
- Лоадеры 3ds (опять же для Delphi) с попыткой текстурирования вручную
- FBX-конвертер от Autodesk (про FBX ниже)
По тем или иным причинам (в т.ч. по причине недостатка опыта в программировании 3D-игр) эти попытки полноценного успеха не дали.

Проблемы при этом
Модель экспортируется либо вообще без текстур, либо с текстурами, но их не получается подключить в Delphi или другом 3D-редакторе (вся модель чёрная).

Достигнутые успехи
Их два:
1) В Delphi с помощью GLScene модель всё-таки создана и оттекстурирована, но текстуры там далеко не все, т.к. нет более-менее простой возможности текстурировать грани. Текстурируется блок (куб например) целиком одной текстурой. Шейдеры вроде как позволяют решить это, но их трудно освоить.
Впрочем, для этого форума данный пункт вероятно не котируется.
2) Экспорт из синемы в FBX (2012) дал некоторую надежду, т.к. модель экспортнулась нормально одним файлом и с текстурами (проверено в 3ds Max 2011).

И наконец, самое главное.

Вопросы
1) Как экспортировать из 3ds Max модель ОДНИМ файлом (т.е. текстуры внутри) формата 3ds? Примеры таких файлов в инете видел.
2) Возможна ли конвертация из FBX в 3ds ?
3) Как в сообществах 3D-модельеров рассматривается вопрос взаимодействия Cinema 4D и 3ds Max? Был слух про плагины импорта/экспорта, один даже использовался, но тоже с косяками.

P.S. Понимаю, что пост вышел не особо коротким. Поиск по форуму использовался (по словам "запихнуть" и "экспорт".
На сайте c 01.06.2011
Сообщений: 487
Пилот
Доброго времени суток. Прочитал все, конвертацию можно в самом Максе сделать. Открываем ФБХ, экспорт -> *.3ds
Активность: 0
На сайте c 15.12.2011
Сообщений: 3
)!(-U-K, спасибо за отклик. Если бы всё было так просто. Экспортируется из Макса файл 3ds на 7 кб.
Т.е. без текстур внутри. Задача обратная: чтобы все текстуры внутри 3ds были.
Может, в настройках что указать?
На сайте c 04.09.2008
Сообщений: 13899
Уфа
Пилот
3дс текстуры не поддерживает, фбх у вас никак использовать не получится?
как вариант- попробовать процедурные карты , но опять же с фбх
На сайте c 08.11.2011
Сообщений: 85
Пилот

Придётся осваивать нелёгкое дело под названием шейдинг. Смысл в том что для переноса 3D модели в другие среды существуют свои правила. Вам бы пошерстить с этим вопросом на Render.ru. Там народа больше работающего в сфере "гейм" А суть в том что и модельки моделяться немножко по другому. LowPoly моделинг называется. И помимо этого для модельки все текстурки которые были назначены на модельку сшиваются в одну. Есть даже спец. плуги для облегчения этого процесса Unwrella например http://www.unwrella.com/  ) но он работет в Майке(MaYa) и Максе (3d's Max)
Активность: 0
На сайте c 15.12.2011
Сообщений: 3
Nightt
Однозначно сказать "нет" не могу, но вероятность такого ответа высока. Во всяком случае, мне известно, что у Autodesk есть разные SDK и FBX SDK тоже.
Посмотрим.

Isteri4ka
В общем-то всё к этому идёт. Будем учить матчасть.
Также рассматривается идея попробовать через другие языки.

Благо дарю всем.
На сайте c 04.09.2008
Сообщений: 13899
Уфа
Пилот таки процедурки попробуйте
На сайте c 01.06.2011
Сообщений: 487
текстуры для лоуполи модели оружия игры сшивал плагином. Точно не вспомню название, дело было около 2ух лет назад. Но такое существует точно
На сайте c 21.07.2008
Сообщений: 1199
Quote:
Пилот
3дс текстуры не поддерживает

Ну как сказать, почему то 15 архикад экспортирует 3ds с текстурами, не внутри конечно
Активность: 0
На сайте c 03.03.2012
Сообщений: 1
Всё очень просто: делаешь все имена текстур смой модели не длиннее 8 латинских символом, затем делаешь все материалы модели стандартными (то есть не MentalRay, Brazil, V-Ray и прочее , а самый обычный Standart, и саму текстуру ложишь в Diffuse), затем делаешь экспорт из любого редактора (хоть 3DS MAX , хоть что хошь) в формат *.3ds.

Итак сама модель и текстуры готовы и лежат в одной папке.

Переходим в Delphi: кладёшь текстуры (желательно в *.bmp что бы они без проблем загрузились потом в Delphi) и модельку *.3ds в одну папку,
в коде программы перед загрузкой самой модели укажи текущий каталог программы там где это всё добро лежит, объекту модели (который например GLFreeForm) задаешь MaterialLibrary (в неё будут пихаться все материалы которые есть в модели), после чего можно загружать файл модели.

Как это всё работает:
- в файле модели *.3ds записаны названия текстур типа abcdrfgh.bmp или abc12346.bmp или 12345678.bmp
(внимание! имя типа ляля12345.bmp уже катит);
- для объекта в которые загружается модель задана MaterialLibrary, при загрузке файла модели в ней автоматически создадутся материалы с именами этих текстур
в порядке в котором они заданы на модели (например в Multymaterial в 3DS Max);
- после загрузки что бы увидеть текстуры на модели нужно каждому материалу в MaterialLibrary включить показ текстуры (в ...Material.Texture.Disabled := false; кажися так)
- по имени текстуры можно выбрать нужный материал в библиотеке и задать ему дополнительные параметры типа прозрачности и тд...

Если не будет получатсья пишите на мыло: tratata001(страшный собака)i.ua

Кстати, вопрос, кто знает как можно открыть *.fbx фалы в Delphi + GLScene ?
Читают эту тему: