есть набор треугольников необходимо построить из него оптимальный набор стрипов(минимизировать количество вырожденых треугольников, самих стрипов и оптимально использовать вершинный кеш)
проблема в том что те алгоритмы которые я нашол строятся на теугольниках с количеством соседей по рёбрам не более трёх, а у меня это не так потому их применение не особо качественное для моего случая (искуственно резать треугольники не выход)
ввообщем необходимы предложения по организации данных для такового случая(строить динамически бред, а статически ещё не придумал как) и алгоритм который бы умел строить стрипы делая преход по одной общей вершине и части ребра
uss
>строятся на теугольниках с количеством соседей по рёбрам не более трёх
У тебя ребро может относится более чем к двум треугольникам?
Можно создать копию ребра для каждого треугольника.
Непонятен вопрос об организации данных, т.к. ответить на него значит придумать алгоритм.
есть ребро с одной его стороны один треугольник, а с другой несколько (точки лежат на ребре)
uss
>есть ребро с одной его стороны один треугольник, а с другой несколько (точки лежат на ребре)
Не делай так!!!! Любая литература по моделированию будет вопить что это плохо!!!! Переделай чтоб было как у людей, гарантирую с такими моделями в дальнейшем будеш плакать крокодиловыми слезами...
Breezy
не нервничай это не изменит начальных условий+в дальнейшем модель будет только отрисовываться никто и никак с ней работать не будет
uss
все равно получишь проблемы даже при отрисовке
со стандартным освещением или любым нетривиальным шейдером
плюс выпадающие пиксели на стыках
короче, делай по-человечески, 5% лишних треугольников не стоят геморроя
1.не нада советов не по теме
2. свет и материал поверхности думаю буду реализовывать parallax occlusion mapping(это будет потом и не является темой для данного обсуждения) потому мне не будет "гемороя" от плохой геометрии
3. пикселы не выпадают при отрисовке просто плохие стрипы выходят(мягко говоря плохие)
"экономить нужно экономно"
uss
А NvTriStrip тебе разве не подходит?
кратко нет
а если подробно то у них алгоритм 2004 го года и они его не улучшали он и тогда был не лучшим а теперь и подавно+он мне не подходит по причине указаной высше
для теста возьмите модель регулярной сетки и потом плавно изменяйте длинну стрипа который должен покрывать одну полоску регулярной сетки (с vba и связывайте стрипы между собой вырожденными треугольниками чтобы минимизировать простои) в итоге на определённой длинне стрипа у вас выйдет провал в производительности, а наступит он когда у вас вершин в стрипе будет на 1 больше чем размер буфера тоесть все вершины будут читаться с памяти без кеширования
повторная прозьба не разводить полемику не по теме и не предлагать того в чём не разобрались толком сами
Прошу прощения, что отклоняюсь от темы, но всё-таки спрошу:
Зачем нужны стрипы? Чем они лучше обычных индексированных треугольников?
Лично я вижу только один небольшой бонус – экономия памяти на индексах, и всё.
экономи памяти + не загружаем шину памяти+используем такую вещ как вершинный кеш как он задумывался
uss
>+используем такую вещ как вершинный
>кеш как он задумывался
А какие проблемы с кэшем для триангл листа?
А вообще, что-то мне подсказывает, что при проектировании вершинных кэшей, об эффективности их работы на стрипах думают в самую последнюю очередь.
uss
Что-то ты какой-то "дерзкий". \m/
Тебе люди говорят способы, а ты с ними споришь.
Теперь по теме: NvTriStrip - один из лучших вариантов решения твоей задачи. Если настаиваешь на своем \m/, то и делай сам.
uss
Советую прикинуть что ты выиграеш на своем подходе и что проиграеш. А так Prolet прав.
лучший это tunnel, ftsg-sgi, draft а nvidia это так не рыба не мясо...
Тема в архиве.