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
Plugin Tags