Узнайте, как импортировать 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
и параметры материала, чтобы они соответствовали вашим пользовательским настройкам. материал.
- Укажите файл пользовательского материала