Как открыть obj в sketchup

Обновлено: 30.06.2024

Учебные материалы для школы программирования. Часть 7

Предыдущие уроки можно найти здесь:

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

Сегодня, мы создадим здание и перенесем его в Unity. Хочу обратить ваше внимание на то, что для импорта готового здания, необходимо, чтобы SketchUp стоял на том же ПК. Без программы Unity не сможет импортировать модель.

Порядок выполнения

Откроем SketchUp и выберем шаблон Simple Template - Meters.

Выберем инструмент фигуры и нарисуем на земле квадрат по форме дома.

Теперь, выдавим его с помощью инструмента выдавить/вдавить (push/pull).

Сделаем стены. Для этого используем инструмент Сдвиг (Offset).

Повторим операцию ещё раз.

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

Лишние линии убираются инструментом Ластик (Erase).

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

Нарисуем на стене квадрат и выделим его.

Нажимая Ctrl+C и Ctrl+V, копируем его по стене, привязывая к линии.

После копирования окон лишнии линии стираем.

С помощью инструмента Вдавить/выдавить вдавливаем окно до состояния "На грани" (On Face).

Теперь, инструмент запомнил глубину и можно вырезать окна двойным кликом.

Вырежем дверь похожим образом.

Используем инструмент "Ведёрко" (Paint Bucket) для наложения текстур. Выберем подходящую текстуру и зальём пол с фундаментом.

Аналогично поступим со стенами.

Чтобы наложить текстуру на замкнутый контур, нажмём Shift, чтобы наложить на все плоскости, имеющие такую же текстуру — Ctrl.

Текстура на стену легла не идеально. Перейдём в свиток Текстура-Позиция, и перетягивая красный ползунок мы изменим позицию текстуры, а зелёным — её размер.


Сейчас текстура этой стены отличается от остальных стен. Используем клик левой кнопки мыши по этой стене с зажатым Alt на инструменте "Ведёрко", чтобы запомнить настройки текстуры на этой стене.

И красим инструментом "Ведёрко" остальные стены.

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

На одном из торцов дома создадим плоскость для крыши.

Попрошу заметить, что мы вышли из группы кликом по пустому месту на экране. Если плоскость маленькая, её можно увеличить инструментом "Растянуть" (Scale).

Рисуем на плоскости очертания крыши. Лишние линии можно стереть.

Инструметом Выдавить/вдавить придаём объем.

Используем "Сдвиг" на крыше, чтобы добавить объёма.

И вдавим плоскость немного внутрь.

Окрасим всё подходящими текстурами и удалим человека. Домик готов для импорта в Unity!

В настройках импорта в Unity надо выставить галочку Generate Colliders, а во вкладке Material – Use External Materials.

При этом, импортируются все материалы и создадутся папки.

Теперь, у вас есть своя собственная модель дома, для использования в играх!

Есть досада когда скетч при импорте портит сетку, делает в ней дыры. Выход прост, нужно импортировать в большом масштабе, раз в 10 больше или 100. А потом уже сжать сетку до нужного масштаба обычным инструментом набрав 0,1 или 0,01 соответственно.

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

блин, не вижу Open collada, он должен быть среди списка форматов в которые переводишь верно?



Друзья! Подскажите, почему при импорте в SketchUp из Макса объект становится в начало координат. Постоянно. Раньше стоял SketchUp Pro 2017 и при импорте в него из Макса объекты становильсь на места где были до этого в пространстве Макса. Т.е. Если я импортировал сначала стены, потом двери, они становились чётка в проёмы, а начиная с SketchUp 2018 при импорте всё ставится в кучу в начало координат.. Уже год наверное, постоянно меня парит этот вопрос. Поставил 2019 тоже самое. Делаю импорт из Макса в SketchUp чтобы побыстрому вычертить размеры после виза. Кстати поделитесь кто как после Макса делает чертежи?





Друзья! Подскажите, почему при импорте в SketchUp из Макса объект становится в начало координат. Постоянно. Раньше стоял SketchUp Pro 2017 и при импорте в него из Макса объекты становильсь на места где были до этого в пространстве Макса. Т.е. Если я импортировал сначала стены, потом двери, они становились чётка в проёмы, а начиная с SketchUp 2018 при импорте всё ставится в кучу в начало координат.. Уже год наверное, постоянно меня парит этот вопрос. Поставил 2019 тоже самое. Делаю импорт из Макса в SketchUp чтобы побыстрому вычертить размеры после виза. Кстати поделитесь кто как после Макса делает чертежи?

Решение достаточно простое — создаю некоторый API, который позволяет создавать 3D объекты листов ЛДСП с нужными параметрами. Из этих объектов компонуется готовая модель а также в отдельный файл выгружаются размеры листов для передачи их в центр распила. В результате эксплуатации добавил ещё возможность указывать кромки для листов. Данный плагин был использован для проектирования более десятка различных изделий из ЛДСП. С каждым новым проектом плагин дорабатывался и модифицировался, улучшалось удобство и совершенствовалось API. В качестве примера последний проект — стол-тумба. На картинке модель + готовое изделие (птица и собака для привлечения внимания :))

main.jpg

Красные — это 2 мм кромки, фиолетовый — кромки 0.4 мм. Нижние полки не до конца, так как там батарея отопления у стены. Столешница отстает от стены на 4 см чтобы тепло от батарее отопления поднималось вверх и обогревало стену (вообще делать мебель самому очень удобно — можно сделать под свои размеры).

Скачиваем файл Object3D.rbz
Запускаем SketchUp
Открываем Диспечер расширений (Окно/Диспечер расширений)
Жмем кнопку "Установить расширение" и выбираем скаченный файл Object3D.rbz
После этого плагин запрашивает директорию где будут храниться проекты. Т.е. выводится окно "Укажите директорию с проектами" и требуется указать папку где вы будете хранить ваши проекты.

В результате у нас появляется наше расширение

2019-01-25-10_02_19.jpg

Переходим в папку которую мы указали для хранения проектов. Эту папку можно изменить в меню плагина

2019-01-25-10_06_10.jpg

Создаем в папке директорию с названием нашего проекта. В моем случае это "Шкафчик в зал". Затем заходим в созданную директорию и создаем файл main.rb в котором создаем функцию точки входа

Перезапускаем SketchUp и в меню плагина у вас появится пункт с названием созданной вами папки. Теперь вы выборе этого пункта будет происходить следующее:

  • очистка консоли Ruby
  • удаление всех элементов в текущем проекте
  • загрузка файла main.rb из указанной директории
  • вызов функции object3D_main

В функции object3D_main нужно сделать генерацию вашей модели. Можно скопировать в файл main.rb код который я приводил выше и тогда у вас сгенерируется мой шкафчик.

Файл "core.rb"

Каждая функция возвращает объект Shasoft::Object3D::Object3D который содержит методы для перемещения объекта и его поворота

Функция name() — установка имени объекта. Не стоит им пренебрегать. При сборке может сильно помочь :)

Функции объекта moveX, moveY, moveZ позволяют перемещать объект по соответствующим осям.

Функция move(x,y,z) позволяет переместить объект сразу по трем осям

Функции объекта rotateX, rotateY, rotateZ позволяют вращать объект вокруг соответствующих осей.

Есть функции псевдонимы moveRed, moveGreen, moveBlue, rotateRed, rotateGreen, rotateBlue где оси X(red), Y(green), Z(blue) названы по их цвету в SketchUp. Может кому-то так будет удобнее.
Каждая функция возвращает указатель на сам обхект. Это позволяет делать цепочку вызовов

Функция объекта set(dict,key,value) позволяет установить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Функция объекта get(dict,key,value=nil) позволяет получить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Метод copy позволяет получить копию объекта (хотя работает не очень стабильно :))

Метод group позволяет получить стандартный объект SketchUp::Group

Определен метод для создания объекта. В качестве параметров можно передавать список объектов Shasoft::Object3D::Object3D или SketchUp::Group. Если список параметров пустой, то будет создана новая группа

Также есть функция которая позволяет получить список объектов (Skechup::Group). Можно задать имя словаря и будут возвращены только объекты, у которых такой словарь присутствует. В частности именно так я отделяю объекты лист ЛДСП от других. При создании я устанавливаю словарь LDSP по которому потом и фильтрую все объекты сцены.

Файл "2D_weght"

Файл "ldsp.rb"

Вспомогательная функция для создания выдвижных ящиков

box.jpg

результат работы

в результате будет сгенерирован следующий csv файл со следующими колонками

  • A — Ширина
  • B — Глубина
  • C Количество деталей
  • D — кромки в формате Д-длинная сторона, К-короткая сторона. Именно в таком их записывают в той конторе в которой я заказываю распил деталей. Возможно это стандарт.
  • E — кромки в том формате в котором вы их задавили при генерации
  • F — Название всех деталей. Это полезно при сборке

2019-01-25-10_39_50.jpg

В заключении

Проектирование и сборка мебели самому — это экономия денег где-то в 2 раза. А также возможность втиснуть ваше индивидуальное мебельное изделие в любую нестандартную дырку в квартире. Я обычно собираю мебель на конфирматах 7x50 из ЛДСП 16 мм

1490379431197352996.jpg

При наличии сверла для конфирматов

1490379603123527575.jpg

(и небольшого навыка) сборка занимает не так много времени.

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

