1 前言
Filament 是一个实时物理渲染引擎,用于 Android、iOS、Linux、macOS、Windows 和 WebGL 平台。该引擎旨在提供高效、实时的图形渲染,并被设计为在 Android 平台上尽可能小而尽可能高效。Filament 支持基于物理的渲染(PBR),这意味着它可以模拟光线、材质和阴影等物理效果,以创建更逼真的图形场景。该引擎的设计注重性能和资源效率,使其成为移动设备和其他平台上渲染复杂图形的理想选择。
Filament 官方资料如下。
- Filament 仓库:https://github.com/google/filament
- Filament 中 PBR 原理及实现:https://google.github.io/filament/Filament.html
- Filament Materials Guide:https://google.github.io/filament/Materials.html
- Material Properties:https://github.com/google/filament/blob/main/docs/Material Properties.pdf
- Building Filament:https://github.com/google/filament/blob/main/BUILDING.md
- Building Filament for Android on Windows:https://github.com/google/filament/blob/main/android/Windows.md
- samples:https://github.com/google/filament/tree/main/samples
- android samples:https://github.com/google/filament/tree/main/android/samples
笔者本地编译环境如下。
Cmake: 3.19
ninja: 1.8.2
Python: 3.11.5
JDK: 17.0.9
Git Bash: 2.42.0.2
Visual Studio: 2019
Android NDK: 25.1.8937393
说明:Android SDK 的环境变量需要配置 ANDROID_HOME。
2 Windows 编译
官方编译介绍见 → Building Filament。
1)拉取 Filament 代码
git clone --recurse-submodules git@github.com:google/filament.git
# 切换至release分支
git checkout release
如果下载速度比较慢,在有代理软件(如 SSR)的前提下,在 ~/.ssh/config 文件(没有可以新建一个)里添加以下内容,可以提高下载速度。
Host github.com
User git
ProxyCommand connect -H 127.0.0.1:1080 %h %p
Host github.com
User git
ProxyCommand connect -S 127.0.0.1:1080 %h %p
2)生成项目
在 filament 根目录下创建【outcmake-window】目录,打开 cmake-gui,配置如下。
在弹窗中选择 “Visual Studio 16 2019” 和 x64,如下。
配置完后,勾选 FILAMENT_SUPPORTS_VULKAN,再点击 Configure 按钮。
接着点击 Generate 按钮,生成项目。
3)编译项目
在 cmake-gui 界面,点击 Open Project 按钮,将通过 Visual Studio 打开生成的项目,用户也可以通过使用 Visual Studio 打开【filamentoutcmake-windowsTNT.sln】文件来打开项目,按以下步骤编译项目。
4)运行项目
Debug 和 Release 版本的编译路径分别为【filamentoutcmake-windowssamplesDebug】、【filamentoutcmake-windowssamplesRelease】,里面有很多 exe 文件,点击这些文件可以运行相应 Demo,如下是点击 gltf_instances.exe 文件运行的效果。
用户也可以通过以下方式运行相关 Demo。
3 Android 编译
官方介绍见 → Building Filament for Android on Windows,本节所有命令都是通过【x64 Native Tools Command Prompt for VS 2019】命令行工具执行(注意:不能通过 cmd 或 Git Bash 执行这些命令)。
3.1 桌面工具编译
1)配置项目
在 filament 根目录下创建【outcmake-desktop-tools】目录,打开【x64 Native Tools Command Prompt for VS 2019】命令行工具,执行以下命令。
cd outcmake-desktop-tools
cmake ^
-G Ninja ^
-DCMAKE_INSTALL_PREFIX=..releasefilament ^
-DFILAMENT_ENABLE_JAVA=NO ^
-DCMAKE_BUILD_TYPE=Release ^
....
注意:不要修改桌面工具的安装路径(CMAKE_INSTALL_PREFIX),3.3 节中会使用到该路径。
2)编译项目
ninja matc resgen cmgen
3)安装项目
ninja install
执行结束后,在【filamentoutreleasefilamentbin】目录下生成了一些 exe 文件,如下,箭头所指的 exe 文件在 3.3 节中会使用到,因此不要修改桌面工具的安装路径。
3.2 平台插件编译
1)创建目录
在 filament 根目录下分别创建以下目录。
mkdir outcmake-android-release-aarch64
mkdir outcmake-android-release-arm7
mkdir outcmake-android-release-x86_64
mkdir outcmake-android-release-x86
2)配置项目
通过【x64 Native Tools Command Prompt for VS 2019】命令行工具,在每个目录下依次执行以下命令。
cd outcmake-android-release-aarch64
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..android-releasefilament ^
-DCMAKE_TOOLCHAIN_FILE=....buildtoolchain-aarch64-linux-android.cmake ^
....
cd outcmake-android-release-arm7
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..android-releasefilament ^
-DCMAKE_TOOLCHAIN_FILE=....buildtoolchain-arm7-linux-android.cmake ^
....
cd outcmake-android-release-x86_64
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..android-releasefilament ^
-DCMAKE_TOOLCHAIN_FILE=....buildtoolchain-x86_64-linux-android.cmake ^
....
cd outcmake-android-release-x86
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..android-releasefilament ^
-DCMAKE_TOOLCHAIN_FILE=....buildtoolchain-x86-linux-android.cmake ^
....
注意: 不要修改平台插件的安装路径(CMAKE_INSTALL_PREFIX),3.3 节中会使用到该路径。
3)安装项目
在每个 cmake-android-release-xxx 目录下,都执行一次以下命令。
ninja install
执行结束后,在【filamentoutandroid-releasefilamentlib】目录下生成了一些平台插件库,如下,在 3.3 节中会使用到,因此不要修改平台插件的安装路径。
3.3 生成 AAR
1)构建 aar
进入【filamentandroid】目录,执行以下命令。
gradlew -Pcom.google.android.filament.dist-dir=..outandroid-releasefilament assembleRelease
执行结束后,会生成 4 个 aar,位置如下。
filamentandroidfilamat-androidbuildoutputsaarfilamat-android-release.aar
filament服务器托管网androidfilament-androidbuildoutputsaarfilament-android-release.aar
filamentandroidfilament-utils-androidbuildoutputsaarfilament-utils-android-release.aar
filamentandroidgltfio-androidbuildoutputsaargltfio-android-release.aar
2)拷贝 aar
将 aar 文件拷贝到【filamentoutaar】目录下。
copy filamat-androidbuildoutputsaarfilamat-android-release.aar ..outaar
copy filament-androidbuildoutputsaarfilament-android-release.aar ..outaar
copy filament-utils-androidbuildoutputsaarfilament-utils-android-release.aar ..outaar
copy gltfio-androidbuildoutputsaargltfio-android-release.aar ..outaar
拷贝的 aar 文件如下。
3.4 导入依赖
1)自动导入
在 appbuild.gradle 文件中添加以下依赖,版本号可以参考 → releases。
android {
...
aaptOptions { // 在应用程序打包过程中不压缩的文件
noCompress 'filamat', 'ktx'
}
}
dependencies {
implementation 'com.google.android.filament:filament-android:1.48.0'
implementation 'com.google.android.filament:filamat-android:1.48.0'
implementation 'com.google.android.filament:filament-utils-android:1.48.0'
implementation 'com.google.android.filament:gltfio-android:1.48.0'
}
2)手动导入
使用 3.3 节中编译的 aar(或从 releases 中下载 aar),将他们复制到【projectlibs】或【projectapplibs】目录下。
如果复制到【projectlibs】目录下,在 appbuild.gradle 中配置如下。
android {
...
aaptOptions { // 在应用程序打包过程中不压缩的文件
noCompress 'filamat', 'ktx'
}
}
dependencies {
implementation fileTree(dir: '../libs', include: ['*.aar'])
}
如果复制到【projectapplibs】目录下,在 appbuild.gradle 中配置如下。
android {
...
aaptOptions { // 在应用程序打包过程中不压缩的文件
noCompress 'filamat', 'ktx'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar'])
}
声明:本文转自【Filament】Filament环境搭建。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://w服务器托管网ww.fwqtg.net
相关推荐: 保姆级:Windows Server 2012上安装.NET Framework 3.5
我是默,一个在CSDN分享笔记的博主。 在这里,我要推荐给大家我的专栏《Windows》。 无论你是编程小白,还是有一定基础的程序员,这个专栏都能满足你的需求。我会用最简单易懂的语言,带你走进代码的世界,让你从零开始,一步步成为编程大师。 让我们在代码的…