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

[shFX] Проблема с прозрачностью между объектами

Автор Alteste, 28 июля 2010, 16:31:20

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

Alteste

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

Ruslan

#1
а чем этот вариант не подошел?  :)
https://guest3d.wohlnet.ru/forum/index.php?topic=1531.0

Что бы правильно визуализировать полупрозрачные объекты, их нужно сортировать по удаленности, то-есть сначала рисуем дальний, затем ближний к камере.
В этой теме:
https://guest3d.wohlnet.ru/forum/index.php?topic=1467.0
я советовал использовать загрузчик, и хранить объекты в массиве.. можно было бы сортировать объекты в массиве, по удаленности от камеры..  ;)
Если у тебя сейчас объекты непосредственно линкуются к каналу рендер, то можно выйти из положения, нужно подключить объекты через ChannelSwitch, и мутить системку, которая берет значения удаленности объектов, загоняет их в массив, затем массив сортируется, дальше в цикле вызываются на рендер объекты, путем передачи в ChannelSwitch индекса.

Alteste

Со стандартными материалами квеста отличный вариант, но хотелось бы еще применительно к шейдерам.

Sqwer

Хотите увидеть уличную магию?

Alteste

Цитата: Sqwer от 28 июля 2010, 22:23:35
Хотите увидеть уличную магию?
Гениально, а если объектов штук 20 в сцене?

Alteste

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

Sqwer

#6
обычно сортируют (бэк ту фронт), но имеено в твоём примере сортировка бесполезна (объекты ввиде кольца охватывают другой)
В 11ДХ есть эффективное средство борьбы с этим, но Квест  развиваться не хочет.  :-\


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

DimiS

сначала рендерь непрозрачные объекты, потом прозрачные
прозрачные лучше отсортировать по приближенности к камере, это для реалистичности сцены
ну а если уже есть сортировка то можешь непрозрачные отсортировать по удалению от камеры, это для производительности

DimiS

#8
вот по шустрому набросал пример как можно сделать в квесте динамическое разделение на прозрачные и не прозрачные объекты с помощью ОО

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

Alteste

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

DimiS

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

DreadlockEugene

Alteste, как вы импортировали объекты на сцену?
Как сделать так чтобы был подключен канал HLSL Object? При стандартном импорте на этом месте канал 3d Object Data.. И простое замещение не подходит, т.к. объект просто пропадает.
Поэтому вижу лишь один выход - импорт как у вас. Подскажите, пожалуйста

DimiS

старая ObjectData никуда не выкидывается а коннектится к HLSL Object