Перейти к содержимому

Фотография
- - - - -

Фришип (Лазарус). Ошибки программы, исправления и улучшения.

FreeShip Lazarus

Сообщений в теме: 825

#176 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 13 марта 2020 - 05:08

Да, кстати. Это все работает только при мышинном двигании. А надо чтоб везде?

Я полагаю, что трансформации должны двигать, то что выделено.

А вот ввод координат, должен работать так же как и мышь.

 

вообще в программе практически всё "специально прописано". :)

из готового только примитивы - нарисовать линию, точку, прямоугольник, в 2D.

Ну я вот как раз и пытаюсь сообразить, какие зависимости необходимо прописать исходя из реальных способов построения различных корпусов.

Вот еще теоретический вопрос  (то что прыгаю с одного на другое внимание не обращайте :) ). В программе сейчас есть понятие "плоскость"? Если например прямые сечения можно вроде посчитать без оперирования таким понятием, то рыбины уже вроде должны использовать уравнение плоскости.


  • 0

#177 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 13 марта 2020 - 07:27

Пользовательского понятия "плоскость" нет.  Но внутри конечно оно есть. А то как же эти батоксы строятся. Пересечением с плоскостями. С основными, не наклонными. Рыбин нет. А так уж они нужны в век компьютерного раскроя?

Тьфу ты, есть рыбины конечно - Diagonals. их надо добавлять в окне Intersections.


Сообщение отредактировал mm7: 13 марта 2020 - 07:41

  • 0

#178 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 13 марта 2020 - 14:48

Пользовательского понятия "плоскость" нет.  Но внутри конечно оно есть. А то как же эти батоксы строятся. Пересечением с плоскостями. С основными, не наклонными. Рыбин нет. А так уж они нужны в век компьютерного раскроя?

Тьфу ты, есть рыбины конечно - Diagonals. их надо добавлять в окне Intersections.

Прямолинейные сечения можно и по координате сделать. Типа выбираем все отрезки, которые входят в диапазон, потом в каждом находим точку соответствующую нужной координате по x/y/z .А вот диагонали таким методом уже сразу не построишь. Должен быть алгоритм пересчета из локальной системы координат в общую. Есть там такой?Если он есть, то это уже возможность ввести понятие блока.


  • 0

#179 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 13 марта 2020 - 16:02

может есть, может нет. Там есть класс Intersection, к которому относятся батоксы и пр, и рыбины. В принципе это и есть плоскость.

Вы как-то издалека заходите. Что за "блок" и для чего?


  • 0

#180 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 13 марта 2020 - 16:58

может есть, может нет. Там есть класс Intersection, к которому относятся батоксы и пр, и рыбины. В принципе это и есть плоскость.

Вы как-то издалека заходите. Что за "блок" и для чего?

Есть немного :). Блок-это группа элементов которая имеет собственную систему координат. Для чего нужно. Например вот в рино и в акаде есть фигура -круг. Нажимаем кнопочку, рисуем круг. В фришипе кривых нет, но есть цилиндр. Только в рино появляется кривая в форме круга (как и цилиндр в фришипе), а в акаде появляется группа элементов с своей системой координат (определяется центром и нормалью). И мы можем в любой момент перестроить эту фигуру, алгоритм знает как ее перерисовать..

Прикрепленные изображения

  • circ_rino.JPG
  • circ_curv_rino.JPG
  • circ_acad.JPG

  • 0

#181 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 13 марта 2020 - 17:17

Во ФШ есть Part.

Давайте не будем усложнять без нужды.

 

Кстати, почитайте Мануал. Там есть про Маркеры - это свободные сплайны. Только грузятся импортом.

 

-----

всё, вроде везде где надо сплайны "с коленцами" поправил.


  • 0

#182 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 13 марта 2020 - 18:39

Во ФШ есть Part.

Давайте не будем усложнять без нужды.

 

Кстати, почитайте Мануал. Там есть про Маркеры - это свободные сплайны. Только грузятся импортом.

Парт-это просто перенос элементов.Хотя его тоже можно соединить с другими инструментами для повышения функциональности. Блоки-это уже следующий уровень.

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

Прикрепленные изображения

  • marker.JPG
  • marker_spline.JPG

  • 0

#183 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 13 марта 2020 - 19:55

Маркер порожден от того же Сплайна, который используется во ФШ везде, в батоксах, кривых и тп.
Значит сплайн тоже "обычный кубический сплайн".

 

Для создания свободного сплайна нужны только УВ. Ребра не нужны.

Что надо сделать: ручной ввод Маркера или ручной ввод Сплайна?




 


Сообщение отредактировал mm7: 13 марта 2020 - 19:59

  • 0

#184 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 13 марта 2020 - 20:26

Маркер порожден от того же Сплайна, который используется во ФШ везде, в батоксах, кривых и тп.
Значит сплайн тоже "обычный кубический сплайн".

 

Для создания свободного сплайна нужны только УВ. Ребра не нужны.

Что надо сделать: ручной ввод Маркера или ручной ввод Сплайна?

Сечения в экспорт идут как полилинии, в дельшипе уже как сплайны. Как отрисовывает фришип на экране-вполне может и как сплайны, кривые вроде плавные. Это плюс, значит сплайны в программе уже есть. Точек  тогда конечно у них дофига получается, т.к. полилиния идет по пересечению меша с плоскостью сечения. У Андрея в коде на этом принципе сделаны переборки. В дельшипе тоже есть, но у нас удобнее.

Для кривой конечно УВ достаточно, но практика показывает что ребра тоже нужны (управляющий многоугольник), иначе понять какие точки от какой кривой невозможно.

Сделать надо кривую на основе сабдивижен. У нас же пока такая мат модель. Там три формулы с половиной. Можно и готовую курве (та что синяя) отрисовывать,надо только смотреть из чего ее рисуют, если из УВ то пойдет.

Прикрепленные изображения

  • curve_point.JPG
  • spline_point.JPG

  • 0

#185 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 13 марта 2020 - 20:49

Ничего не понял.
Опишите конкретно, что нужно, для чего, и почему не устраивает имеющийся инструментарий.

 


  • 0

#186 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 13 марта 2020 - 22:48

Ничего не понял.
Опишите конкретно, что нужно, для чего, и почему не устраивает имеющийся инструментарий.
 

Тут дело не в устраивает или нет, а в вообще разной структуре кривых и поверхностей на данный момент. Мы имеем поверхность сабдивижен, к которым искусственно добавлены сплайны. А по идее кромки должны также отрисовываться по уравнениям сабдивижен, т.е. ломаной зависящей от степени прорисовки так же как поверхность. Но поскольку кривые отрисовывать проще, их во многих кадах рисуют всегда в высокой степени прорисовки (регулируется). Вот пощелкайте степень прорисовки в этом тестовом файлике (кстати, давно хотел спросить, зачем ее спрятали в недра проекта? :) ).Там видно что курве (синяя) идет по точкам кромки поверхности (черная), и имеет несколько другую форму нежели нужно (выходит за управляющий многоугольник (красный) чего быть не должно. Т.е. на это просто забили и попытались исправить только в дельшипе уже. 

Прикрепленные изображения

  • curve_fs_lo.JPG
  • curve_fs_hi.JPG

Прикрепленные файлы

  • Прикрепленный файл  test.fbm.txt   11,48К   137 Количество загрузок:

  • 0

#187 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 13 марта 2020 - 23:33

Да, странно. Если сделать экструзию этого прямоугольника, то будет по сабдивижену, как на втором рисунке.
Надо проверить, почему.

 

Прикрепленные файлы

  • Прикрепленный файл  test-x.ftm.txt   21,16К   125 Количество загрузок:

Сообщение отредактировал mm7: 13 марта 2020 - 23:33

  • 0

#188 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 14 марта 2020 - 01:52

Да, странно. Если сделать экструзию этого прямоугольника, то будет по сабдивижену, как на втором рисунке.
Надо проверить, почему.

Ну можно сделать и как на первом, это от степени прорисовки только зависит. Вопрос в том что курве (синяя) тоже меняется от этого параметра. А было бы проще чтоб она высчитывалась из УВ и была всегда наивысшей степени.Косяк  еще и в том, что импорт тоже использует сплайновые уравнения и при правильном вроде стыке половинок получается вогнутость. Мне этот вопрос несколько раз задавали, почему ровно не выходит. Приходится поправку на выпуклый морской глаз вносить :).

