3D моделювання

Як накласти текстуру на 3D обєкти, наприклад будинки, зібрані в стереорежимі. На рельєф ложиться, а обєкти не чіпає. Якщо є якісь алгоритми, вишліть будь-ласка на ел. пошту.

Доброго времени суток :slight_smile:

Появилось безумное желание :unamused: обсудить с кем-то шаблоны сбора 3D объектов.
Для построения 3D моделей используется технология сбора крыш с последующем построением стен от основания крыши до ЦМР.
Но, тем не менее, во многих шаблонах [Flat Roof .. Cut Hipped Roof] последняя точка сбора как раз отвечает за задание высоты объекта.

Как я поняла, в шаблоне Tower ведется сбор только окружности - основания цилиндра (3 точки).
А вот в шаблоне Tower Roof используется уже 5 точек… Скажите пожалуйста, зачем эта пятая нужна :question:

И еще такой момент… Не могу разобраться с порядком сбора шаблонов: Barrel Roof, Wall (вообще не пойму в чем… изюминка), Dome Roof и Polytent Roof.

… и тишина…
не слышно ни бурных оваций фанатиков, ни мудрых изречений автора… :cry:

Доброго времени суток :slight_smile:

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

Откуда в Tower Roof взялась пятая точка - не знаю.. Было 4 - 3 для основания и 1 для вершины. Видимо она завершает сбор основания.

Barrel Roof, Wall, Dome Roof еще в разработке. Но, так как они относятся к специфическим крышам, мы их, как правило, упрощаем и собираем с помощью других шаблонов.

Polytent Roof используется в случаях с количеством углов ≠4. Собирается в таком порядке: все точки основания крыши, вершина и F5.

Если бы Вы только знали, как приятно читать Ваш ответ…

Конечный результат сбора Barrel Root и Dome Roof в принципе понятен… Осталось только дождаться порядка сбора.
А вот Wall… Для чего именно создается этот шаблон? Он будет предназначен для сбора стен зданий… или любых отвесных граней… или чего-то еще..?
Поясните пожалуйста =)

Как интересно, не ты ли Оль говорила что лучшая справка – это онлайн справка, и лучше пусть разработчики тратят время на доработку программы а не на HELP. viewtopic.php?f=1&t=913

:smiley: опять о наболевшем :smiley:
я особых противоречий не вижу

Возникла проблема с построением 3D зданий, а именно с проецированием стен на цмр.
Не выполняется команда ЦМР/Переприсвоить высоты.
Пример во вложении.
3D.rar (149 KB)

Саша :exclamation:
Ведь если каждый к Вам поедет - то оно то конечно хорошо - меньше работы, больше отдыху. Сама бы приехала :blush:

А вот на счёт подробной / начальной инструкции - было бы неплохо, даже совсем неплохо.

А то такие … получаются как рисовать просто наугад - и пока что мне логику отрисовки уловить не удалось. К сожалению :confused:

Спасибо. :laughing:

Повторю то, что уже писал в ICQ. При моделировании зданий в Digitals очень важно соблюдать последовательность действий.

  1. Выполняем сбор модели рельефа и генерацию ЦМР.
  2. Создаем ортофото по снимкам и полученной ЦМР. Это наша текстура поверхности. Имя растрового файла должно совпадать с именем карты и находится он должен в той же папке, что и карта.
  3. Выполняем сбор 3D зданий, используя соответствующие шаблоны на закладке Сбор.
  4. Если здания собирались по крышам без регистрации точек основания стен, необходимо выполнить ЦМР>Переприсвоить высоты, пометив предварительно нашу ЦМР. 3D объекты должны находится в слоях с типом 3D модель, каждая крыша должна содержать вырожденные (с нулевой высотой) грани стен (сбор выполнять при Сервис>Настройки>Главная>Константы>3DBottom=1. Каждая грань 3D объекта должна состоять из 5-ти точек плюс разрыв, иначе объект считается неправильным. После выполнения команды для зданий будут сгенерированы крыши.
  5. Только после этого можно выполнять команду формирования крыш для multiflat объектов @Map.CoverMultiFlatRoofs.
  6. Теперь, когда геометрия объектов готова, приступаем к генерации текстур из снимков, команда @Window.GenerateTextures bond pak jpg. Чем больше у вас снимков одной и той же территории под разными ракурсами, тем качественнее результат.

Имеется также команда @Map.RemoveFaceBlinking, которая устраняет мерцание накладывающихся граней (вызывать после п.5).

Полученную модель можно экспортировать в Google Earth (команда Файл>Сохранить как>Google Earth KML/KMZ) или просматривать в Digitals (Вид>Трехмерный)

P.S. Что создавать раньше ЦМР или 3D здания значения не имеет. В остальных процессах важен порядок.

Вот тут краткая инструкция по 3D моделированию в Digitals 3D моделювання - #10 від Bondarets_Alexander. Вот тут по сбору зданий vinmap.net/samples/3DBuildings.pdf (последняя правда на англ.)

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

А гостям мы всегда рады :slight_smile:

Сегодня специально экспериментировала и убедилась, что порядок не так уж и важен.
Переменная 3DBotton фактически не влияет ни на что при проецировании стен на ЦМР.
Но, если при сборе опускать высоту здания (хоть на чуть-чуть), переприсваивание высот тоже не работает.
И еще оно не работает, если при сборе контура использовалась вставка дуги (CTRL+A) - это только для части объектов - самой дуги и смежных граней.

И ведь вопрос заключается не в порядке выполнения каких-либо действий.
Каждая функция, @Map.CoverMultiFlatRoofs, @Window.GenerateTextures, @Map.RemoveFaceBlinking… и то же переприсваивание высот… они ведь независимы друг от друга. Как на построение геометрии может влиять текстурирование, которое фактически заключается в добавлении к объекту еще одного параметра?

При сборе крыш ничего нового не выдумывалось, а использовались перечисленные выше параметры и технология. Объекты вроде как тоже не являются вырожденными, представляют из себя грань и находятся в нужном слое. А вот как теперь стены опустить на землю и где именно (во всех объектах) ошибка?

ID слоя зданий должно находиться в пределах между 1 и до 50 (поправьте меня если я ошибасюь в диапазоне).

При этом - если 1-30 - то здание бедт опускать до ЦМР, если больше - то стены будут подниматься.
У меня твой пример строит здания как полагается.

Приглашение принято. :blush:

За инструкцию - особое огромное грандмерси :stuck_out_tongue:

Бум изучать и учиться рисовать правильно. :wink:

Сделала всё по инструкции. Докладываю:

Flat roof - вместо 3+1 требует 4+1 точки. Непонятно.
Flat Roof with more or less than four corners - непонятно - после ESC как написано в инструкции отменяет собранный контур. Возможно какие-то изменения внесены в порядок.
Lean-to roof и Gable Roof - вместо 3+1 требует 4+1 точки.Непонятно.
Hip Roof - как в инструкции.
Hipped Gable Roof - как в инструкции.
Tent Roof - как в инструкции.
Mansard Roof - не всё как в инструкции, ещё 4 и 5 добавляют где должны быть боковые гребни мансарды, а уж потом 6 - высота центрального гребня.
Combination of Gable and Hip Roof - как в инструкции.
Combination of Gable and Hipped Gable Roof - как в инструкции.
Cut Hipped Roof - как в инструкции.
Tower - не просит высоту (4-ую точку).
Tower Roof - как в инструкции.
Dome Roof - не строит как в инструкции - просто набор 5 точек в виде кривой. При чём первый угол строит прямым.
Barrel Roof - работает просто как полилиния.
Wall - не строит как в инструкции - просто набор 5 точек в виде кривой. При чём первый угол строит прямым.
Polytent roof - нет вообще в инструкции. Что-то строит, но непонятен сам порядок сбора.

По поводу последних 4-х детально описано тут 3D моделювання - #4 від Anish

Прошу оставить на этот счёт свои комментарии. :laughing:

Если при сборе регистрировать точки основания стен, то проецирование стен на ЦМР уже не сработает. Алгоритм генерации стен отыскивает вырожденные грани стен (грани с нулевой высотой) и проецирует нижние точки граней на модель рельефа. То есть такие грани обязательно должны присутствовать, чтобы процедура сработала. Команды @Map.CoverMultiFlatRoofs, @Map.RemoveFaceBlinking могут изменить исходную геометрию объектов так, что проецирование стен не сработает. Кроме того не имеет смысла вызывать процедуру устранения мерцаний граней до того как все грани уже сформированы. В этом и важен порядок. Нет смысла также в генерации текстур, если не все грани еще сформированы. Иначе грани которые появились позднее окажутся без текстур, либо изменится порядок перечисления граней и текстуры окажутся не на своих местах.

Вывод - порядок важен. Сначала сбор 3Д зданий, потом формирование недостающих граней (проецирование стен и @Map.CoverMultiFlatRoofs). Потом устранение мерцаний граней(@Map.RemoveFaceBlinking), если таковые наблюдаются. И только потом когда все грани сформированы запускаем генерацию текстур (@Window.GenerateTextures).

Любой сбор объектов без использования 3D шаблонов приводит к нарушению структуры 5 точек грани плюс разрыв. Такие объекты дальше считаются поврежденными и из обработки всеми перечисленными процедурами исключаются. За этим надо следить. Если в Вид>Трехмерный не отображаются все грани объекта надо проверить список координат его точек.

Про правильные ID 3D объектов я вовсе забыл. Спасибо pippa :slight_smile: Изначально эта технология разрабатывалась для немецкой фирмы TeleAtlas, они и предоставляли требования к выходным данным.

Будем очень признательны за подвиг по переводу и уточнению имеющейся инструкции сбора 3D зданий. Действительно со временем порядок сбора зданий изменялся и это нигде не отображалось. Некоторые 3D шаблоны еще не реализованы.

Всегда пожалуйста :blush:

А по поводу сбор объектов без использования 3D шаблонов позвольте, Александр, с Вами не согласиться. Можно собрать здание по высоте используя лишь простой полигон. Так называемый контур здания. Затем пометить все объекты такого плана (предварительно проверить - что эти объекты находятся на слое 3D модель :wink: ), заходим в пункт меню - Сервис - Преобразовать - Полигон в 3D модель. Тогда данная модель будет абсолютно кооректна в отношении вырожденных граней. А уж потом - помечаем ЦМР, ЦМР - Переприсвоить высоты (уточнить ID слоёв (кстати, в примере по Козину на форуме как раз точный классификатор всех правильных ID для всех типов крыш)). Всего наилучшего.
:stuck_out_tongue:

Позволяю не согласиться :slight_smile: Однако процитирую себя.

Речь не шла о формировании 3D моделей из обычных полигонов. Здесь лишь напоминание о том, что правильный сбор 3D моделей возможен только с соответствующими шаблонами. Попытки дополнить 3D объект обычными полигонами или полилиниями приводят к нарушению его структуры. Это же касается и редактирования координат точек 3D объектов. К сожалению, представление трехмерных моделей в DMF неидеально и пока отсутствуют инструменты редактирования граней. Поэтому испорченный объект порой проще собрать заново, чем редактировать его точки.

Спасибо, pippa. Вот это как раз то, что нужно :slight_smile: