Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: deMax от Ноябрь 24, 2014, 10:09



Название: Выбор качества моделей
Отправлено: deMax от Ноябрь 24, 2014, 10:09
Какое максимальное количество полигонов допустимо(оптимально) для трехмерной модели с поддержкой текстур раскраски и объема (все остальные модели отрисовываются достаточно просто и они низкополигональные).
Изначально модель находится в CAD файле, насколько сильно можно ее порезать. Предположительно уровень видеокарты Radeon HD7850, nvidia quadro 440.


Название: Re: Выбор качества моделей
Отправлено: Hrundel от Ноябрь 25, 2014, 01:13
Какое максимальное количество полигонов допустимо(оптимально) для трехмерной модели с поддержкой текстур раскраски и объема (все остальные модели отрисовываются достаточно просто и они низкополигональные).

Сколько потянет железо. На Крее чуть больше чем на лэптопе.

Изначально модель находится в CAD файле, насколько сильно можно ее порезать.

Что подразумевается под словом "порезать" ? Особенно интересно узнать это в контексте с CAD файлом.
CAD файл это тебе не mesh какой-нибудь.

Предположительно уровень видеокарты Radeon HD7850, nvidia quadro 440.

Хорошие карты



Название: Re: Выбор качества моделей
Отправлено: deMax от Ноябрь 25, 2014, 08:46
Сколько потянет железо. На Крее чуть больше чем на лэптопе.
Железо будет разным, но примерно такого уровня. Какое количество полигонов оптимально, будет текстура и возможно текстура нормалей(не для всех элементов).
Что подразумевается под словом "порезать" ? Особенно интересно узнать это в контексте с CAD файлом.
CAD файл это тебе не mesh какой-нибудь.
Разная степень детализации при экспорте, тот же шарик можно 20 полигонами отрисовать, а можно тысячей. Шлифовка модели в 3d редакторе.

Как узнать рекомендуемое число полигонов или как это расчитать? Хотя бы примерно? Какие есть ограничения?


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 25, 2014, 10:06
У меня имеется сторонняя конечно-элементная программка, которая может выводить более 4 млн. тетраэдров. При повороте геометрии глючит, но выводит.
Сам же я написал свою прогу, которая берёт оболочку детали и выводит треугольники (грани тетраэдров, лежащие на поверхности). Могу сказать, что для детали габаритом метр можно смело брать размер элемента 5мм.

У меня геометрия в 3348324 элемента обрабатывается мгновенно. Правда, и карта Quadro K4000


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 25, 2014, 10:09
Да, хочу добавить, что представленные мною данные не обрабатываются освещением и текстурой. Но поверх полигонов ложиться ещё один слой, который отображает сетку. Так что по факту выводится 6696648 полигонов


Название: Re: Выбор качества моделей
Отправлено: Igors от Ноябрь 25, 2014, 11:10
Как узнать рекомендуемое число полигонов или как это расчитать? Хотя бы примерно? Какие есть ограничения?
Число полигонов - всего лишь один из факторов влияющих на быстродействие, поэтому попытки его предрассчитать обречены. Лучшее что можно сделать - давать пользователю выбор какую детализацию использовать. Если такой возможности нет - давать выбор режима рисования. Напр "без шейдеров" (gourand), без текстур и/или без шейдинга текстур, только с 1 источником (обычно от камеры) и.т.п

Что? Да, это капитальный геморрой, это в неск раз больше работы. Но так у всех, это нормальные рабочие проблемы которых никто не отменял.


Название: Re: Выбор качества моделей
Отправлено: deMax от Ноябрь 25, 2014, 13:02
Число полигонов - всего лишь один из факторов влияющих на быстродействие, поэтому попытки его предрассчитать обречены. Лучшее что можно сделать - давать пользователю выбор какую детализацию использовать.
Это все понятно, только у меня есть модель и она дорабатывается и надо понять на какое количество полигонов для каждого уровня детализации мне ориентироваться.


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 25, 2014, 13:11
Число полигонов - всего лишь один из факторов влияющих на быстродействие, поэтому попытки его предрассчитать обречены. Лучшее что можно сделать - давать пользователю выбор какую детализацию использовать.
Это все понятно, только у меня есть модель и она дорабатывается и надо понять на какое количество полигонов для каждого уровня детализации мне ориентироваться.
Предлагаю  сделать некий спинбокс, который будет динамически регулировать количество полигонов.
Потестируете свою программу на разных машинах и геометрии. Там уж решите, какой уровень детализации вам нужен.
P.S.: Хорошая детализация нужна только для скруглений. Плоские же поверхности обойдутся и грубой (относительно).


Название: Re: Выбор качества моделей
Отправлено: Hrundel от Ноябрь 25, 2014, 21:01
Кстати, чтобы увеличить перформанс, можно пропускать модель через алгоритм проверяющий видимость плоскости и отображать только те плоскости, которые в ракурсе. Правда придется припиливать  OpenCL чтобы расчет происходил как можно быстрее, иначе через процессор можешь получить даже обратный эффект.


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 25, 2014, 22:50
Кстати, чтобы увеличить перформанс, можно пропускать модель через алгоритм проверяющий видимость плоскости и отображать только те плоскости, которые в ракурсе. Правда придется припиливать  OpenCL чтобы расчет происходил как можно быстрее, иначе через процессор можешь получить даже обратный эффект.
Возможно, до конца не понял твою мысль, но при отрисовке OpenGL сам отрезает всё то, что не попало в отображаемый объём. Также можно попросить его, чтобы он отсекал примитивы повернутые задом к зрителю.


Название: Re: Выбор качества моделей
Отправлено: deMax от Ноябрь 26, 2014, 08:45
Предлагаю  сделать некий спинбокс, который будет динамически регулировать количество полигонов.
Потестируете свою программу на разных машинах и геометрии. Там уж решите, какой уровень детализации вам нужен.
P.S.: Хорошая детализация нужна только для скруглений. Плоские же поверхности обойдутся и грубой (относительно).
У меня модель содержит десятки тысяч элементов, ее нельзя быстро взять и уменьшить. Нужно примерно ориентироваться какое количество полигонов будет оптимально для каждого уровня детализации и как это можно подсчитать, чтоб комп под завязку не нагружать, параллельно 3D модельке у него других задач не мало.


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 26, 2014, 09:55
Ясно, что она перестраивается долго. Я имел в виду, что этот спинбокс должен быть временной мерой, которая позволит вам сориентироваться в количествах. Просто после нахождения необходимых чисел зададите их константами.


Название: Re: Выбор качества моделей
Отправлено: Igors от Ноябрь 26, 2014, 11:17
Возможно, до конца не понял твою мысль, но при отрисовке OpenGL сам отрезает всё то,
Та мысль из статьи (которую я помню) :) Да, так какое-то ускорение достигается, но хлопот предостаточно. И всегда найдется такое view где нечего отсекать.

У меня модель содержит десятки тысяч элементов, ее нельзя быстро взять и уменьшить. Нужно примерно ориентироваться какое количество полигонов будет оптимально для каждого уровня детализации и как это можно подсчитать, чтоб комп под завязку не нагружать, параллельно 3D модельке у него других задач не мало.
"Хто про що - а я про Тараса" :) Конечно Вы можете упорно задавать тот же вопрос снова и снова, но мало шансов получить "тот самый" ответ.

Вот у Вас есть какая-то машина. Сделайте "нормальные" модели (на глазок) и посмотрите загрузку, потом, если надо, уменьшите детализацию. Ничего плохого в таком подходе нет, называется "эмпирически"  :)


Название: Re: Выбор качества моделей
Отправлено: deMax от Ноябрь 26, 2014, 14:11
Это понятно, что на глаз, но законченного движка счас нет, а людям надо примерно ориентироваться на что то. Объект в солиде сотни метров весит.

Так вот в играх используется известное число полигонов, и у видеокарты есть примерный параметр количество полигонов в секунду, скажем 30 миллионов текстурированных полигонов(понятно что от угла обзора эта цифра может меняться, но не на порядки же), т.е. при фпс 60 модель на 500К полигонов максимум. Какие средние оптимальные параметры под указанные мной видеокарты.


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 26, 2014, 22:19
сгенерируйте плоскость полигонов, выведите их на экран и замерьте количество/скорость. Это и будет приверным ответом на ваш вопрос.
А реальную геометрию бить будет всё равно CPU, так понимаю.


Название: Re: Выбор качества моделей
Отправлено: deMax от Ноябрь 27, 2014, 15:09
сгенерируйте плоскость полигонов, выведите их на экран и замерьте количество/скорость. Это и будет приверным ответом на ваш вопрос.
А реальную геометрию бить будет всё равно CPU, так понимаю.
То что экспортируется через CPU, весьма сырое и очень плохого качества(с точки зрения модели). Это будет ручками допиливаться и оптимизация полигонов это полуручная работа и ее много.

Есть же игры, в них скажем 100К полигонов или 15К, к чему мне стремиться и как посчитать(скажем частоту умножить на количество конвееров еще на что то и получим что X полигонов будет оптимально)?
Скажем хороший тон это в пределах 500К полигонов?


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 27, 2014, 23:09
deMax, вы, видимо, не поняли идею.
Нарисуйте в поле видимости 100К рандомных полигонов с помощью OpenGL. Они будут прорисовываться примерно с такой же производительностью, как и ваша модель. Потом увеличте количество до 500К. Только так вы оперативно сможете ответить на свой вопрос.
Или вы ожидаете готовый код?


Название: Re: Выбор качества моделей
Отправлено: Igors от Ноябрь 28, 2014, 08:06
2__Heaven__Человек получил ответ который его не устроил. Он его просто игнорирует и продолжает задавать тот же вопрос. Это его право, но зачем повторять ответ который уже звучал раз 5?  :)



Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 28, 2014, 16:06
зачем повторять ответ который уже звучал раз 5?  :)
Ну, вдруг не понял, не уловил. Я попытался перефоазировать.
Не со злым намерением.


Название: Re: Выбор качества моделей
Отправлено: deMax от Ноябрь 28, 2014, 16:37
2__Heaven__Человек получил ответ который его не устроил. Он его просто игнорирует и продолжает задавать тот же вопрос. Это его право, но зачем повторять ответ который уже звучал раз 5?  :)
Как тестировать на практике мне понятно, любых 3d моделек можно и в интернете накачать и самому сделать нарисовав шар с нужной детализацией полигонов. У меня нет счас движка(тем более законченного, fps которого будет ниже при добавлении красоты или выше при оптимизации), и нет всех видеокарт для тестирования(только названия).
Я хочу понять как посчитать какое количество полигонов может проглотить видеокарта - Теоретически. (т.е. расчитать производительность по параметрам видеокарты, а не реального запуска программы)
Вот сейчас модель 6млн полигонов(не треугольных), допустим она будет ровно крутиться и с высоким фпс, мне кажется это не совсем нормально или если не тормозит то все замечательно и так можно? Может стандарты хорошего тона какие есть?

p.s. извините за кривой язык, но искал ответ только на выделенные 2 вопроса, возможно они глупые и на них ответа нет. где то видел тесты по полигонам но для древних видюх. В играх полигонов как правило мало, вот и думаю может есть правило какое?


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 28, 2014, 18:13
Хочу немного вас поправить
количество конвееров
В OpenGL один конвейер, в котором участвует несколько GPU.
У меня нет счас движка(тем более законченного, fps которого будет ниже при добавлении красоты или выше при оптимизации)
Движки и fps, наверное, правильнее относить к играм. Как я понял, у вас CAD модель в единственном числе. В движках не шарю, но мне кажется, что применение их в отрисовке CAD будет неэффективным, по крайней мере в плане разработки. Термин FPS (количество кадров в секунду) больше применим к анимации, имхо. При проектировании в CAD системе у нас картинка зачастую статична и при повороте геометрии нет привязки к определённому числу кадров. Прорисовка происходит моментально реагируя на поступающие сигналы мыши.

Дать точные ответы на ваши вопросы, наверное, не представляется возможным. Хотя, быть может можно составить какую-нибудь зависимость. Но всё равно, нужен тест, который будет измерять производительность. Если он у вас будет, то я смогу для вас протестировать 3-4 видеокарты.

Для того, чтобы некому дяде ответить на вопрос, сколько можно задействовать полигонов. Думаю, что достаточно взять маломощную карту замерить её удовлетворительный максимум M и дать ответ: "от M элементов и больше".

Для того, чтобы запускать эту программу на разном оборудовании, достаточно использовать то самое число M как эталон. Если же на более мощных карточках хочется большего качества, то при запуске программы можно тестировать новое оборудование и записывать результаты в настройки.


Название: Re: Выбор качества моделей
Отправлено: Hrundel от Ноябрь 29, 2014, 03:35
Кстати, чтобы увеличить перформанс, можно пропускать модель через алгоритм проверяющий видимость плоскости и отображать только те плоскости, которые в ракурсе. Правда придется припиливать  OpenCL чтобы расчет происходил как можно быстрее, иначе через процессор можешь получить даже обратный эффект.
Возможно, до конца не понял твою мысль, но при отрисовке OpenGL сам отрезает всё то, что не попало в отображаемый объём. Также можно попросить его, чтобы он отсекал примитивы повернутые задом к зрителю.

На самом деле суть идеи очень проста. OpenGL конечно отсекает то что перекрывается, но для отсечения необходимо провести некоторые расчеты, перед этим необходимо загрузить геометрию, выстроить ее и тд и тп.
Экономия должна происходить до передачи геометрии в OpenGL. То есть нужно в алгоритме отсечения просчитать перекрытые области, оставить только видимую геометрию. При всех последующих расчетах, просчитывается не вся модель целиком,  а только полигоны попадающие в угол поворота.
Алгоритм надо искать. У меня нету. Эффективность алгоритма во многих случаях сомнительна, и оправдана только под OpenCL


Название: Re: Выбор качества моделей
Отправлено: __Heaven__ от Ноябрь 29, 2014, 11:20
Не встречал такой информации.
OpenGL отсекает по простому принципу:
Если мы передадим ему ModelViewProjection матрицу и массив вершин, то он будет умножать матрицу на каждую вершину. Те вершины, которые имеют какую-либо координату вне диапазона [-1;1], являются непопавшими в обзор. если все вершины примитива не попадают, значит примитив игнорируется.
Но это в общем случае.


Название: Re: Выбор качества моделей
Отправлено: Igors от Ноябрь 29, 2014, 17:10
Не встречал такой информации.
OpenGL отсекает по простому принципу:
Если мы передадим ему ModelViewProjection матрицу и массив вершин, то он будет умножать матрицу на каждую вершину. Те вершины, которые имеют какую-либо координату вне диапазона [-1;1], являются непопавшими в обзор. если все вершины примитива не попадают, значит примитив игнорируется.
Но это в общем случае.
Если все 3 вертекса треугольника невидимы - это совсем не значит что и треугольник невидим :) Задача отсечения старая, слышал о ней еще в конце 90x. Ваше удивление совершенно естественно: ну как же так, GPU мощнее и заточен на эти дела, чего же отсечка на CPU должна ускорять? Думаю до того как мощный GPU начнет отсекать, ему нужно "поселить" геометрию у себя на видео, а ее передача может оказаться намного медленнее всего рендера (вспомните VBO). Поэтому если CPU передает меньше данных - ускорение возможно. Ну это я так думаю  :)


Название: Re: Выбор качества моделей
Отправлено: deMax от Декабрь 01, 2014, 14:39
Движки и fps, наверное, правильнее относить к играм. Как я понял, у вас CAD модель в единственном числе. В движках не шарю, но мне кажется, что применение их в отрисовке CAD будет неэффективным, по крайней мере в плане разработки. Термин FPS (количество кадров в секунду) больше применим к анимации, имхо. При проектировании в CAD системе у нас картинка зачастую статична и при повороте геометрии нет привязки к определённому числу кадров. Прорисовка происходит моментально реагируя на поступающие сигналы мыши.
У меня визуализация, по сути та же игра. В моем случае пользователь только мониторит.
У меня визуализация, а не CAD система. Просто у меня есть физическая CAD сборка тех объектов которые нужно визуализировать.