![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Черешня |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.3.2009 Репутация: 1 Всего: 1 |
На экран выводится два объекта, упакованные с помощью Model3DGroup в один компактный ModelVisual3D…
То есть по сути выводим две пространственные сетки! Но вот заглюк!!! Если они где-то пересекаются, то изображение как-то нелепо начинает мигает… Мне-то наивно казалось, что та сетка, что определена в Model3DGroup первой, перекроется последующей сеткой… Или цвета должны аддитивно складываться… Вот краааткий код
Если о проблеме в общем, то вкратце все выглядит так: Грузится из файла модель …ну, например, корабля… С помощью слайдеров ее можно покрутить, повертеть, рассмотреть повнимательнгей! А в списке слева можно выбрать секцию, например, «Палуба» - и тогда соответствующее изображение автоматически выделится другим цветом. Но модель корабля грузится же одним файлом, т.е. представлена одной «цельной» пространственной сеткой.. А для выделения палубу формируем другую пространственную сетку и накладываем на первую.. И тут –то вся ерундовина и начинается… Изображение особенно при прокрутки бесится и переливается! То одна сетка куском на первый план вылезет..то другая!... ![]() |
|||
|
||||
Черешня |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.3.2009 Репутация: 1 Всего: 1 |
Мир не без добрых людей!!!!
...вдумчиво читаю про двойную буферизацию..думаю,в какое место ее приделать в WPF... |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Я плохо разбираюсь в 3D графике, но ты не пробовал сетку выделения, немного приподнять над основной на незаметную для глаза величину? Мне почему-то кажется, что эта беда из-за совпадающих по координатам плоскостей... А то что индекс второй сетки больше, то это не влияет на результат, так как при отрисовке все сортируется по плоскостям, а не мешам. Читал где-то, что в 3D графике есть алгоритмы разрешения таких конфликтов, но он занимает немалое, ополнительное время... Возможно этот алгоритм реализован в Viewport3D или ModelVisual3D или еще где-то в WPF, и тебе надо просто его как-то включить. В общем ничего толкового я тебе не сказал, но, возможно, расширил круг поиска решения проблемы... Как найдешь решение, не поленись, кинь сюда.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
Черешня |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.3.2009 Репутация: 1 Всего: 1 |
![]() Проблему как всегда удалось обойти, а не решить )))) ![]() В ModelGroup3D действительно реализовано что-то вроде Z-буфера по умолчанию - более поздние children' ы доминируют.... Т.е. вполне логичная картинка получается - какую сетку второй выводишь,такую и видешь! Но! Большое НО! Это только в том случае, если узлы первой сетки полностью совпадают со второй! А если эти две области совпадают, но триангулированы по-разному, то звездец... А так никаких свойств типа DoubleBuffered в WPF не предусмотрено! Вдумчивое прочтение Hepl'а с моими самонадеянными знаниями английского показало, что такое свойство реализовано только для WindowsForms, где 3D и не жалуют-то шибко... В конечном итоге при помощи ScaleTransform промасштабировала вторую сетку (можно было и подвинуть ее в принципе, но это надо бы высчитывать направление, а так ее просто чуть увеличила по всем параметрам ) и все пучком! Не мерцает ![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |