1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Лечение импортированной геометрии

Тема в разделе "RealSoft3D", создана пользователем FSV141, 6 дек 2008.

Модераторы: Moderator.
  1. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Импортировал (через OBJ) из MAX-а модель в Realsoft. Какая там сетка - не сложно догадаться. Но делать нечего. Другой такой модели нет и не предвидится. Кстати, вполне возможно, что модель вообще сделана сканером. Полигонов много - за миллион.
    В финальных сценах предполагаются крупные ракурсы и в этом случае все красоты полигональных граней будут видны очень хорошо.
    Если включить Phong, то вылазят артефакты НЕплоских полигонов и результат выглядит еще хуже!
    Посоветйте, что делать? Как оптимизировать геометрию? Как автоматом избавиться от НЕплоских полигонов (вручную это нереально)?

    Попутно предложение для разработчиков: может стоит сделать "у Фонга" регулируемый параметр порогового значения угла, когда он срабатывает? В Cinema 4D у тега Phong есть такая штука. И она частенько здорово выручает!
     

    Вложения:

    • 1001789.jpg
      1001789.jpg
      Размер файла:
      68,6 КБ
      Просмотров:
      158
    • 1001790.jpg
      1001790.jpg
      Размер файла:
      50,6 КБ
      Просмотров:
      172
    • 1001791.jpg
      1001791.jpg
      Размер файла:
      84,4 КБ
      Просмотров:
      156
    • 1001792.jpg
      1001792.jpg
      Размер файла:
      16,5 КБ
      Просмотров:
      154
  2. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Для справки - Пороговое значение угла задается инструментом > Crease.

    Ситуация понятна и знакома. Вариантов два:
    1 Лечить то что есть. Не самый кроткий путь.
    1.1 Использовать инструмент JoinF. Часто после импорта из Мах мы получаем не цельную поверхность (судя по скиншотам, у тебя так и произошло), а набор отдельных полигонов . Этот инструмент поможет решить эту задачу. надо будет поиграть порговым значением Join distance для желаемого результата.
    1.2. Eсли после этого в поверхности еще имеются "дырки" то закрываем из при помощи инструмента Fill
    1.3 Когда все полигоны соединены применяем интсрумент T>Q. Преобразовываем треугольные face в четрырехугольники.
    1.4 Если результат после все этого не совсем устраивает - то придется почистить топологию руками. Понимаю что муторно, но иногда другого выхода нет

    Но судя по скиншотам, топология Edge нарушена сильно.
    То вариант 2.
    Не занимаемся реанимацией сетки, а делаем красивый ход:)
    2.1 Создаем SDS сферу, так что бы весь объект целиком поместился в нее. Плотность поверхности выбираем исходя из сложности исходного объекта
    2.2 Делаем масштабирование новой sds сферы относительно ее центра (about Pivot) с включенно опцией Collision Deformation. Результат- поверхность SDS сферы теперь обтянула исходную геометрию. Плюс такого метода - он очень быстр и получившиеся топология новой поверхности в содержит в раЗы меньше полигонов, при этом сохраняя форму импортированного объекта их MAX.

    Метод имеет вариации в зависимости от формы импортированного объекта (может потребоваться несколько этапов "приглаживания" разными инструментами трансформации с включенным режимом Collision Deformation ). Н окак правило он более эффективен чем путь варианта 1. Обычно, я пользуюсь имеено вторым вариантом.
     
  3. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Дима, огромное спасибо! Особенно за советы "первой группы".
    Мысли насчет обтягивания сферой с включенным Collision приходили и в мою дурную голову. Несколько смутило меня наличие в некоторых объектах дыр... Но тут пробовать надо.
    Еще раз огромное спасибо! Главное, теперь у меня есть за что зацепиться!
    Что получится - отпишу.
     
  4. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    к первой группе можно еще добавить инструмент "Unwrap". Позволяет разгладить сетку. Очень удобен в сочетании с SoftSelection.

    По второму варианту. Использование Collision Deformation. очень эффективный путь. Часто пользуюсь для построения SDS поверхности по NURBS, импортированной из того же Rhino. Приемущества - быстро получаем нужную топологию в SDS с полным контролем гладкости (по NURBS "болванке").
     
  5. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    2-й вариант не работает. По крайней мере со сферой. У меня, конкретно, подвздошная кость таза... а что будет с черепом?!?!? - страшно представить!
    Так вот, в ней (в модели кости) есть дыры... и вообще, геометрия... я бы сказал, невыпуклая. Вот на такого рода объектах, похоже "метод обтягивания сферой" не работает.

    Была мысль использовать шесть плоскостей (расположенных как поверхности куба) и их натягивать на соответствующие стороны объекта (с включенным Collision). Но вот непонятно как потом сшивать из этих лоскутов поверхность? Было бы здорово, совмещая две искривленные плоскости рассекать их по линии пересечения. А потом уж сшить - дело техники.... я так думаю... Но как это сделать???
     
  6. __yra

    __yra Активный участник

    С нами с:
    20.10.2005
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    7
    А может быть поверху руками новую модель сваять привязываясь через 5 к ключевым точкам имеющейся модели?
    Мне даже интересно стало, может выложишь эту косточку где нибудь, что бы попробовать.
     
  7. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Да там целый скелет! ;)
    Хотя мне нужны пока только вот эта подвздошная и бедренная кости...
    Но выложить конечно же могу. Счас....
    http://ifolder.ru/9468714
    Только я MAX-овскую модель выложил, потому что она НАМНОГО компактней. Найдется Макс в хозяйстве? Я сам его обычно не держу, но вот пришлось скачать поставить. Если Макса нет или нет желания его ставить ради этой ерунды, то могу конечно закинуть и R3D-шный файл. Только это надо из дома делать. Тут у нас трафик считается :(
     
  8. __yra

    __yra Активный участник

    С нами с:
    20.10.2005
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    7
    Завтра отвечу, не помню стоит ли макс на 2 машине
     
  9. __yra

    __yra Активный участник

    С нами с:
    20.10.2005
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    7
    http://ifolder.ru/9478623
    Вот вариант который сделал масштабированием цилиндра с коллизиями.
    Точной геометрии не получил, без серьёзной ручной правки думаю невозможно в принципе.
    Такое впечатление, что исходная модель получена в результате сканирования.
    Правда в исходной модели не наблюдал артифактов не позволяющих использовать её в рендеринге.
    FSV141 - перед экспортом из макса ты её конвертировал в поли?
     
  10. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Я обратился в форум пользователей MAX-а и мне там помогли привести модель к исходному низкополигональному виду:http://www.render.ru/forum/viewtopic.php?post_id=698116#698116
    Однако, всех проблем это не решило.
    Во-первых, при сглаживании уже внутри Realsoft сильно искажается геометрия. Например, становится неправдоподобно толстой шейка головки бедра.
    Во-вторых, сглаженная геометрия совсем получается "дурная" по количеству полигонов. Почти не ворочается!..
    Так что выход один - работать с исходной (в МАКС-е сглаженной) моделью.

    И тут мне пришло в голову проверить модель в Cinema 4D. Сначала сделал FBX-файл. Риал его не открыл, а Синема очень даже хорошо съела. Я был удивлен, но у Синемы никаких проблем с отображением сетки не наблюдалось! Сначала я подумал, что всему виной FBX и сделал OBJ, который "скормил" обоим пакетам. Оба его съели вполне успешно. Кстати, во вьюпорте Realsoft 3D моделька крутится чуть живее, чем в Синеме. Это приятно, но это мелочи в сравнении с рассматриваемыми проблемами...
    Каково же было мое удивление, когда я обнаружил, что Синема и тут прекрасно показывает модель, а у Риала с ней все те же проблемы.

    Я включил Фонг на подвздошную кость и сделал "контрастный тест". То есть, наложил на модель кости простейший материал, со включенным отражением. Что получилось - хорошо видно на картинках.
    Попутно заметил, что рендерит Синема как минимум в два раза быстрее (это видно по пику процессорной нагрузки на графиках) и, что самое главное, почти не ест дополнительно памяти, тогда как Риал быстро съел всю доступную оперативку и начал свопить :( В этом контексте становится понятной политика разработчиков по сокращению шагов для отката. Это съедает много памяти. Сам же менеджмент памяти в Реалсофте никуд ане годится :(

    Дима, может стоит описать разработчикам обсуждаемую тут ситуация. Может они, варясь в собственном соку не знают о вышеназванных проблемах?
     
  11. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Картинки забыл прилепить! :(
     

    Вложения:

    • 1010329.jpg
      1010329.jpg
      Размер файла:
      97,7 КБ
      Просмотров:
      154
    • 1010330.jpg
      1010330.jpg
      Размер файла:
      89,4 КБ
      Просмотров:
      209
    • 1010331.jpg
      1010331.jpg
      Размер файла:
      106,5 КБ
      Просмотров:
      156
    • 1010332.jpg
      1010332.jpg
      Размер файла:
      113,6 КБ
      Просмотров:
      173
    • 1010333.jpg
      1010333.jpg
      Размер файла:
      12,5 КБ
      Просмотров:
      151
  12. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Сергей ну просто удивительно:)
    Взял ради интереса твой проект и просчитал косточку. Ничего с ней не делал. Тупо поставил три источника света (два SpotLight и ambient) и нажал рендер. Время 18 секунд и 23 секунды на очень слабенькой машинке (Р4 2.4 1GB Ram).


    По FBX. В 6 версии есть проблемы с этим форматом при импорте/экспорте анимации. Сейчас над этим усиленно трудятся:) С импортом геометрии все должно быть нормально. Если можно пришли мне свой FBX.


    Сравнивать время рендера так совсем не корректно. В RS - рендер оптимизируется под каждую сцену. Тот присет, который у тебя показан на скриншоте имеют установку по умолчанию в настройках PostProc>включенную опцию Safety area Вот для начала ее надо отключить, иначе ты считаешь картинку в четыре раза больше чем есть на самом деле. Так же надо отключить все разделы рендера относящиеся к Volum. Далее посмотреть какой размер на Scale стоит на постобработке (если он используется). Параметр Geometry Quality в товое случаи можно ставить в Low (сетка модели и так очень плотная). По этой же причине в настройках реденринга самой "косточки" вполне можно поставить 1 вместо 2 (по умолчанию) в Quality. Проделав то что я только что написал я сократил время просчета с 23 секунд до 9 ти. А еще масса параметром остались не тронутыми:)

    RS прекрасно работает с памятью. Тот режим который стоит по по умолчанию использует всю имеющуюся память под задачи рендеринга. Если оперативки не хватает то начинает использоваться свап. Что у тебя и произошло. Программа сделала то что ты ей задал. Зайди в раздел Mics>Memory Usage и поставь тот режим работы с памятью который для тебя более выгоден.


    PS Меня насторожили вот эти слова - "при сглаживании уже внутри Realsoft сильно искажается геометрия" Можно поподробнее что и как ты тут на сглаживал. Похоже, многие проблемы твоего проблемного рендеринга вытекают именно из этих строк.
     

    Вложения:

    • 1010624.jpg
      1010624.jpg
      Размер файла:
      26,4 КБ
      Просмотров:
      153
    • 1010625.jpg
      1010625.jpg
      Размер файла:
      30,6 КБ
      Просмотров:
      155
  13. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    ДА вот еще в догонку.

    Важно иметь в RS при импорте НЕСГЛАЖЕНУЮ модель. Т.е никаких сглаживанний в MAX делать нельзя ни коем случаи. Иначе мы получаем твой первый вариант модели - огромное количество лишней информации.
    Вот то что получилось при импорте твоей новой модели, которую тебе помогли сделать в ветке МАХ.

    Как видим, топология совершенно правильная и рендер нормальный. Не прибегая к оптимизации, о которой я писал выше, я получил картинку на экран 1600ч1200 ровно за 3 секунды просчета. Для форума ее пришлось уменьшить в размерах (больше 1024х1024 точек картинки тут не разместиш).
     

    Вложения:

    • 1010754.jpg
      1010754.jpg
      Размер файла:
      61,5 КБ
      Просмотров:
      151
    • 1010755.jpg
      1010755.jpg
      Размер файла:
      22,5 КБ
      Просмотров:
      159
  14. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Еще в догонку :rolleyes:

    Порядок работы с моделью следующий
    1. Сразу после импорта разделить скелет на кости. ДЛЯ этого делаем так:
    Переходит в режим Face. Выделяем любой одиночный Face и нажимаем Shift+ стрелка вверх. Не отпускаем до тех пор пока не выберутся все face-ы. После этого идем в окно иерархии и с зажатым Ctrl перетягиваем наш объект. Мы получили копию но при этом выбранные face остались активны. Делаем Invert Selection (Ctrl+I, как в Photoshop-е) и командой Destroy удаляем лишнее. Переименовываем наш новый объект так как нам нужно. Теперь возвращаемся на "родительский" объект и видим что наша выбор face до сих пор активен. Опять же при помощи команды Destroy удаляем face. Все:)
    2. Теперь надо приступить к небольшому лечению геометрии после импорта. Если она еще в треугольниках то выполняем T>Q. После этого надо посмотреть правильность Edge в модели. Иногда появляются лишнии или наоборот не хватает. В идеале вся наша модель должна быть из 4-х угольников если где то это требует углубленнго редактирования то это мето не трогаем занчит так и надо:)
    3. Изменяем тип сглаживания c полигонального на Smoothen to .... по выбору. Если в модели есть открытые поверхности то не забываем включить Interpolate Boundary.
     
  15. __yra

    __yra Активный участник

    С нами с:
    20.10.2005
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    7
    Я тоже качнул обновлённую модель и не увидел проблем.
    переключил в сабдивы и поставил материалы с амбиент оклюжен и отражением, рендерит быстро, дефектов не увидел.
     

    Вложения:

    • 1011664.jpg
      1011664.jpg
      Размер файла:
      78,6 КБ
      Просмотров:
      141
    • 1011665.jpg
      1011665.jpg
      Размер файла:
      77,6 КБ
      Просмотров:
      163
  16. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Ну что-ж, в очередной раз хочу сказать ОГРОМНОЕ спасибо Диме. Очень много полезной информации узнал. Будем дальше работать, ибо этот проект как раз очень хотелось сделать в Realsoft-е. Да и вообще перейти на него полностью.

    Единственный вопрос остался без ответа: почему плохую геометрию Синема и Гудини показывают хорошо, а Реалсофт плохо?
     
  17. __yra

    __yra Активный участник

    С нами с:
    20.10.2005
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    7
    FSV141 - один из вариантов видеодрайвера ( из своей практики: не всегда последние для ATI )
     
  18. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Сергей, выкладываю OpenGL косточки по первому варианту геометрии. Видеокарта GF6800. Тоже стоит задуматься:)
     

    Вложения:

    • 1012759.jpg
      1012759.jpg
      Размер файла:
      37,5 КБ
      Просмотров:
      147
  19. FSV141

    FSV141 Активный участник

    С нами с:
    17.06.2008
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    11
    Я чуть было не задумался... если бы реалсофтовский рендер не показывал то же самое, что и OpenGL.

    Давайте расставим точки над "i". Что вы называете первым вариантом геометрии? Я считаю, что это конвертированный из MAX в obj-формате ИСХОДНЫЙ файл (без помощи со стороны специалистов по МАКС-у). У меня он, кстати, получается с разделенными объектами. То есть, тот файл, котоый МАКС сглаживал. У меня на нем видны артефакты как во вьюпорте, так и на рендеринге. Что я могу делать неправильно? Степень моего влияния на геометрию близка к нулю!
     
  20. ODA

    ODA Знаток

    С нами с:
    13.01.2006
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Ну да, я про ту же самую геометрию из первого архива (пост #7). Как раз тесты (картинки в постах #12 и #18) делались именно с этой моделью. Хотя, если быть совсем правильным, то это уже сглаженная MAX-м поверхность, а значит она уже содержит погрешности. Если есть возможность то желательно начать работать с исходной моделью - т.е моделью которая была до сглаживания в МАХ-е. Она по топологии должна быть похожа н модель второго варианта (восстановленную при помощи ребят с ветки по Максу). Конечно, перообразование <> внесли в нее искажения, но насколько они критичны, зависит от поставленной задачи.

    Сергей, я взял имеено твою модель и на ее базе сделал картинки. Мне трудно сказать что ты делаешь не так и почему у тебя такой результат. Но отличия видно не вооруженным глазом.
    Порядок своих действия я уже писал . Добавлю, что после проверки модели на "дырки" и направления нормалей поставил режим Rendering Type >Smoothen to trianles и все... никаких артифактов как в OpenGL так и на рендере. Если крупных планов не планируется (печать на плакаты) то можно из SDS перевести поверхность в Triset. Там задать угол сглаживания для полигонов и получит модель как в МАX/Cinema и т.п.
     
Модераторы: Moderator.

Поделиться этой страницей