Прикрепленные изображения

  • surf_fs_lo.JPG

Сообщение отредактировал a_max: 14 марта 2020 - 01:52

  • 0

#189 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 14 марта 2020 - 02:43

Понятно. Это артефакты загрубления меша.

Синяя кёрв строится не на УВ а на точках меша. Сама она прорисовывается с большой детальностью :
на Precision=Low - синим рисуется 128 фрагментов кривой, Precision=Medium - 256, High - 512, Highest - 1024.  А если еще показывается кривизна, то умножается на 3/2. (это я так вчера сделал. В оригинале 600 и 800 с кривизной).

Поэтому синяя кривая гладкая. А вот меш под ней на на Precision=Low грубый. Естественно будут артефакты.
Если круг в Автокаде нарисовать 6-ю фрагментами, он будет гайкой.
     
Precision=Low нужно включать на больших проектах при активной работе. А для конечного результата надо ставить как минимум High.

Слава богу - править ничего не надо.

 


  • 0

#190 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 14 марта 2020 - 03:15

Синяя кёрв строится не на УВ а на точках меша. Сама она прорисовывается с большой детальностью :
на Precision=Low - синим рисуется 128 фрагментов кривой, Precision=Medium - 256, High - 512, Highest - 1024.  А если еще показывается кривизна, то умножается на 3/2. (это я так вчера сделал. В оригинале 600 и 800 с кривизной).

Поэтому синяя кривая гладкая. А вот меш под ней на на Precision=Low грубый. Естественно будут артефакты.
Если круг в Автокаде нарисовать 6-ю фрагментами, он будет гайкой.
     
Precision=Low нужно включать на больших проектах при активной работе. А для конечного результата надо ставить как минимум High.

Слава богу - править ничего не надо.

Артефакты не из-за грубости меша, а именно из-за способа построения кривой.При таком она по-любому вылезет за многоугольник, больше или меньше.

 Грубая отрисовка меша тоже нужна, например чтоб нарубить переборки с достаточной точностью нам HIght не нужен.

Править эти существующие кривые -да. Но вот сделать другие, на  основе сабдивижен очень бы пригодилось и сейчас и потом.

Но сначала с настройкой алгоритмов точек конечно надо разобраться.

P/s Кстати, вот как определеляются  точки меша, по которым надо кривую провести. С кромками еще более-менее ясно, а вот в середине?

Прикрепленные изображения

  • curve_mesh.JPG

Сообщение отредактировал a_max: 14 марта 2020 - 03:44

  • 0

#191 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 14 марта 2020 - 18:00

Артефакты не из-за грубости меша, а именно из-за способа построения кривой.При таком она по-любому вылезет за многоугольник, больше или меньше. (1)

 Грубая отрисовка меша тоже нужна,(2) например чтоб нарубить переборки с достаточной точностью нам HIght не нужен.

Править эти существующие кривые -да. Но вот сделать другие, на  основе сабдивижен(3) очень бы пригодилось и сейчас и потом.

Но сначала с настройкой алгоритмов точек конечно надо разобраться.

P/s Кстати, вот как определеляются  точки меша, по которым надо кривую провести. С кромками еще более-менее ясно, а вот в середине?(4)

 

1. Артефакты из-за грубости меша. Вернее из-за несоответствия детальности меша, детальности кривой и ожиданий пользователя.

Если вы залезете в код и посмотрите, то увидите, что кривая рисуется с помошью нескольких прямых.

Количество их 600 (в оригинале). А меш вы сделали с детальностью 6 кусков на "кривую" часть, "домик".

Так вот кривая берет эти 7 точек и на основе их строит свои 600. Ничего при этом не зная о каком-то прямоугольнике.

 

Да точки кривой вылезут за многоугольник. Потому что многоугольник - это срезанная гладкая фигура, аппроксимация.

Многоугольник используется от экономии комьютерных ресурсов. Представляемой гладкой поверности он касается только точками. А прямые отрезки проходят в глубине представляемого тела. Меш по сути своей является лишь огрубленным приближением к реальному гладкому телу.

Идеальный меш тот, который полностью покроет каждую геометрическую точку тела. Так как точка бесконечно мала, такой меш бесконечно частый. В отличии от мат точки, пиксел на экране имеет размер, и это возможно - подобрать детальность для каждого увеличения, при которой меш будет рисоваться не прямыми отрезками пикселов, а вырожденными до максимум двух пикселей, непосредственно примыкающих друг к другу. Но считать сабдивижены такого меша будет дорого.

 

Так и в нашем примере. Меш грубый, кривая детальная, но толку нет, только даже вред, так как она построена на очень грубом меше. Она сбивает с толку. Вы ожидаете от нее соответсвованию поверхности. Но она не видит поверхность, а видит лишь аппрокимированный меш, более или менее приближенный к поверхности. В нашем примере - "очень менее".

Чтобы кривая соответствовала, нужно для нее делать детальный сабдивижн от управляющих ребер.  Типа такой локальный сабдивижн. Но теоретически локальный сабдивижн невозможен, так как в математической Поверхности все точки меша влияют друг на друга.

 

Я вообще не понимаю, для чего нужна Кривая в том виде в каком она есть. Как она используется? Просто чтобы ее можно было тягать, когда контрольная сеть выключена и проверять кривизну?

Ну да, это немножко добавляет удобства.

 

2. Мы не можем делать разную детальность меша для разных участков мат поверхности.
 

3. Так меш и есть на основе сабдивижн. И те ломаные меша, что Вы уже видите и есть "кривые, на  основе сабдивижен".

Если сабдивижн грубее, они более ломаные, если почаще, то они поглаже.

 

4. Да тот-же сабдивижн и берется. Когда грань подразделяется, ее ребра подразделяются на "крайние" ребра следующего уровня подразделения и тд. Кривой даются точки этих  "крайних" ребер.


Сообщение отредактировал mm7: 14 марта 2020 - 18:27

  • 0

#192 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 14 марта 2020 - 18:32

1. Артефакты из-за грубости меша. Вернее из-за несоответствия детальности меша, детальности кривой и ожиданий пользователя.

 

Да точки кривой вылезут за многоугольник. Потому что многоугольник - это срезанная гладкая фигура, аппроксимация.

 

Я вообще не понимаю, для чего нужна Кривая в том виде в каком она есть. Как она используется? Просто чтобы проверять кривизну?

 

2. Мы не можем делать разную детальность меша для разных участков мат поверхности.
 

3. Так меш и есть на основе сабдивижн. И те ломаные меша, что Вы уже видите и есть "кривые, на  основе сабдивижен".

Если сабдивижн грубее, они более ломаные, если почаще, то они поглаже.

 

4. Да тот-же сабдивижн и берется. Когда грань подразделяется, ее ребра подразделяются на "крайние" ребра следующего уровня подразделения и тд. Кривой даются точки этих  "крайних" ребер.

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

Кривые сейчас да, чисто для проверки кривизны и эти же алгоритмы для импорта.В дельшипе вроде уже и экспорт иджес есть, но я не пробовал, во фри нету его. 

2.Нам это не надо, но такие системы тоже есть, там каждый элемент (поверхность) имеет степень прорисовки.Если плоский-че  на нем граней кучу городить.

3.Меш да. Я говорю про кривые как меш, просто ломаную.И она будет ровно такой, какая будет кромка поверхности если мы вытянем ее из этой кривой.

4.Ну я думал что меш аморфный. Т.е. он не помнит какая точка из какой получилась. Мы когда конвертер делали сети в поверхность, она каждый раз в произвольном порядке нарубалась, пришлось Андрею свой алгоритм сортировки вводить. Поэтому и была мысль что кривая всеж высчитывается из УВ.


  • 0

#193 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 14 марта 2020 - 21:56

Для импорта, экспорта, кривых пересечения и тп используется TSpline.

Для Кривой тоже используется TSpline.

 

