Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WPF пересечение пространственных сеток, ...они так страааанно мигают.... 
:(
    Опции темы
Черешня
Дата 2.4.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 12.3.2009

Репутация: 1
Всего: 1



На экран выводится два объекта, упакованные с помощью Model3DGroup в один компактный ModelVisual3D…
То есть по сути выводим две пространственные сетки! Но вот заглюк!!! Если они где-то пересекаются, то изображение как-то нелепо начинает мигает…  Мне-то наивно казалось, что та сетка, что определена в Model3DGroup первой, перекроется последующей сеткой… Или цвета должны аддитивно складываться…
Вот краааткий  код

Код

<Viewport3D >
          < бла-бла-бла, задается камера..не суть!>

         <ModelVisual3D>

           <ModelVisual3D.Content>
        
                       <!-- задаем трансформации для полос прокрутки-->
        
                         <Model3DGroup>

            <GeometryModel3D>
                       <!—первая пространственная сетка-->
                 </GeometryModel3D>

            <GeometryModel3D>
                       <!—вторая пространственная сетка-->
                 </GeometryModel3D>

        </Model3DGroup>

            </ModelVisual3D.Content>

        </ModelVisual3D >

</Viewport3D >

          
Если о проблеме в общем, то вкратце все выглядит так:
Грузится из файла модель …ну, например, корабля… С помощью слайдеров ее можно покрутить, повертеть, рассмотреть повнимательнгей! А в списке слева можно  выбрать секцию, например, «Палуба» - и тогда соответствующее изображение автоматически выделится другим цветом. Но модель корабля грузится же одним файлом, т.е. представлена одной «цельной» пространственной сеткой.. А для выделения палубу формируем другую пространственную сетку и накладываем на первую..  И тут –то вся ерундовина и начинается… Изображение особенно при прокрутки бесится и переливается! То одна сетка куском на первый план вылезет..то другая!...   smile  Это ляп слабой видеокарты?! Или как-то программно можно поправить?! Или идеологически?!!!!

PM MAIL   Вверх
Черешня
Дата 2.4.2009, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 12.3.2009

Репутация: 1
Всего: 1



Мир не без добрых людей!!!!
...вдумчиво читаю про двойную буферизацию..думаю,в какое место ее приделать в WPF...
PM MAIL   Вверх
-Mikle-
Дата 3.4.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



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


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Черешня
Дата 3.4.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 12.3.2009

Репутация: 1
Всего: 1



 smile Ты оказался АБСОЛЮТНЕЙШЕ прав!
Проблему как всегда удалось обойти, а не решить ))))  smile 

В ModelGroup3D действительно реализовано что-то вроде  Z-буфера по умолчанию - более поздние children' ы доминируют.... Т.е. вполне логичная картинка получается - какую сетку второй выводишь,такую и видешь! Но! Большое НО! Это только в том случае, если узлы первой сетки полностью совпадают со второй! А если эти две области совпадают, но триангулированы по-разному, то звездец...  А так никаких свойств типа DoubleBuffered в WPF не предусмотрено! Вдумчивое прочтение Hepl'а с моими самонадеянными знаниями английского показало, что такое свойство реализовано только для WindowsForms, где 3D и не жалуют-то шибко...
В конечном итоге при помощи ScaleTransform промасштабировала вторую сетку (можно было и подвинуть ее в принципе, но это надо бы высчитывать направление, а так ее просто чуть увеличила по всем параметрам  ) и все пучком! Не мерцает  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.