Решение достаточно простое — создаю некоторый API, который позволяет создавать 3D объекты листов ЛДСП с нужными параметрами. Из этих объектов компонуется готовая модель а также в отдельный файл выгружаются размеры листов для передачи их в центр распила. В результате эксплуатации добавил ещё возможность указывать кромки для листов. Данный плагин был использован для проектирования более десятка различных изделий из ЛДСП. С каждым новым проектом плагин дорабатывался и модифицировался, улучшалось удобство и совершенствовалось API. В качестве примера последний проект — стол-тумба. На картинке модель + готовое изделие (птица и собака для привлечения внимания :))

main.jpg

Красные — это 2 мм кромки, фиолетовый — кромки 0.4 мм. Нижние полки не до конца, так как там батарея отопления у стены. Столешница отстает от стены на 4 см чтобы тепло от батарее отопления поднималось вверх и обогревало стену (вообще делать мебель самому очень удобно — можно сделать под свои размеры).

Скачиваем файл Object3D.rbz
Запускаем SketchUp
Открываем Диспечер расширений (Окно/Диспечер расширений)
Жмем кнопку "Установить расширение" и выбираем скаченный файл Object3D.rbz
После этого плагин запрашивает директорию где будут храниться проекты. Т.е. выводится окно "Укажите директорию с проектами" и требуется указать папку где вы будете хранить ваши проекты.

В результате у нас появляется наше расширение

2019-01-25-10_02_19.jpg

Переходим в папку которую мы указали для хранения проектов. Эту папку можно изменить в меню плагина

2019-01-25-10_06_10.jpg

Создаем в папке директорию с названием нашего проекта. В моем случае это "Шкафчик в зал". Затем заходим в созданную директорию и создаем файл main.rb в котором создаем функцию точки входа

Перезапускаем SketchUp и в меню плагина у вас появится пункт с названием созданной вами папки. Теперь вы выборе этого пункта будет происходить следующее:

  • очистка консоли Ruby
  • удаление всех элементов в текущем проекте
  • загрузка файла main.rb из указанной директории
  • вызов функции object3D_main

В функции object3D_main нужно сделать генерацию вашей модели. Можно скопировать в файл main.rb код который я приводил выше и тогда у вас сгенерируется мой шкафчик.

Файл "core.rb"

Каждая функция возвращает объект Shasoft::Object3D::Object3D который содержит методы для перемещения объекта и его поворота

Функция name() — установка имени объекта. Не стоит им пренебрегать. При сборке может сильно помочь :)

Функции объекта moveX, moveY, moveZ позволяют перемещать объект по соответствующим осям.

Функция move(x,y,z) позволяет переместить объект сразу по трем осям

Функции объекта rotateX, rotateY, rotateZ позволяют вращать объект вокруг соответствующих осей.

Есть функции псевдонимы moveRed, moveGreen, moveBlue, rotateRed, rotateGreen, rotateBlue где оси X(red), Y(green), Z(blue) названы по их цвету в SketchUp. Может кому-то так будет удобнее.
Каждая функция возвращает указатель на сам обхект. Это позволяет делать цепочку вызовов

Функция объекта set(dict,key,value) позволяет установить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Функция объекта get(dict,key,value=nil) позволяет получить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Метод copy позволяет получить копию объекта (хотя работает не очень стабильно :))

Метод group позволяет получить стандартный объект SketchUp::Group

Определен метод для создания объекта. В качестве параметров можно передавать список объектов Shasoft::Object3D::Object3D или SketchUp::Group. Если список параметров пустой, то будет создана новая группа

Также есть функция которая позволяет получить список объектов (Skechup::Group). Можно задать имя словаря и будут возвращены только объекты, у которых такой словарь присутствует. В частности именно так я отделяю объекты лист ЛДСП от других. При создании я устанавливаю словарь LDSP по которому потом и фильтрую все объекты сцены.

Файл "2D_weght"

Файл "ldsp.rb"

Вспомогательная функция для создания выдвижных ящиков

box.jpg

результат работы

в результате будет сгенерирован следующий csv файл со следующими колонками

  • A — Ширина
  • B — Глубина
  • C Количество деталей
  • D — кромки в формате Д-длинная сторона, К-короткая сторона. Именно в таком их записывают в той конторе в которой я заказываю распил деталей. Возможно это стандарт.
  • E — кромки в том формате в котором вы их задавили при генерации
  • F — Название всех деталей. Это полезно при сборке

2019-01-25-10_39_50.jpg

В заключении

Проектирование и сборка мебели самому — это экономия денег где-то в 2 раза. А также возможность втиснуть ваше индивидуальное мебельное изделие в любую нестандартную дырку в квартире. Я обычно собираю мебель на конфирматах 7x50 из ЛДСП 16 мм

1490379431197352996.jpg

При наличии сверла для конфирматов

1490379603123527575.jpg

(и небольшого навыка) сборка занимает не так много времени.

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

Читайте также: