• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

Плоскость сечения

Автор shkas, 08 ноября 2009, 01:03:00

« назад - далее »

shkas

Привет всем, задали мне задачку -постепенный рост строящегося здания, как на приатаченной анимашке. Я так понимаю , что нужно сделать поднимающуюся плоскость , которая бы обрезала часть здания. Как это можно реализовать? В 3D пакете это можно сделать посредством булевых операций, а в Квесте есть подобное? 

Viik

Цитата с офф форума:
ЦитироватьYou have a clip plane example in the Quest3D folder at "./Examples/Small Examples/clip plane.cgr"

shkas

О, спасибо! Под носом лежало не заметил.
Плохо только, что это Clip plane не показывает у обьекта сам срез. Это реально как-то победить?

Viik

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

shkas

Супер! Получилось! Просто как все гениальное!Спасибо огромное!!

Campo

#5
кто знает как ограничить область сечения плоскостью (Clipping Plane)? к примеру как-нибудь ограничить её кубом или цилиндром...??

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

DimiS

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

Campo

даже если модельки в разный рендер закинуть, а команду секущей между рендерами поставить, то она и на второй действует, а очистка от Clipping plane`ов убирает сечение и на первом рендере...

у модели вроде только к вертекс дате можно прикрутить эту Clipping plane, а толку ))
вообщем без понятия куда что прицеплять, чтобы плоскость резала только один объект, а остальные не трогала.

картинки и исходник ( версия 4.2.2 ) - в бетте 4.3.1 и демке 4.0.0  почему-то не работают Save Group\As\All Publish.  ((
всё что не делается, всё к лучшему...

DimiS

второй рендер подключи на место пустого слота, а клиар рендер плейнс после него, и будет тебе счастие)

Campo

#9
эврика! спасибо за помощь, DimiS )
а множественное использование рендера не сделает проект более требовательным к ресурсам пк? грубо говоря тормозить будет больше или нет, если я подключу к примеру 20 рендеров..?

сейчас буду пробовать прицепить секущую к какому-нибудь объекту...

--- с наступающим всех!!! ))) ---
всё что не делается, всё к лучшему...

DimiS

ну если количество полигонов увеличить то и тормоз увеличиться, если та же геометрия будет нарисована с большим количеством вызовов то производительность уменьшится совсем не на много, на 20-ти вызовах ты этого не заметишь

Campo

#11
кто-нибудь представляет себе как реализовать подобное при помощи команд плоскости сечения?
т.е. здесь её задать нужно либо боксом, либо тремя плоскостями...наврное )
всё что не делается, всё к лучшему...

Sqwer

Лучше поставить несколько моделей, чем так расправляться с одной.

Но если и крайне нужна двнная реализация то:
надо в цикле вызывать одну и туже геометрию несколбко раз
и перед каждым вызовом создавать клип плейн  - рендить-
переместить клип - рендать-...... рендть- закрывать клип плейны.

в твоём случае понадобится 3 вызова

Sqwer

Цитата: shkas от 09 ноября 2009, 13:22:55
О, спасибо! Под носом лежало не заметил.
Плохо только, что это Clip plane не показывает у обьекта сам срез. Это реально как-то победить?

Это делается вершинным шейдером.
пару условий - и всё готово.

Campo

Sqwer,
- интересный ход мысли про подключение 3х одинаковых моделей и их обрезание) единственный минус - модель может оказаться высокополигональной, и тогда этот вариант (его ещё надо опробовать) отпадает (.
на оф форуме задавал этот вопрос..)
http://forum.quest3d.com/index.php?topic=68269.0
- а пример с вершинным шейдером можешь скинуть?
или хотя бы схему, как это делается)?
всё что не делается, всё к лучшему...