Polyfx cinema 4d не разбивает объект

Обновлено: 06.07.2024

Глюк при создании точки на кривой с новым инструментом в Cinema 4D R17

Полезные штуки, которые я для себя нахожу и не хочу забывать. А так же вызывающие раздражение.

Canonical Link

Глюк при создании точки на кривой с новым инструментом в Cinema 4D R17

Одним из самых главных нововведений в программе Maxon Cinema 4D стали новые инструменты для создания сплайнов. Новые возможности, новые функции, предпросмотр.

Cinema 4d r17 new spline pen tool.jpg (9.81 КБ) 2464 просмотра Cinema 4d r17 new spline pen tool.jpg (9.81 КБ) 2464 просмотра

:we_all_gonna_die:


Все круто, НО! почему же это работает так хреново?

Cinema 4d r17 add new spline point.jpg (9.69 КБ) 2464 просмотра Cinema 4d r17 add new spline point.jpg (9.69 КБ) 2464 просмотра

:slow:


Вот сделали возможность быстро создавать точки на кривой. Удобно? Бесспорно! Но какого же черта они создаются где то в другом месте?

Cinema 4d r17 add new spline point bad.jpg (9.34 КБ) 2464 просмотра Cinema 4d r17 add new spline point bad.jpg (9.34 КБ) 2464 просмотра

:grin:


Хорошо хоть старый метод по прежнему в деле! Но до него еще додуматься надо Выбираем инструмент Move, зажимаем клавишу CTRL и щелкаем по кривой.

Cinema 4d r17 add new spline point old.jpg (14.78 КБ) 2464 просмотра Cinema 4d r17 add new spline point old.jpg (14.78 КБ) 2464 просмотра

:high:


Но что надо курить, чтобы придумать такой странный алгоритм?

Есть модели которые идут одним объектом, возможно ли как-то именно в Cinema 4D (не в другой программе) их разбить на отдельные объекты.

вот есть бревна и рядом палки, как из них сделать самостоятельные объекты?

вот есть бревна и рядом палки, как из них сделать самостоятельные объекты?

Так сразу переёдем к делу)

Сначала надо выделить полигоны, которые нужны и нажать комбинацию U и P вместе -- в окне объектов будет отдельный объект с полигонами которые ты выделил.

Далее не снимая выделений полигонов и ничего не трогая, жми Delete - тогда из исходного объекта удалятся отделенные полигоны дров.

Есть другой способ,если старая версия без ножа-

Засунь их сюда вот так по адресу -MAXON\CINEMA 4D Rхх\library\scripts.

и/или Program files\MAXON\CINEMA 4D Rхх\library\scripts.

P.S Рхх - это версия твоя,не пугайся)

Может и есть данный скрипт у тебя, если нет-то очень полезная вещь-скрипт режущего ножа

Если на объектах есть выделения ребер, то нож разрезает вдоль этих выделений.

Если на объектах нет выделения ребер, то скрипт запускает нож, для того, чтобы им можно было пометить необходимые разрезы. Помечать разрезы можно хоть чем не приниципиально.

После разреза помеченых, жми на нож еще раз и модели будут разрезаны.

Там же для метки 2 скрпита ещё есть-

1-UvSeam метишь в режиме ребер, места где развертка разорвана, а 3d модель в том же месте связная.

2-UvBound ставишь метки в режиме ребер на 3d модели границы развертки.

  1. Вообще как разъединишь можно будет эффект взрыва хорошо смотреться, если управишься с разъединением всех бревен и еще их разобьешь по детально, потом на каждый кусок эффект горения с заменой на папел, ладно я отошел от вопроса,просто тебе идея и любил создавать взрывную графику, так что часто приходилось делить, щас нанял сотрудника,ибо глаза не те.
  2. Вообщем если т новик вот как можно так сказать разбросать для начала эффектом таким.
  3. Выделяем в режиме редактирования полигонов все сегменты плоскости комбинации клавиш Ctrl+A, после чего на верхнее меню ищем пункт Functions, и в их этого пункта меню выбираем Disconnect.
  4. В объекте настройках у тега ставим галочка рядом с Enabled и значение Off параметра Dynamic.
  5. Нажимай в верхней панели инструментов кнопку динамических модификаторов и в меню выбирай создание объекта Explosion FX.
  6. В верхнем заходимменю Cinema 4D, пункт MoGraph, в меню — пункт Fracture
  7. Назначение Fracture передавать некоторым функциям возможность жействии отдельными составляющими одной модели это были бы клоны . Плоскость, где бревна, у нас сейчас состоит из отдельных, не связанных друг с другом полигонов. А толщину этим полигонам придаёт модификатор Explosion FX. Осталось превратить куски бревен в отдельные объекты. Нужно подчинить объекту Fracture созданную нами плоскость с модификатором Explosion FX. Присваиваем объекту Fracture тег динамики и переходим к настройке параметров. П.С вроде я забыл что надо создать плоскость,но я думаю ты понял)
  8. Выделяем объект «Fracture» в менеджере объектов и во вкладке Object указываем для параметра Mode значение Explode Segments
  9. Потом в менеджере объектов динамики, назначенный объекту Fracture, и ниже открывается окно его свойств и там настраиваешь как хочешь.

Как и всем говорил по началу методом тыка и практики учитесь, и я сам до сих пор с новой версией нахожу новые фичи, хотя уже давно не занимаюсь редактированием.

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

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

Вложения

1001789.jpg

1001792.jpg

1001791.jpg

1001790.jpg

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

Для справки - Пороговое значение угла задается инструментом > 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. Обычно, я пользуюсь имеено вторым вариантом.

FSV141

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

к первой группе можно еще добавить инструмент "Unwrap". Позволяет разгладить сетку. Очень удобен в сочетании с SoftSelection.

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

FSV141

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

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

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

__yra

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

FSV141

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

__yra

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

__yra

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

FSV141

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

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

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

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

FSV141

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

Вложения

1010333.jpg

1010332.jpg

1010331.jpg

1010330.jpg

1010329.jpg

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

Сергей ну просто удивительно
Взял ради интереса твой проект и просчитал косточку. Ничего с ней не делал. Тупо поставил три источника света (два 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 сильно искажается геометрия" Можно поподробнее что и как ты тут на сглаживал. Похоже, многие проблемы твоего проблемного рендеринга вытекают именно из этих строк.

Ещё один способ правдоподобно разнести на куски объект в Cinema 4D

К этому уроку прилагается 3D-сцена

Как вы помните, в предыдущем уроке по физически правдоподобному разрушению объектов в Cinema 4D мы с вами успешно расколошматили золотую амфору (или нечто наподобие). Однако процесс этого акта виртуального вандализма выглядел, увы, не вполне реалистично: амфора просто лопнула, без влияния какого-либо внешнего воздействия, после чего её куски осыпались на пол под действием гравитации. А что если бы нам понадобилось разбить амфору более убедительно — каким-либо движущимся предметом, ударившим по поверхности амфоры?

К сожалению, приведённый в вышеупомянутом уроке способ не вполне подходит для визуализации разрушения одного предмета при воздействии на него другого. Зато гораздо лучше подходит другой, который мы с вами и разберём в данном уроке. Выглядит он не менее реалистично, а с учётом новых возможностей — даже более реалистично.

Пуля разбивает стекло

В качестве подопытных объектов выберем что-нибудь несложное — в нашей сцене летящая пуля будет разбивать обычное плоское стекло.

Для начала создаём новую плоскость («Plane») — заготовку будущего стекла, которое нам (вернее, пуле) предстоит разбить вдребезги.

Создаём плоскость («Plane») — заготовку стекла

Предваряя почти наверняка сразу же возникший у вас вопрос «зачем нам не имеющая объёма плоскость, когда можно сразу же создать готовое стекло из куба с нужной толщиной?» — отвечу: немного терпения! Главная хитрость заключается именно в создании стекла, именно с неё мы начинаем, именно её мы сейчас и разберём по шагам подробнейшим образом. На всё остальное в нашей трёхмерной сцене у нас с вами уйдут считанные минуты.

Итак, мы создали плоскость. Задаём в её свойствах «Width Segments» и «Height Segments» значение 1: большее значение этих параметров рассечёт нашу плоскость набором строго перпендикулярных рёбер, что для нашей с вами задачи не подходит — для пущего правдоподобия стекло должно разбиваться на хаотичной формы осколки, а не на аккуратные, идентичные друг другу по форме и размеру параллелепипеды.

Отлично, никаких внутренних рёбер на поверхности плоскости не видно.

Задаём значение 1 для свойств плоскости «Width Segments» и «Height Segments»

Теперь переводим плоскость в редактируемый полигональный объект, переходим в режим редактирования полигонов и выбираем инструмент «Нож». На иллюстрации ниже все три действия для наглядности совмещены — в реальности же инструмент «Нож» становится доступен только после превращения плоскости в полигональный объект.

Превращаем плоскость в полигональный объект и выбираем инструмент «Нож»

Выбираем наиболее подходящую проекцию и режем виртуальным «ножом» плоскость на неровные полигоны.

Режем плоскость на множество неровных полигонов

До сих пор мы с вами делали всё в точности так же, как в упомянутом мной выше уроке: создали поверхность будущего объекта, разрезали её на хаотичные сегменты.

А вот теперь начинаются отличия от предыдущего способа.

Выделяем в режиме редактирования полигонов все сегменты плоскости (быстрее всего сделать это при помощи классической комбинации клавиш Ctrl+A), после чего обращаем взгляд на верхнее меню Cinema 4D, где ищем пункт «Functions», и в выпадающем их этого пункта меню выбираем «Disconnect» («Отделить») — эта функция разъединит между собой выделенные нами сегменты плоскости.

Разъединяем между собой полигоны плоскости

На данном этапе будет нелишним создать или импортировать в трёхмерную сцену какую-нибудь окружающую обстановку, на фоне которой бьющееся стекло выглядело бы особенно эффектно — а заодно можно было бы выбрать исходное расположение будущего стекла. В принципе, конечно, это можно сделать и позже. Если же вы последовали совету автора и решили настроить окружающую обстановку до окончания работы над стеклом, то я также советую вам заодно добавить и тег динамики к объекту, представляющему собой в вашей сцене помещение, внутри которого будет разбиваться стекло. Настройки у тега вполне заурядные — галочка рядом с «Enabled» («Активно») и значение «Off» параметра «Dynamic».

Добавляем тег динамики для модели помещения, где будет разбиваться стекло

Однако вернёмся к работе над стеклом.

Как вы помните, наше стекло — всё ещё не имеющая объёма плоскость с нулевой толщиной. Исправим этот недочёт. Нажимаем в верхней панели инструментов кнопку динамических модификаторов и в выпадающем меню выбираем создание объекта «Explosion FX» (проще говоря, модификатора «взрыв»), затем подчиняем модификатор разрезанной на сегменты плоскости.

Добавляем в трёхмерную сцену объект «Explosion FX» для создания объёма стекла

Ага, скажете вы, и в предыдущем уроке мы делали то же самое!

Не совсем. В данном способе имеются принципиальные отличия. Во-первых, где будет располагаться эпицентр модификатора взрыва — нам с вами совершенно безразлично: модификатор нужен нам только для придания стеклу толщины, и если у автора в сцене он находится рядом с моделью стекла — то лишь затем, чтобы не бегать лишний раз по всей сцене из стороны в сторону от объекта к объекту. Во-вторых, мы с вами не станем подбирать значение параметра «Time» («Время») модификатора «Explosion FX», а зададим этому свойству значение 0 — у нас нет необходимости визуально отделять сегменты модели стекла друг от друга, напротив, нам необходимо, чтобы все сегменты плотно прилегали друг к другу точно так же, как до использования нами функции «Disconnect».

Указываем значение 0 для параметра «Time» модификатора «Explosion FX»

А теперь — внимание! — «изюминка» разбираемого способа, его главный секрет.

Верхнее меню Cinema 4D, пункт «MoGraph», в выпадающем меню — пункт «Fracture» («Разломать»).

Создаём объект «Fracture»

Назначение объекта «Fracture» — передавать некоторым функциям Cinema 4D (модификаторам клонов, динамике и т. д.) возможность манипуляции отдельными составляющими одной модели так же, как если бы это были клоны — в том числе полигонами и создаваемыми при помощи модификаторов подобъектами.

Плоскость, изображающая стекло, у нас сейчас состоит из отдельных, не связанных друг с другом полигонов. А толщину этим полигонам придаёт модификатор «Explosion FX». Осталось превратить куски стекла в отдельные объекты. Сделать это несложно — достаточно подчинить объекту «Fracture» созданную нами плоскость с подчинённым ей модификатором «Explosion FX». В завершение присваиваем объекту «Fracture» тег динамики и переходим к настройке параметров.

Подчиняем объекту «Fracture» созданную нами плоскость и присваиваем объекту тег динамики

Перво-наперво выделяем объект «Fracture» в менеджере объектов — чтобы открыть ниже окно его свойств — и во вкладке «Object» указываем для параметра «Mode» («Режим») значение «Explode Segments» («Взорвать сегменты»).

Выбираем режим разделения сегментов объектом «Fracture»

Далее выбираем в менеджере объектов тег динамики, назначенный объекту «Fracture», и ниже открывается окно его свойств. Здесь нам придётся повозиться немного дольше, чем ранее с окружающей обстановкой.

Значение «Enabled» во вкладке «Dynamics», разумеется, должно быть активировано (то есть рядом должна стоять галочка). Динамика также должна быть включена — у параметра «Dynamic» должно быть значение «On». Значение параметра «Trigger» («Активация») в этой же вкладке должно выглядеть как «On Collision» («При взаимодействии») — это принципиальное отличие динамики стекла в сцене от динамики пули и помещения, у которых аналогичный параметр должен иметь значение «Immediately» («Немедленно, сразу же»). Во вкладке «Collision» («Пересечение») у параметра «Inherit Tag» («Тэг наследования») должно быть значение «Apply Tag To Children» («Применять к дочерним элементам»). Параметр «Individual Elements» не должен иметь значение «Off» — выберите уровень наследования, если у вас иная глубина иерархии, нежели у автора, а ещё лучше и проще выбрать пункт «All» («Всё»). Для параметра «Shape» («Геометрия») рекомендую выбрать значение «Moving Mesh» — это значение позволяет рассчитать взаимодействие стекла с пулей наиболее точно и корректно для анимации.

Наконец создаём (или импортируем в проект) пулю, которая должна разбить стекло. Разумеется, не забываем назначить и ей тег динамики, но с теми же настройками, что и у помещения, на пол которого будут падать осколки стекла — движение пули в нашей сцене будет обеспечиваться ключами, а не физикой. Динамика нужна пуле только для взаимодействия со стеклом. Соответственно, создаём траекторию пули, указывая для начального и финального кадров её начальное и конечное положения.

Напоследок не помешает добавить — при самостоятельном создании сцены тщательно повозитесь с настройками тега динамики, включая «прыгучесть» осколков, силу трения и многое другое. Это важно не только для максимальной реалистичности результата, но ещё и потому, что при неправильной настройке некоторые куски стекла могут после удара пули неподвижно повиснуть в пространстве.

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

Созданное нами стекло состоит из множества отдельных осколков, имеющих толщину и пригнанных друг к другу без видимых зазоров (так как раньше они были сегментами модели и были отделены друг от друга без какого-либо смещения). Пуля ударяет в один из осколков, и тот начинает двигаться и вращаться. Поскольку он вплотную притёрт к соседним осколкам, то при вращении он толкает их своими гранями, и осколки-соседи также начинают движение и вращение, в свою очередь толкая соседние с ними осколки. Другими словами, это нечто вроде взрывной волны, которая расходится по плоскости стекла в разные стороны, заставляя принимать участие в анимации все входящие в состав стекла осколки.

Однако, несмотря на плотное взаимодействие между собой осколков стекла, всё же возможна ситуация, при которой один из них, если можно так выразиться, не получит свою порцию взаимодействия от соседей — не забывайте, что по законам физики ударная волна распространяется с затуханием, это соблюдено и в Cinema 4D, — и в этом случае осколок повиснет в воздухе.

К сожалению, у вышеописанного способа разбить объект по всем правилам физики имеются три существенных недостатка.

Первый недостаток заключается в том, что после полного приготовления модели к её разбиванию на куски — тег «Phong» (сглаживание поверхности) на её поверхность не действует, так как модель представляет собой набор не связанных между собой полигонов, по каковой причине способ плохо подходит для анимации разбивающихся предметов со сглаженной кривизной поверхностей.

Второй недостаток — это видимость граней прозрачной модели до момента её взаимодействия с предметом, которому предстоит её разбить (что отчётливо видно после рендера первых кадров сцены, приложенной к данному уроку), в силу чего способ лучше всего подходит для анимации разбивания непрозрачных предметов.

Третий и последний недостаток — это отсутствие иерархической многоступенчатости процесса, при которой — применительно к приложенной к уроку сцене — пуля разбивала бы стекло на группу осколков, каждый из которых после падения на пол, в свою очередь, разбивался бы на подгруппу более мелких осколков.

Вместе с тем у модификатора «Fracture» есть и иные применения, которые мы с вами рассмотрим, возможно, в следующих уроках.

Читайте также: