ADN Open CIS
Сообщество программистов Autodesk в СНГ

09/08/2013

Как FACETRES/VIEWRES соотносятся с AcGiCommonDraw::deviation() в ObjectARX

Вопрос:

Вы можете подробно объяснить как FACETRES и VIEWRES соотносятся с методом deviation() в классе AcGiCommonDraw?

Ответ:

Отклонение - (2D и 3D) это значение, которое управляет тонкостью тесселяции. Если значения стремится к нулю, тесселяция увеличивается. Отклонение представляет ошибку расстояние между мозаичными линиями / поверхностями и фактической кривой / криволинейной поверхностью. VIEWRES  (2D и 3D) управляет внешним видом окружностей, дуг, эллипсов и сплайнов с использованием коротких векторов. Когда вы увеличиваете или уменьшаете FACETRES – это влияет только на твердые тела. Допустимые значения от 1 до 20000. Обратите внимание на первую строку запроса команды НАСТРВИД (VIEWRES):

Нужно быстрое зумирование? [Да/Нет] <Д>:

Это устаревшее и неиспользуемое в AutoCAD – оно там только для совместимости с предыдущими версиями.

FACETRES - (2D и 3D) Регулировка плавности в закрашенных и тонированных объектах и в объектах с удаленными скрытыми линиями. Допустимые значения: от 0,01 до 10,0. FACETRES управляет плавностью закрашенных и тонированных изогнутых тел. Она связана со значением, установленной в НАСТРВИД (VIEWRES): когда FACETRES установлена в 1, есть точное соответствие между видимым разрешением окружностей, дуг и эллипсов и тесселяцией твердых тел. Например, когда FACETRES установлен в 2, тесселяции будет в два раза больше тесселяции установленной VIEWRES. Для FACETRES значение по умолчанию составляет 0.5. Диапазон возможных значений составляет от 0.01 до 10.

Что касается расчета отклонений, это зависит от AcGiDeviationType. Для kAcGiMaxDevForFacet формула будет следующей:

deviation =1.0 / FACETRES * 0.5 * pixel width.

Ширина пикселя рассчитывается как обратное значение длины в пикселях горизонтальной составляющей вектора камеры в точке мишени. Также отметим, что в 3D визуальных стилях отклонение также усугубляются значениями ползунками кривой тессиляции поверхности в ГРАФНАСТР (3DCONFIG).

И как сказано в Справочном руководстве ObjectARX о методе AcGiCommonDraw::deviation():
Отклонение предполагает максимальное отклонение тесселяции. Например, если кривая, которая должна быть представлена отрезками, максимальное расстояние от одного из отрезков до соответствующей части кривой должно быть не больше, чем некоторое значение. То же самое значение применяется к изогнутой поверхности, которая аппроксимируется сеткой треугольников или четырехугольников.

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

Смотрите AcGiDeviationType для возможных значений.

Отклонение типа используют значение (в процентах) команды VIEWRES (как делает внутренний механизм тесселяции в AutoCAD). kAcGiMaxDevForFacet использует системную переменную FACETRES так же, как это делает AutoCAD, когда получает грани поверхностей.

Источник: http://adndevblog.typepad.com/autocad/2013/04/how-does-facetresviewres-relate-to-acgicommondrawdeviation-in-objectarx.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=176

Опубликовано 09.08.2013
Отредактировано 19.08.2013 в 14:43:52