Version: [6013] Isoliner3D 0.23.0

0.23.0
- При выгрузке в GLB спрашивается, применить ли вертикальное
преувеличение. Настоящие высоты верны для расчёта, но пласт
в километры по площади и десятки метров по мощности сплющивается
в блин, и для показа нужна модель как на экране.
0.22.2
- В журнал пишется состав выгрузки: какие части собраны и сколько
в них вершин и граней. По этой строке видно, доходит ли слой
до файла вообще.
0.22.1
- В выгрузку GLB попадают и поверхности с текстурой: прежде они
пропускались, и в файле оставались только слои, рисуемые цветом.
Сама текстура пока не уходит, поверхность выгружается ровным
цветом: для картинки нужны координаты текстуры у каждой вершины
и сама картинка внутри файла.
0.22.0
- Выгрузка сцены в файл GLB. Формат выбран из-за читателей: его
открывают браузерные просмотрщики, Blender и Windows, поэтому
модель можно просто отправить письмом. Выгружается ровно то, что
видно, включая обрезку, с цветами в вершинах. Координаты пишутся
настоящие, без центрирования сцены и без вертикального
преувеличения: преувеличение это способ смотреть, а не свойство
модели.
0.21.1
- Убраны прежние подходы к срезу: отбор граней по центру и лента
между отметками. Работает разрезка граней по контуру с крышкой
по кольцам среза, две реализации одного и того же держать рядом
незачем.
0.21.0
- Замкнутые оболочки режутся контуром и срез закрывается крышкой.
Рёбра отверстия собираются в кольца, кольцо перекладывается
в координаты «путь вдоль контура на отметку», где оно плоское,
там разбивается и возвращается обратно. Открытым поясам крышка
не строится: замкнутость определяется по рёбрам.
0.20.1
- Грани, пересечённые контуром обрезки, режутся по нему, а не
отбираются по своему центру. У пояса встречаются треугольники
крупнее коридора: по центру они торчали за краем. Новым вершинам
высота берётся из плоскости исходной грани.
0.20.0
- Пояса режутся по треугольникам, а не выбрасываются целиком
по центру объекта. Это открытые поверхности, крышка на срезе им
не нужна, поэтому край идёт по контуру обрезки. Прежде пояс либо
оставался весь, либо исчезал весь.
0.19.4
- В журнал пишется, какие цвета прочитаны из стиля слоя: по этой
строке видно, читается ли стиль вообще, или дело в отрисовке.
0.19.3
- Тела из векторных слоёв рисуются без затенения. Цвет берётся
из стиля слоя, а затенение его умножало и уводило оранжевый
в бурый. Пояса плоские, светотень им ничего не добавляет,
а совпадение с картой важнее.
0.19.2
- Грани тел разворачиваются нормалью вверх. Прежняя попытка
дублировать грань обратной копией оказалась неверной: копия
ложится ровно на оригинал, две грани спорят за глубину, отчего
появляются полосы, а цвет уходит в чёрный.
- Цвет объекта берётся из стиля слоя QGIS, если свой цвет не задан:
как слой покрашен на карте, так он выглядит и в объёме. Своей
легенды не заводим, раскраска уже сохраняется вместе с проектом.
0.19.0
- Объект с переменной высотой разбирается по кольцам, каждое в своей
плоскости. Разбивка в плане не годится для вертикальных стенок:
там кольцо вырождается в линию, и грань превращалась в мусор.
Нормаль кольца берётся по формуле Ньюэлла, то есть по всему
кольцу, а не по первым трём точкам.
0.18.3
- Обрезка объёмных тел отключена: отбор треугольников по центру
с крышкой по линии реза давал рваную оболочку на юбках. Такие тела
снова показываются или скрываются целиком, как в 0.17. Срез по ним
требует разрезки треугольников плоскостью, это отдельная работа.
Обрезка призм, поверхностей, линий и точек работает как прежде.
0.18.2
- Обрезанное тело разбивается так же, как необрезанное: в новой ветке
полигон снова уходил на веерную разбивку, и на плоском контуре она
тянула лучи через всю фигуру.
- Отбор треугольников считается разом по массиву, а не по одной
точке: на слое из десятков тысяч треугольников сборка занимала
почти сорок секунд.
0.18.1
- Тела с объёмной геометрией (юбки, полиэдры) режутся контуром,
и срез закрывается крышкой: в каждой точке линии реза берётся
интервал, который тело занимает по вертикали, и строится лента.
Прежде на месте среза была дыра, сквозь которую видна изнанка
оболочки.
0.18.0
- Призмы режутся контуром по-настоящему: контур объекта пересекается
с областью обрезки, и призма строится по новому контуру заново
вместе с крышками. Срез получается закрытым, а не дырой в оболочке,
и виден как разрез. Прежде объект выбрасывался целиком по своему
центру.
0.17.0
- Вытягивание объектов от поверхности: низ призмы берётся с выбранного
растра, верх это низ плюс высота из поля. Подошва дома садится
на рельеф, а не на общую отметку. Прежний вариант «от поля до поля»
остался.
- Настройки сцены сохраняются в проект QGIS и восстанавливаются при
открытии окна: отмеченные слои, свойства каждого, преувеличение,
разнос, прозрачность, разрешение текстуры, обрезка вместе
с нарисованными контуром и линией. Отдельного файла нет намеренно:
настройки описывают те же слои и должны ехать вместе с проектом.
0.16.3
- Разметка кладётся на один уровень над сценой. Отметка вершины
берётся с поверхности только ради попадания луча, для обрезки
важно плановое положение, а разброс высот при вертикальном
преувеличении читался как ошибка.
0.16.2
- Окно снова не открывалось: обработчик показа разметки трогал сцену,
которой ещё нет. Сцена объявлена заранее, обработчики проверяют,
что она уже создана.
- Изолинии и прочие векторы теперь режутся с первой же сборки: контур
обрезки сбрасывался после их разбора, и они резались по прошлому
состоянию.
- Размечать можно и в сцене без растровых поверхностей: вершина
берётся с уровня середины сцены. Раньше на слое одних изолиний
нарисовать линию обрезки было нечем.
0.16.1
- Окно не открывалось: кнопка показа разметки включается при сборке
окна и вызывала перерисовку раньше, чем появлялось состояние сцены.
Всё состояние теперь заводится до создания виджетов, а тест это
стережёт.
0.16.0
- Обрезка режет и векторные слои, а не только растры. Линии рвутся
там, где выходят за кусок, точки и скважины отбираются по своему
положению, тела по центру объекта. Раньше изолинии и разломы
торчали за краем обрезанной модели.
- Контур обрезки считается один раз за сборку, а не на каждую
вершину.
0.15.1
- Перечисления Qt берутся по имени через getattr во всех местах:
ветвление через hasattr оставляло в коде короткое имя, и проверка
совместимости с Qt6 на него ругалась. Вызов exec_ заменён на exec,
взятый по имени: в Qt6 подчёркнутого варианта нет.
0.15.0
- Показ разметки включается и выключается кнопкой: контур и линия
разреза нужны, пока размечаешь, и мешают, когда смотришь результат.
Обрезка при этом продолжает работать.
0.14.5
- Замыкание контура больше не выворачивает обрезку наизнанку: режим
куска мог остаться от работы с линией, а в обрезке по контуру всё,
кроме «оставить внутри», понималось как «убрать внутри». Теперь
контур ставит осмысленное умолчание, а вывернутым считается только
явный вариант «убрать внутри».
0.14.4
- Исправлена отрисовка контура поверх модели: в опциях отрисовки
был передан лишний ключ и функция смешивания вместе с аргументами,
из-за чего линия не рисовалась вовсе. Набор ключей теперь повторяет
штатный, только проверка глубины выключена.
0.14.3
- Нарисованный контур и линия рисуются поверх модели, не считаясь
с глубиной: высота вершин для работы не нужна, важно плановое
положение, а линия, спрятанная под складкой рельефа или под
верхним пластом, мешает постоянно.
0.14.2
- Кнопки на панели над сценой снова отзываются на наведение
и нажатие: стиль плашки распространялся на кнопки внутри и стирал
у них подсветку. Нажатая кнопка режима теперь видна по заливке.
0.14.1
- Прежние наброски больше не висят поверх модели: они живут вне
списка элементов сцены, и при пересборке обнулялась только ссылка,
а сама линия оставалась в сцене.
- Клик при рисовании попадает только по видимой части модели. Луч
ищет пересечение по исходным гридам, поэтому вершина ставилась
и там, где сцена уже обрезана.
0.14.0
- Появилась настоящая параллельная проекция и кнопка переключения
между ней и перспективной. Вид сверху включает её сам: план
с перспективой это не план, объекты на разной высоте смещаются
в кадре и перестают совпадать в плане. Прежний приём со сжатием
раствора камеры убран: он уводил камеру далеко и портил точность
буфера глубины, отчего близкие поверхности спорили полосами.
0.13.4
- Убрана рябь между близкими поверхностями на виде сверху: раствор
камеры в один градус уводил её слишком далеко, и буфер глубины
терял точность. Теперь двенадцать градусов, перспективы почти нет,
а глубина считается верно.
- После обрезки сцена снова попадает в кадр: если охват изменился
заметно, камера кадрируется заново.
- Новая кнопка снимает обрезку и убирает наброски, возвращая сцену
целиком.
0.13.3
- Вид сверху стал настоящим планом: раствор камеры сжимается почти
до нуля, расстояние растёт так, чтобы масштаб не менялся. Раньше
вид сверху оставался перспективным, и объекты, лежащие выше,
уезжали в кадре к краям: нарисованная линия переставала совпадать
с коридором, собранным из нескольких поверхностей.
0.13.2
- Полуширина коридора вводится прямо на панели над сценой, рядом
с кнопкой линии, и видна только тогда, когда режут коридором.
В свойствах сцены её никто не искал.
0.13.1
- В сцене рисуется не только замкнутый контур, но и линия: кнопка
«Завершить линию» отдаёт её в обрезку коридором и сама включает
нужный режим. Контур режет площадь, линия режет вдоль профиля.
- Наброски показываются только пока они режут сцену: нарисованный
контур больше не висит поверх модели, когда обрезка идёт по другому
слою.
0.13.0
- Резать сцену можно и линией, не только контуром. В списке обрезки
появились линейные слои, а в вариантах куска: слева от линии,
справа и коридор вдоль неё с заданной полушириной. Коридор даёт
профиль разреза вместе с данными по обе стороны, а не голую линию.
- Сторона считается по ближайшему звену, поэтому на изломах ломаной
она меняется там же, где меняется ближайшее звено.
0.12.5
- Нарисованный контур больше не расходится с моделью. Он живёт
в координатах сцены, а центр сцены меняется вместе с данными:
после обрезки охват уменьшался, и линия оставалась висеть
по прежнему центру. Теперь контур перерисовывается при каждой
сборке.
0.12.4
- На панель сцены вернулся вид сверху: рисовать контур по плану
удобнее именно с него.
0.12.3
- Подсказка держится всё время рисования и показывает число вершин,
а не гаснет после первого клика.
- За курсором тянется резинка от последней вершины, поэтому видно,
куда ляжет следующая сторона.
- В режиме рисования правая кнопка снимает последнюю вершину: она
отбирается у камеры только на это время.
0.12.2
- Вершины больше не ставятся в пустоту: поблажка на попадание
впритирку убрана, точка берётся только при настоящем пересечении
луча с поверхностью.
- Снять последнюю вершину и замкнуть контур теперь можно кнопками
рядом со значком рисования: правая кнопка и Esc в сцене заняты
камерой и до рисовалки не доходили.
0.12.1
- Рисование контура стало попадать. Луч бьётся вчетверо мельче
(4096 отсчётов вместо 512), а если пересечения нет, но луч прошёл
впритирку к поверхности, точка берётся по ближайшему сближению
в пределах четверти ячейки.
- Правая кнопка снимает последнюю вершину, Esc отменяет рисование,
Backspace тоже снимает вершину. Красный шарик опроса убирается
при входе в режим рисования.
0.12.0
- Инструменты переехали на сцену маленькими значками, как на холсте
карты: рисование контура, сохранение контура слоем, копирование
и сохранение снимка, пересборка при снятом автообновлении. Список
слоёв больше не тесним кнопками. Значки рисуются кодом, поэтому
одинаково выглядят в светлой и тёмной теме.
0.11.1
- В режиме рисования контура отказ больше не молчит: клик мимо
поверхности и отсутствие растровых поверхностей в сцене
объясняются в строке состояния.
0.11.0
- Контур обрезки рисуется прямо по сцене. Кнопка «Рисовать контур»,
клик по поверхности ставит вершину, двойной клик замыкает. Готовый
контур сразу режет сцену, кнопка «Контур в слой» сохраняет его
слоем проекта.
0.10.0
- Обрезка сцены по контуру. В свойствах сцены выбирается любой
полигональный слой и что показать: кусок внутри контура или всё
остальное. Поверхности и тела пластов режутся по границе контура,
а не по прямоугольнику охвата, дырки контура остаются дырками.
0.9.5
- Кадр сцены копируется в буфер обмена кнопкой «Копировать снимок»
или сочетанием Ctrl+C: чаще всего снимок нужен, чтобы сразу
вставить его в письмо или в записку, а не хранить файлом.
0.9.4
- На время сборки сцены курсор меняется на часы, а в строке
состояния стоит «Собираю сцену…». Полоса не годилась: сборка идёт
в потоке интерфейса, и бегущая полоска всё равно не двигалась бы.
- Кнопок видов больше нет, сцена крутится мышью. Внизу осталась одна
кнопка «Сохранить снимок…». Кнопка сборки появляется только тогда,
когда снята галка «Обновлять автоматически».
- Из строки состояния убрана подпись о числе поверхностей.
0.9.2
- Исправлена рекурсия в приёмнике элементов сцены: массовая замена
вызовов переписала и его собственное тело, поэтому сборка падала
с maximum recursion depth exceeded. Добавлена проверка, которая
ищет вызовы по кругу между методами окна.
0.9.1
- Сбой сборки сцены больше не выглядит пустым окном: причина
выводится в строку состояния, полный след уходит в журнал
сообщений QGIS, раздел Isoliner3D.
0.9.0
- Галка слоя прячет и показывает его сразу, без пересборки сцены:
элементы уже лежат в видеопамяти, поэтому отклик мгновенный
на сцене любой тяжести.
- Правка свойств сама пересобирает сцену, с задержкой в четверть
секунды после последнего изменения, чтобы кручение ползунка
не вызывало десяток сборок подряд. В свойствах сцены есть галка
«Обновлять автоматически» на случай тяжёлой сцены.
- Тела, линии и точки собираются в один меш на слой, а не на всю
сцену: иначе слой нельзя было спрятать, не пересобирая всё.
0.8.3
- Убраны семь конструкций except/continue, на которых сканер каталога
QGIS отклоняет загрузку (B112). Добавлена проверка, которая ищет
такие места и не даёт им вернуться: сканер сообщает о них только
при отправке, поэтому ловить их надо у себя.
0.8.2
- Слой, свойства которого ни разу не открывали, рисуется по своим
умолчаниям. Показ читал словарь настроек напрямую и на пустой
записи брал контурный режим, поэтому полигоны с Z выходили
линиями, хотя в свойствах стояло «Телом (заливка)». После
переустановки плагина словарь пуст, отсюда линии вместо тел.
- Полигоны в режиме призмы больше не дублируются контуром.
0.8.1
- Поверхность полигона с переменной Z строится триангуляцией Делоне
с сохранением вершинных отметок. Прежде такой объект уходил на
веерную разбивку: она рассчитана на простые грани полиэдра, а на
поясе между изолиниями тянула лучи через фигуру и теряла
внутренние кольца. Пояс с нижней границей на одном уровне и
верхней на другом теперь выходит скатом, шапки вершин и днища
впадин остаются плоскими.
- Распознавание плоского объекта смотрит все вершины, а не первые
4096. Обход контура идёт сначала по одной границе, поэтому пояс в
двадцать пять тысяч вершин объявлялся плоским по своему началу и
скат превращался в плиту.
- Отбор объектов в сцену считает вершины, а не объекты. Слой из 1174
поясов показывался наполовину, упираясь в потолок в пятьсот
объектов, тогда как весит он меньше одного растра.
- Триангуляция Делоне без ограничений (сборки без GEOS 3.11)
отсеивает треугольники вне фигуры по центру. Раньше на вогнутом
контуре она затягивала заливы и закрывала дыры.
0.8.0
- Показ полигонов призмой: контур выдавливается от поля низа до поля
верха, получаются две крышки и вертикальные стенки. Так ступени
рельефа, уступы карьера и подсчётные блоки с кровлей и подошвой
становятся объёмом, а не стопкой плит.
- Диагностика геометрии слоя: если все объекты плоские, в окно
выводится их число, размах отметок и подсказка про призму.
0.7.4
- Кэш триангуляции полигонов. Разбивка повторялась на каждую сборку
сцены, хотя геометрия не менялась: на пятистах контурах это шесть
секунд каждый раз. Ключ считается без разбора геометрии: слой,
объект, число вершин, охват и отметка. Потолок 128 МБ.
0.7.3
- Тела собираются в один меш вместо элемента на объект, цвет каждого
хранится в вершинах. На 500 объектах это было 500 наборов буферов
плюс нормали в двойной точности на каждый: сотни мегабайт при
34 МБ полезных данных. Шарики на устьях скважин собраны так же.
- Прореживание считает бюджет вершин на всю сцену, а не потолок
на слой. Одиночная поверхность получает вдесятеро больше деталей,
чем раньше, а тяжёлая пачка перестаёт складывать миллионы вершин.
- В отчёт перестройки добавлена оценка занятой видеопамяти.
0.7.2
- Честная триангуляция подключена и к полигонам со своей высотой Z.
Раньше она работала только при отметке из поля, а плоский контур
с собственной Z по-прежнему разбивался веером и давал лучи через
всю фигуру. Теперь плоский объект распознаётся по постоянной Z
и разбивается Делоне, а настоящая поверхность с переменной Z
идёт прежним путём: её грани простые, веер для них верен.
0.7.1
- После слияния списков отбор слоёв перестал фильтровать по типу:
векторный слой уходил в чтение как растр, не открывался и попадал
в «Пропущено», хотя рисовался телами. Отбор снова разделён.
0.7.0
- Вкладки убраны, список слоёв один: растры и векторы вместе, как
в дереве QGIS, тип слоя помечен в строке. Первой строкой закреплена
«Сцена». Фильтр действует на весь список.
- Разрез стал свойством линейного слоя: галка «Показывать плоскостью
разреза» и выбор чертежа в свойствах. Отдельная вкладка не нужна,
а разрезов в сцене может быть несколько, каждый со своим чертежом.
- Окно свойств показывает набор по типу выделенного: растру каналы
и окраска, вектору источник высоты и цвет, линейному слою вдобавок
разрез, «Сцене» общие настройки.
0.6.4
- Кольца полигона больше не склеиваются в одну ломаную. Внутри части
геометрии кольца идут подряд, и обход всех вершин соединял конец
внешнего кольца с началом дыры: через фигуру тянулся прямой штрих,
а на слое контуров рельефа такие штрихи давали паутину.
- Число линий на слой ограничено полутора тысячами, с сообщением.
0.6.3
- У полигонального слоя появился выбор показа: контуром или телом.
Вложенные контуры уровней осмысленно смотреть линиями, заливка
нужна телам пласта и полиэдрам. Слой без Z по умолчанию идёт
контуром, слой с Z телом.
- Предупреждения выводятся в окно, а не только в журнал: нет высоты Z,
не выбрано поле отметки, слишком много объектов.
- Убрана подсказка над списком векторных слоёв.
0.6.2
- Полигоны разбиваются триангуляцией Делоне с ограничениями. Прежняя
веерная разбивка годится для выпуклых
граней полиэдра и на вогнутом контуре с дырами давала лучи через
всю фигуру.
- Несовместимые параметры слоя больше не выбираются: источник высоты
гаснет у скважин, поле отметки доступно только при высоте из поля,
поля отметок только в режиме скважин, «Своя высота геометрии»
недоступна слою без Z и заменяется отметкой из поля.
0.6.1
- Линии и точки не рисовались вовсе: высота бралась через asPolyline
и asPoint, а они отдают точки без Z. Теперь читаются настоящие
вершины геометрии.
- Полигональный слой без высоты Z больше не превращает сцену в кашу:
такой слой пропускается с записью в журнал, а число объектов
на слой ограничено пятьюстами.
- Пустая сцена без объяснений заменена записью в журнал: не выбрано
поле отметки, нет Z, слишком много объектов.
0.6.0
- Диалог перестроен. Все настройки убраны с главного окна в свойства:
открываются двойным кликом по строке списка и правой кнопкой, как
в QGIS. Первой строкой списка закреплена «Сцена», её свойства это
преувеличение, разнос по Z, прозрачность и сторона текстуры.
- Вкладка «Тела» стала «Векторами» и переехала на второе место.
Она принимает любые векторные слои: полигоны с Z рисуются телами,
линии и точки берут высоту из геометрии или из числового поля.
Изолинии с отметкой в поле ложатся в сцену на своей высоте.
- Скважины переехали в «Векторы» и стали режимом точечного слоя,
поэтому вкладка «Разрезы» занята только разрезами.
- Вокруг сцены появилась тонкая рамка, как у холста карты QGIS.
Кнопки видов дополнены наклонным ракурсом.
0.5.4
- Выбранная окраска больше не сбрасывается на палитру при переходе
на другой слой. Штатный findData сравнивает данные пункта через
QVariant и на кортежах Python молча возвращает -1, поэтому в списке
показывалась палитра, хотя в сцене оставалась прежняя окраска.
Тем же были задеты списки чертежа разреза, скважин и каналов.
0.5.3
- В инструменте 1.07 вернулся вариант «Карта (растр для текстуры)»:
при слиянии демо-инструментов он остался в коде, но пропал из списка
вариантов и лишился своих параметров, поэтому выбрать его было
нельзя. Добавлен тест: каждый вариант обязан быть виден в диалоге.
0.5.2
- Исправлен перенос группы инструментов из Isoliner: не были захвачены
импорт QVariant и три служебных объекта пост-процессора мешей.
Инструмент 1.04 при запуске падал, остальные при записи полей.
Ошибку добавлен ловить новый тест: pyflakes по всем модулям
с требованием нуля неопределённых имён.
0.5.1
- Первый выпуск. 3D-просмотр выделен в отдельный плагин из набора
Isoliner. Поверхности из растров проекта, водонепроницаемые тела
пластов из многоканальных гридов, скважины стволами с мачтами
и подписями, плоскость разреза, полиэдры, TIN и MultiPolygon Z,
опрос сцены кликом, снимок PNG. pyqtgraph и PyOpenGL в комплекте,
устанавливать ничего не нужно.
- Наложение карты на поверхность настоящей текстурой с затенением
по нормали: ортофото, подложка, геологическая карта со всей
символикой. Разрешение задаётся отдельно и от плотности сетки
не зависит. Отдельно накладывается чертёж разреза на ленту,
несколько разрезов показываются одновременно.
- Группа Processing «Пласт и блочная модель», семь инструментов:
сборка грида пласта, калькулятор запасов, блочная модель, экспорт
поверхностей в меши 2DM, домены в канал пласта, разность запасов
и генератор демонстрационных данных.
- Кэш прочитанных гридов и отрисованных текстур: повторная сборка
сцены идёт из памяти. Счётчики перестройки сцены в окне
и с разбивкой по фазам в журнале сообщений.
- Двуязычное руководство (PDF, RU и EN) в комплекте, открывается
по языку интерфейса кнопкой Справка.

yes

valery

2026-08-18T20:10:15.583737+00:00

3.16.0

4.99.0

no

Version management

Plugin details