Узнайте, как импортировать 3D-модели, преобразовывать их в формат Sceneform и просматривать их в Android Studio.
Импорт нового 3D-ресурса
Sceneform поддерживает 3D-ресурсы в следующих форматах:
- ОБЖ
- glTF (анимация не поддерживается)
- FBX, с анимацией или без.
Выполните следующие действия, чтобы импортировать новый 3D-ресурс:
Убедитесь, что папка
appвашего проекта содержит папкуsampledata.Чтобы создать папку, щелкните правой кнопкой мыши папку
appв окне « Проект» , затем выберите « Создать» > «Каталог образцов данных» .Папка
sampledataявляется частью вашего проекта Android Studio, но ее содержимое не будет включено в ваш APK.Скопируйте исходный файл 3D-модели (
*.obj,*.fbx.fbx или*.gltf) и все его зависимости (*.mtl,*.bin,*.png,*.jpgи т. д.) вsampledataпапка.Не копируйте эти исходные файлы в папку
assetsилиresвашего проекта, так как это приведет к их ненужному включению в APK.Щелкните правой кнопкой мыши исходный актив 3D-модели и выберите «Импортировать актив сцены» , чтобы начать процесс импорта.
Значения используются
sceneform.asset()вbuild.gradleприложения и определяют, где в вашем проекте будут созданы файлы*.sfaи*.sfb.Если вы импортируете модель впервые, используйте значения по умолчанию.
Поле Описание Путь исходного актива Имя файла актива 3D-модели OBJ, FBX или glTF для импорта. Путь материала defaultуказывает Sceneform использовать встроенный материал по умолчанию или путь к файлу пользовательского материала*.mat.Выходной путь .sfa Используйте значение по умолчанию или укажите другой путь в папке sampledata.Файл .sfa создается, если отсутствует. Его можно изменить , чтобы контролировать некоторые аспекты процесса импорта.
Это гарантирует, что
*.sfaне будет включен в ваш APK без необходимости.Выходной путь .sfb По умолчанию используется папка src/main/ assets /, что позволяет использовать произвольные имена файлов ресурсов.Если имя файла (без расширения файла) является действительным идентификатором ресурса (например,
R.raw.filename), то вы можете вместо этого использовать папкуsrc/main/ res/raw /, если хотите.Дополнительные сведения об использовании папок
assets/иres/в приложении см. в обзоре ресурсов приложений для Android.Файлы анимации Если вы импортируете файлы анимации
*.fbx, щелкните значок плюса (+) и добавьте остальные файлы по отдельности.Нажмите Готово , чтобы начать процесс импорта.
Чтобы импортировать ваш актив, плагин делает следующее:
Добавляет плагин gradle Sceneform в
build.gradleвашего проекта, если он еще не существует:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }Обновляет файл
build.gradleвашего приложения, чтобы включить строкуapply pluginи записьsceneform.asset()для недавно импортированного актива:apply plugin: 'com.google.ar.sceneform.plugin' sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import. 'default', // 'Material Path' specified during import. 'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import. 'src/main/res/raw/andy') // '.sfb Output Path' specified during import.Эти новые записи в
build.gradleприложения создают две задачи gradle:createAsset-<asset-name>создает файл определения актива Sceneform (*.sfa), если он еще не существует.Эта задача не перезапишет существующий файл
*.sfa, что означает, что любые изменения, внесенные в файл SFA после импорта, не будут перезаписаны.Файл
*.sfa— это текстовый файл, который содержит полное, удобочитаемое описание настроек импорта актива. Он ссылается на модели и текстуры в вашем исходном активе, а также определяет материалы, предоставляя параметры материала для физически основанных материалов Sceneform.compileAsset-<asset-name>компилирует файл*.sfaв файл двоичного актива Sceneform (*.sfb).Этот файл
*.sfbвстраивается в APK вашего приложения и загружается во время выполнения для создания визуализируемого файла .
Дополнительные сведения см. в справочнике по плагину Sceneform Gradle .
Открывает
*.sfaв текстовом окне и*.sfbв окне просмотра .
Обновите ранее импортированный 3D-ресурс
Когда вы обновляете ранее импортированный файл исходного ресурса модели OBJ, FBX или glTF ( *.obj , *.fbx .fbx или *.gltf ), соответствующая sceneform.asset() в build.gradle вашего приложения заставляет плагин автоматически создать обновленный файл *.sfb на основе текущих параметров *.sfa .
Чтобы повторить параметры для уже импортированного актива:
- Измените текстовый файл
*.sfa, используя справочник по формату файла SFA в качестве руководства. - Сохраните изменения. Это приводит к повторной компиляции актива и обновлению файла
*.sfb. - Предварительно просмотрите обновленный ресурс, дважды щелкнув файл
*.sfb, чтобы открыть окно средства просмотра ресурсов.
Если вы обновляете ранее импортированный ресурс, содержащий данные анимации, импортируйте каждый из обновленных файлов *.fbx по отдельности, используя знак «плюс» (+) в разделе « Файлы анимации » диалогового окна импорта.
Определения активов Gradle
Процесс импорта добавляет все файлы анимации *.fbx .fbx в конец файла build.gradle .
sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])
Создайте визуализацию
Как только ресурс скомпилирован в формат *.sfb , вы можете создать ModelRenderable и прикрепить его к узлу в сцене следующим образом:
ModelRenderable.builder()
// To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
.setSource(this, Uri.parse("andy.sfb"))
// Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
//.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
Использование нестандартных материалов
Материалы Sceneform по умолчанию позволяют разработчикам легко получать великолепные результаты. Вы также можете использовать пользовательские материалы , чтобы глубоко настроить внешний вид ваших активов.
Чтобы назначить пользовательский материал для вашего актива:
Создайте файл определения пользовательского материала (
*.mat), используя [Справочник по пользовательскому материалу](/sceneform/develop/custom-material в качестве руководства.Примените пользовательский материал к активу:
При импорте нового актива :
- Укажите файл пользовательского материала
*.matв процессе импорта .
Чтобы обновить ранее импортированный актив :
Если содержимое
*.sfaне было настроено, удалите существующие*.sfaи*.sfbи запись sceneform.assetsceneform.asset()вbuild.gradleприложения , а затем повторно импортируйте ресурс. Это гарантирует, что регенерированные атрибуты*.sfaи параметры материала будут соответствовать параметрам, поддерживаемым вашим пользовательским материалом.Чтобы сохранить любые сделанные вами настройки
*.sfa, откройте файл*.sfaи изменитеsourceатрибут на путь к вашему пользовательскому файлу материала*.mat, затем вручную настройте атрибуты*.sfaи параметры материала, чтобы они соответствовали вашим пользовательским настройкам. материал.
- Укажите файл пользовательского материала

