Как создать реалистичные .scn файлы?
Глядя на приложение AR примера Apple, есть много реалистичных объектов (чашка, свеча и т.д.). Однако, работая с редактором сценариев на Xcode, ясно, что это позволяет создавать только базовые объекты.
Мой вопрос: какое программное обеспечение/файл можно использовать для создания реалистичных объектов scn
? Я уверен, что есть программное обеспечение, которое позволяет создавать 3D-модели и скрывать их до файлов scn
. Я просто не знаю, какое программное обеспечение использовать или какие файлы можно преобразовать в scn
Примечание: Я понимаю, что этот вопрос может быть слишком неопределенным/широким для рекомендаций Stackoverflow. Я просто не знаю, где задать свой вопрос, и это кажется лучшим местом.
Ответы
Ответ 1
Чтобы заставить работать некоторые существующие модели, вот что я сделал... только основы, которые я знаю.
- Я пошел в Turbosquid и нашел 3D-модель, которая будет работать для меня.
- Убедитесь, что в нем есть файлы OBJ. Купить и скачать.
- Следующая загрузка Blender. Импортируйте файл OBJ, который вы только что купили.
- Экспортируйте файл DAE.
- Перетащите файлы DAE и любые текстуры (файлы png) в папку.scnassets в своем проекте.
- Нажмите на модель DAE в папке.scnassets. Нажмите, чтобы выбрать объект на графике сцены.
- Нажмите на глобус в правом верхнем углу.
- Я щелкнул Diffuse и выбрал один из PNG, которые перетащил, чтобы применить его к модели.
Вы также можете пропустить конвертацию Blender и просто воспользоваться одним из бесплатных онлайн-инструментов конвертации OBJ в DAE. Погугли это. И попробуйте купить дешевую модель за 5 долларов на Turbosquid, у которой просто есть файл OBJ, а не много других частей. Они слишком велики и в любом случае создают другие проблемы для начинающих.
Обновление После просмотра презентации Apple WWDC, посвященной Model IO в XCode, теперь я вижу, что вы можете поместить OBJ файл в папку.scnassets. Выберите этот файл, перейдите в редактор и выберите "Преобразовать в файл SCN". Это должно работать, но я не пробовал. Стоит попробовать с копией вашего файла OBJ.
Обновление декабря 2018 года: я больше работаю с 3D файлами. Вот некоторая дополнительная помощь по этому вопросу.
Попробуйте использовать MeshLab для импорта вашей 3D-модели и преобразования ее в файл.DAE. Перетащите файл.DAE в папку в Xcode. Это то, что вы собираетесь использовать для отображения в вашем приложении.
- http://www.meshlab.net/
Если исходная 3D-модель представляет собой файл.OBJ, есть два связанных файла, которые должны находиться в той же папке, что и файл.OBJ. Это файл *.mtl и файл *.jpg или *.BMP. Файл.mtl можно открыть с помощью TextEdit.
Откройте и убедитесь, что в нем есть строка с именем map_Kd *.jpg. .Jpg - это изображение текстуры, которое оборачивается вокруг файла 3D-сетки. Я обнаружил, что лучше всего убедиться, что ваш файл текстуры имеет формат.jpg. Если это не так, измените его на формат.jpg (например, в режиме предварительного просмотра, сохранив его как jpeg), а затем отредактируйте файл.mtl для нового имени файла.jpg.
У меня было несколько текстурных файлов, которые были.bmp, и я просто преобразовал в.jpg, отредактировал файл.mtl, и я был в порядке.
Вторая проблема - это имя узла в файле.obj. Файл.obj также можно открыть с помощью TextEdit. Файл.obj должен ссылаться на файл.mtl в той же папке. Если нет, у вас есть проблема.
А вот и сложная часть. Когда вы добавляете childNode к rootNode в сцене SceneKit, вы должны заполнить текстовое имя "withName:". Откройте преобразованный файл.DAE, который вы сделали из вашего.obj +.jpg +.mtl (все три используются при импорте в MeshLab, но после экспорта в.DAE есть только файл.DAE), и найдите "узел" id = ". Он может сказать: "идентификатор узла =" узел ". Если это так, слово" узел "- это имя дочернего узла, который вы вводите для своего текстового имени в свойстве" withName: "в scene.rootNode.childNode(withName:" узел ", рекурсивно: верно) вызов.
Вы можете изменить свой идентификатор имени узла на узел, если это не так.
Надеюсь это поможет. Много часов работы и помощь других, чтобы понять следующий раунд работы с 3D-моделями.
Ответ 2
Редактор Xcode SceneKit не представляет собой 3D-авторский пакет - так же, как его редактор SpriteKit и компоненты Interface Builder не эквивалентны таким, как Photoshop, Illustrator, Pixelmator, Affinity Designer и т.д. Чтобы сами создавать объекты 3D-искусства, вам нужно будет изучить Blender, Maya, 3DS Max или один из других основных инструментов 3D-разработки. Остерегайтесь, кривая обучения стать 3D-художником немного круче, чем научиться рисовать в 2D.
Для чего нужен редактор SceneKit, он выводит результат 3D-художником и готовит или комбинирует его для использования в приложении или игре на основе SceneKit - настраивает определения материалов, чтобы они выглядели правильно с помощью рендерера SceneKit, создавая отдельные активы для создания игрового уровня или другой сцены, добавляя динамические особенности SceneKit, такие как эффекты частиц и физика и т.д.
Вы соединяетесь между этими двумя мирами, экспортируя активы из своих 3D-инструментов в один из форматов, которые может импортировать SceneKit. Digital Asset Exchange (.dae) является одним из лучших вариантов здесь, но с помощью более низкого уровня SceneKit, Model I/O, вы также можете импортировать другие форматы, такие как OBJ или Pixar USD.
Когда вы открываете их в Xcode, вы получаете редактор SceneKit, поэтому вы можете начинать отмечать специальные изменения SceneKit и сохранять результаты для использования в вашем приложении в виде файлов .scn.
Есть несколько вещей, которые вы можете сделать в процессе создания и подготовки 3D-активов, что делает их более реалистичными в ARKit. сеанс ARKit из WWDC (и файл ReadMe в проекте примера кода, прикрепленный к этому сеансу) включает в себя несколько таких советов:
- использование материалов на основе материалов
- "испечь" окружающую окклюзию и другие статические световые эффекты
- добавить невидимые теневые плоскости
Ответ 3
Вы можете создать свои реалистичные 3D-модели в формате .DAE, который поддерживается многими инструментами. Затем в Xcode вы можете преобразовать этот .DAE файл в формат .SCN. Для преобразования проверьте это
Как конвертировать .DAE в .SCN
Ответ 4
Лучший способ сделать реалистичные 3d модели - это использовать любой из следующих пакетов программ:
Autodesk Maya, Autodesk 3DS Max, Maxon Cinema 4D, The Foundry Modo или Blender.
Эти инструменты 3D-авторинга позволяют создавать геометрию Polygonal и NURBS. Но любые реалистичные трехмерные объекты нуждаются не только в идеальной форме, но и в идеальной текстуре. Итак, каждый вышеупомянутый пакет содержит свой собственный UV Texture Editor, позволяющий в интерактивном режиме просматривать, размещать и редактировать текстуры объектов. В UV Texture Editor вы можете выбирать, перемещать, масштабировать и вообще изменять UV-топологию для поверхности так же, как вы работаете с другими инструментами моделирования. Вы также можете просмотреть изображение, связанное с назначенной текстурной картой, в качестве фона в таком UV-редакторе текстур и изменить UV-макет в соответствии с требованиями.
Шейдер, принадлежащий трехмерной поверхности вашего объекта, может содержать много разных текстур (обычно в tiff
jpeg
, png
или tiff
). Эти текстуры: диффузный цвет, прозрачность, шероховатость, выпуклость, металличность, отражательная способность, преломление, зеркальность, прозрачность и т.д. Эти текстуры делают 3D-объект реалистичным. Посмотрите на картинку ниже, там 28 проходов рендеринга, некоторые из них могут быть текстурами в слотах затенения:
![enter image description here]()
Здесь вы можете найти курсы по моделированию майя от Pluralsight.
Здесь вы можете найти курс затенения и текстурирования Maya.
Я лично предпочитаю Autodesk Maya. Он имеет модульную систему для плагинов и различных входных и выходных 2D и 3D форматов. Вот потрясающий пример виртуального 3D автомобиля в реальной среде:
![enter image description here]()
Когда ваша 3D-модель и текстуры готовы к экспорту, вам нужно сохранить файл .DAE
в Maya.
В Xcode просто создать новый .SCN
файл в .scnassets
папку, а затем перетащить этот .DAE
файл в сцену.
Или вы можете использовать в iOS 12 в Xcode 10 новый формат .USDZ
от Pixar. Просто перетащите его в свою сцену.