|
|
|
Канал Игры Мечты: «Как правильно выгрузить 3ds из MAX-а?» |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
Надеюсь что не промахнулся с каналом.
Решили с сынишкой нарисовать простенькие "астероиды" 3D. За основу взяли движок irrLicht. Почитали несколько статей по моделингу на gamedev-е, попробовали намоделить, но что-то не получается выгрузить в 3ds. Такое ощущение, что выгружаются не все полигоны.
В максе все нормально http://prolib.ru/.closed/aster_max.jpg
Вот та же самая модель загруженная движком http://prolib.ru/.closed/aster.jpg
Взяли модель попроще - куб. После загрузки выглядит так http://prolib.ru/.closed/cube.jpg То есть видимы только top и bottom грани.
Скорее всего мы что-то не учли при выгрузке, так как другие модели загружаются нормально (брали меши с примеров к движку, со статей gamedev и еще несколько бесплатных моделей с инета).
Выгрузку делаем через File -> Export. Сначала думали что макс глючит - перепробовали на 3х версиях: 2.5, 6 и 8. Подскажите где тут собака порылась?
|
|
|
-=Hed_GE_hoG=-
371 EGP
     Рейтинг канала: 1(3) Репутация: 135 Сообщения: 2528 Откуда: Минск Зарегистрирован: 11.06.2005
 |
|
А обратный импорт из здс, в макс? Всё на месте? Если всё на месте, то экспортнулось нормально... А что за движок? Он тока 3дс читает?
_________________ Пришлёл, задрал майку. Ушёл не отодрав ни майку ни зайку (с) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
Разобрались - это был глюк движка. Обновили до последней - заработало. Движок вроде неплохой, много хороших отзывов. Сайт здесь http://irrlicht.sourceforge.net/ поддерживает дофига чего, но экзамплы слишком простые, приходится методом проб и ошибок. Сейчас не можем от flat затенения избавиться. Не въедем то-ли это в модели с нормалями где-то шаманится, то ли программно.
|
|
|
-=Hed_GE_hoG=-
371 EGP
     Рейтинг канала: 1(3) Репутация: 135 Сообщения: 2528 Откуда: Минск Зарегистрирован: 11.06.2005
 |
|
Ну, с затенением врядли врублю... Ну а нормалиж в максе можно покрутить
_________________ Пришлёл, задрал майку. Ушёл не отодрав ни майку ни зайку (с) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
> Ну а нормалиж в максе можно покрутить
Дык не врубаюсь где крутить судя по картинке в максе - все гладенько. Делаю сферу дефолтом, выгружаю в меш - та же фигня - полигончики плоские. Хотя в экземплах сфера сглаженная, но там пример пиксельшейдеров. Вот и не врублюсь, то ли это шейдерами сделали, толи моделька с правильными нормалями
|
|
|
-=Hed_GE_hoG=-
371 EGP
     Рейтинг канала: 1(3) Репутация: 135 Сообщения: 2528 Откуда: Минск Зарегистрирован: 11.06.2005
 |
|
Всмысле сфера не сглаженная? Видны полики? Эт не нормали, это группы сглаживания... Они вроде должны нармально экспортироватся... Сами по себе...
_________________ Пришлёл, задрал майку. Ушёл не отодрав ни майку ни зайку (с) |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
whirlwind : |
Дык не врубаюсь где крутитьсудя по картинке в максе - все гладенько. Делаю сферу дефолтом, выгружаю в меш - та же фигня - полигончики плоские. Хотя в экземплах сфера сглаженная, но там пример пиксельшейдеров. Вот и не врублюсь, то ли это шейдерами сделали, толи моделька с правильными нормалями
|
В 3дс не выгружаються нормали. Т.е. движок их пересчитывает сам. Даже если он и правильно пересчитывает может быть такое, что есть запрет на мягкие нормали.
Но всё равно - выход искать решение в irrLicht и только там.
_________________ MOV topka, C++ |
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Использую 6-й макс - проблем никаких, кроме названий текстур, они при экспорте должны быть в формате 8.3. К тому же когда экспортируешь нужно выделить полностью всю модельку.
Возможная проблема то, что не применен модификатор "Reset XForm". Это описано в гайде по лоу-поли моделингу, размещенному где-то на этом форуме (http://www.elite-games.ru/art/start - Звездный арт - Раздел eроков - Создание текстурной развёртки в 3D Max 7). Дело в том, что после применения всех модификаций реальный координаты вершин могут отличаться от того, как они отображаются (я так это понимаю). А после применения модификатора все приводится в норму.
Если необходимо, могу выслать на почту кубик в 3DS с текстурами к нему, чисто на пробу. Но вообще у меня возникли проблемы с наложением нескольких текстур. Почему-то остается только последняя текстура.
Может подскажете как Вы решаете эту проблему?
P.S. Таки может быть это поправит положение с тенями. Вектором указывается направление освещения. Колором я так понимаю цвет, относительно которого обрабатывается амбиент текстура, а Шайнес регулирует степень освещенности.
Код: |
node->setMaterialFlag(EMF_LIGHTING, true);
node->getMaterial(0).Shininess = 255.0f;
ILightSceneNode* light = smgr->addLightSceneNode(0,
vector3df(5,-15,5), SColorf(127.0f, 127.0f, 127.0f));
node->setMaterialTexture( 2, driver->getTexture("cube/cube_t_a.bmp") );
|
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
>Может подскажете как Вы решаете эту проблему?
Нам бы с одной справиться Вот например для того, что бы из макса выгрузить текстуру астероида додумались отрендерить ее на бокс а потом вырезать. Получилось честно говоря не очень. А про скайбокс звездного неба я ваще молчу
С Shininess очень интересный эффект получился. Самые освещенные полигончики сияют как стальные или ледяные. В общем круто, надо будет в дальнейшем использовать, однако проблему это не решило. Вот все настройки модельки
Код: |
IAnimatedMeshSceneNode* aster = smgr->addAnimatedMeshSceneNode(
smgr->getMesh("asteroid_04.3ds"));
aster->setPosition(vector3df(0,0,0));
aster->setMaterialTexture(0,driver->getTexture("ast.jpg"));
aster->setMaterialFlag(EMF_GOURAUD_SHADING,true);
aster->setMaterialFlag(EMF_LIGHTING,true);
aster->getMaterial(0).Shininess = 255.0f;
|
хотя в API reference сказано что EMF_GOURAUD_SHADING дефолтом стоит true, к тому же не помогает. Где еще можно копаться, если не в материале, я просто не представляю. Ну не в камере же и не в источнике освещения наконец. В итоге имеем вот такой вид
http://prolib.ru/.closed/aster02.JPG
|
|
|
-=Hed_GE_hoG=-
371 EGP
     Рейтинг канала: 1(3) Репутация: 135 Сообщения: 2528 Откуда: Минск Зарегистрирован: 11.06.2005
 |
|
Ужость, а где группы сглаживания?
_________________ Пришлёл, задрал майку. Ушёл не отодрав ни майку ни зайку (с) |
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Таки это проблемы с самой моделькой. Хм, Вы грузите анимейтед меш. А он реально анимированный или статичный?
А эффект металлического блеска - это настройки текстур в максе, по-моему.
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
> А он реально анимированный или статичный?
Статичный
В общем плюнул я на 3ds и скачал экспортер в X. Все стало сглаженным, но насчет материалов я думал будет поумнее, раз уж не 3ds.
|
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Сейчас попробую статик меш загрузить как анимированный, посмотрю что из этого получится. И результат сообщу.
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Проверил, у меня от кубика вообще ничего не осталось, хотя ирллихт в логах говорит, что все нормально загрузилось. Так что дело именно в подгрузке меша.
Надо делать таким образом:
smgr->addOctTreeSceneNode(mesh->getMesh(0))
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
>хотя ирллихт в логах говорит
какая версия?
|
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Версия 1.1
Но меня больше интересует как накладывать несколько текстур. У меня, почему-то, не получается:
Код: |
node->setMaterialType(EMT_REFLECTION_2_LAYER);
node->setMaterialTexture( 3, driver->getTexture("cube/Lakerem.bmp") );
node->setMaterialFlag(EMF_LIGHTING, true);
node->getMaterial(0).Shininess = 255.0f;
ILightSceneNode* light = smgr->addLightSceneNode(0,
vector3df(5,-15,5), SColorf(127.0f, 127.0f, 127.0f));
node->setMaterialTexture( 2, driver->getTexture("cube/cube_t_a.bmp") );
node->setMaterialTexture( 2, driver->getTexture("ship/PLATF_A.bmp") );*/
node->setMaterialType(EMT_SOLID);
node->setMaterialTexture( 0, driver->getTexture("cube/cube_t_d.bmp") );
node->setMaterialType(EMT_DETAIL_MAP);
node->setMaterialTexture( 1, driver->getTexture("cube/cube_t_b.bmp") );
|
В результате остается только последняя текстура.
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
Насколько я понимаю, дело в неверных настройках. setMaterialType устанавливает режим интерпретации всех 4 текстур.
для EMT_DETAIL_MAP
Цитата: |
The first texture is diffuse color map, the second is added to this and usually displayed with a bigger...
|
это значит что используется текстуры 0 и 1, а они у тебя судя по коду обе соответствуют cube/cube_t_d.bmp
Тип-то материала м.б. один. Значит после
Код: |
node->setMaterialType(EMT_REFLECTION_2_LAYER);
node->setMaterialType(EMT_SOLID);
node->setMaterialType(EMT_DETAIL_MAP);
|
в результате будет EMT_DETAIL_MAP
|
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Таки последняя мною накладываемая EMT_SOLID:
Код: |
node->setMaterialType(EMT_SOLID);
node->setMaterialTexture( 0, driver->getTexture("cube/cube_t_d.bmp") );
|
А предпоследняя EMT_DETAIL_MAP:
Код: |
node->setMaterialType(EMT_DETAIL_MAP);
node->setMaterialTexture( 1, driver->getTexture("cube/cube_t_b.bmp") );
|
И получается что они каким-то образом смешиваются??? Или я чего-то недопонял?
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
whirlwind
77 EGP
 Репутация: 26 Сообщения: 338 Откуда: Spb Зарегистрирован: 18.02.2005
 |
|
Не смешиваются они. Каждый тип материала требует от 1 до 4 текстур. Какому материалу сколько текстур соответствует, и за что отвечает каждая текстура для конкретного типа материала написано здесь http://irrlicht.sourceforge.net/docu/namespaceirr_1_1video.html#a129
EMT_SOLID - Standard solid material. Only first texture is used, which is supposed to be the diffuse material.
UPD:
Увы, проблема затенения методом гуру до сих пор актуальна. Сделали пробный модификатор для генерации сурфейса путем случаного масштабирования векторов от центра до вершины. Результат таков http://prolib.ru/.closed/aster_wire.JPG свойства материала
Код: |
obj->setMaterialFlag(video::EMF_WIREFRAME,true);
obj->setMaterialFlag(video::EMF_LIGHTING,true);
obj->setMaterialFlag(video::EMF_GOURAUD_SHADING,true);
obj->setMaterialFlag(video::EMF_NORMALIZE_NORMALS,true);
|
Даже после
Код: |
smgr->getMeshManipulator()->recalculateNormals(meshBuffer,true);
|
нифига гуру не получается. Результат такой http://prolib.ru/.closed/aster_invl.JPG .в коде закоменчен EMF_WIREFRAME. Где еще можно порыцо на предмет организации нормального сглаживания, у кого мож какие идеи есть?
|
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(33) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
А обязательно астероид курочить в виде меша? Может проще будет бамп наложить сверху? Или хочется чего-то более рельефного и с "дырочками"?
P.S. Сейчас сам попробую рельефненький весь из себя астер запузырить, посмотрю что получится и отпишусь.
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
|
|
|
Канал Игры Мечты: «Как правильно выгрузить 3ds из MAX-а?» |
|