Ребра имеют ссылку на Кривую. Через это точки меша и назначаются Сплайну Кривой в процессе построения меша.

 

А меш, да, не помнит.

 

Я вот заметил, что сплайны батоксов и ватерлиний строятся кривовато. Извилисто. Кривизна пляшет.

А как в оригинале?


Сообщение отредактировал mm7: 14 марта 2020 - 21:58

  • 0

#194 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 15 марта 2020 - 02:07

Для импорта, экспорта, кривых пересечения и тп используется TSpline.

Для Кривой тоже используется TSpline.

 

Ребра имеют ссылку на Кривую. Через это точки меша и назначаются Сплайну Кривой в процессе построения меша.

 

А меш, да, не помнит.

 

Я вот заметил, что сплайны батоксов и ватерлиний строятся кривовато. Извилисто. Кривизна пляшет.

А как в оригинале?

Не очень понял (выделено). На какую кривую ребра ссылаются? Я так думал у нас есть УВ. Есть массив ребер ссылающихся на УВ.  Далее из точек и ребер?(тут учитывается больше статус) вычисляется аморфный меш. Когда мы выделяем какие то ребра и добавляем по ним кривую (синюю) алгоритм должен в меше выбрать именно вершины, соответствующие этим ребрам. Как -не очень понятно.

А вот если провести весь цикл вычислений но только для выделенного участка-то все должно получиться. Получим ряд именно нужных вершин.

 

По сечениям.Я вообще думал что они отрисовываются как ломаные. Так, как они в DXFпотом экспортируются. В коде Андрея на этом принципе сделаны переборки.

потому и кривизна пляшет, что линия идет по кромкам меша.

Прикрепленные изображения

  • blk_button.JPG
  • blk_low.JPG
  • blk_hi.JPG

  • 0

#195 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 15 марта 2020 - 04:09

Когда мы выделяем какие то ребра и добавляем по ним кривую (синюю) то, то она создается и все эти ребра ее запоминают.
Потом при перестроении в алгоритме сабдивижена, когда идет обсчет с участием такого ребра, в новом меше выбраются вершины, и добавляются в кривую ребра.

вот в этом окне Пересечения, включите кривизну (галочкой) для батокса


  • 0

#196 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 842 сообщений
  • Из:moscow

Отправлено 15 марта 2020 - 04:48

Когда мы выделяем какие то ребра и добавляем по ним кривую (синюю) то, то она создается и все эти ребра ее запоминают.
Потом при перестроении в алгоритме сабдивижена, когда идет обсчет с участием такого ребра, в новом меше выбраются вершины, и добавляются в кривую ребра.

вот в этом окне Пересечения, включите кривизну (галочкой) для батокса

Понял, так да, можно на этапе отрисовки точки для кривой выделить.

Про пересечения я в курсе. Я на них линиями кривизны не пользуюсь. У меня своя система выглаживания круглоскулых корпусов. Сейчас с параметризацией еще интереснее будет приемы нарабатывать.

Почему графики на сечениях неровные-тоже понятно. Вот пример, не знаю видно будет. где график перегибается (на стыке граней) Поскольку они чуть туда сюда делаются на выпуклых поверхностях, то и линия идет чуть зигзагом. И при некоторых условиях дает резкий перегиб. 

А вот на транце с кромкой по сечению графики ШП и курве синхронные..

Прикрепленные изображения

  • sec1_1.JPG
  • sec1_2.JPG
  • transom_curve.JPG

  • 0

#197 BBM

BBM

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 508 сообщений
  • Из:г.Казань

Отправлено 15 марта 2020 - 08:58

Визард киля подправили, но появилось что-то непонятное

 

КильБульба.png

 

хотя после вставки в модель выглядит нормально

 

КильБульба-02.png


  • 0

#198 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 15 марта 2020 - 11:05

это кривизна включена. для отладки. еще не убрал.


  • 0

#199 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 15 марта 2020 - 22:32

Делаю, чтобы в визарде киля показывало как в основном перспективном окне ...


  • 0

#200 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 16 марта 2020 - 00:03

сделал.


  • 0



Ответить



  


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей