1 前言

​ Filament 是一个实时物理渲染引擎,用于 Android、iOS、Linux、macOS、Windows 和 WebGL 平台。该引擎旨在提供高效、实时的图形渲染,并被设计为在 Android 平台上尽可能小而尽可能高效。Filament 支持基于物理的渲染(PBR),这意味着它可以模拟光线、材质和阴影等物理效果,以创建更逼真的图形场景。该引擎的设计注重性能和资源效率,使其成为移动设备和其他平台上渲染复杂图形的理想选择。

​ Filament 官方资料如下。

​ 笔者本地编译环境如下。

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 根目录下创建【out\cmake-window】目录,打开 cmake-gui,配置如下。

​ 在弹窗中选择 "Visual Studio 16 2019" 和 x64,如下。

​ 配置完后,勾选 FILAMENT_SUPPORTS_VULKAN,再点击 Configure 按钮。

​ 接着点击 Generate 按钮,生成项目。

3)编译项目

​ 在 cmake-gui 界面,点击 Open Project 按钮,将通过 Visual Studio 打开生成的项目,用户也可以通过使用 Visual Studio 打开【filament\out\cmake-windows\TNT.sln】文件来打开项目,按以下步骤编译项目。

4)运行项目

​ Debug 和 Release 版本的编译路径分别为【filament\out\cmake-windows\samples\Debug】、【filament\out\cmake-windows\samples\Release】,里面有很多 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 根目录下创建【out\cmake-desktop-tools】目录,打开【x64 Native Tools Command Prompt for VS 2019】命令行工具,执行以下命令。

cd out\cmake-desktop-tools
cmake ^
-G Ninja ^
-DCMAKE_INSTALL_PREFIX=..\release\filament ^
-DFILAMENT_ENABLE_JAVA=NO ^
-DCMAKE_BUILD_TYPE=Release ^
..\..

​ 注意:不要修改桌面工具的安装路径(CMAKE_INSTALL_PREFIX),3.3 节中会使用到该路径。

2)编译项目

ninja matc resgen cmgen

3)安装项目

ninja install

​ 执行结束后,在【filament\out\release\filament\bin】目录下生成了一些 exe 文件,如下,箭头所指的 exe 文件在 3.3 节中会使用到,因此不要修改桌面工具的安装路径。

3.2 平台插件编译

1)创建目录

​ 在 filament 根目录下分别创建以下目录。

mkdir out\cmake-android-release-aarch64
mkdir out\cmake-android-release-arm7
mkdir out\cmake-android-release-x86_64
mkdir out\cmake-android-release-x86

2)配置项目

​ 通过【x64 Native Tools Command Prompt for VS 2019】命令行工具,在每个目录下依次执行以下命令。

cd out\cmake-android-release-aarch64
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..\android-release\filament ^
-DCMAKE_TOOLCHAIN_FILE=..\..\build\toolchain-aarch64-linux-android.cmake ^
..\.. cd out\cmake-android-release-arm7
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..\android-release\filament ^
-DCMAKE_TOOLCHAIN_FILE=..\..\build\toolchain-arm7-linux-android.cmake ^
..\.. cd out\cmake-android-release-x86_64
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..\android-release\filament ^
-DCMAKE_TOOLCHAIN_FILE=..\..\build\toolchain-x86_64-linux-android.cmake ^
..\.. cd out\cmake-android-release-x86
cmake ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=..\android-release\filament ^
-DCMAKE_TOOLCHAIN_FILE=..\..\build\toolchain-x86-linux-android.cmake ^
..\..

​ 注意: 不要修改平台插件的安装路径(CMAKE_INSTALL_PREFIX),3.3 节中会使用到该路径。

3)安装项目

​ 在每个 cmake-android-release-xxx 目录下,都执行一次以下命令。

ninja install

​ 执行结束后,在【filament\out\android-release\filament\lib】目录下生成了一些平台插件库,如下,在 3.3 节中会使用到,因此不要修改平台插件的安装路径。

3.3 生成 AAR

1)构建 aar

​ 进入【filament\android】目录,执行以下命令。

gradlew -Pcom.google.android.filament.dist-dir=..\out\android-release\filament assembleRelease

​ 执行结束后,会生成 4 个 aar,位置如下。

filament\android\filamat-android\build\outputs\aar\filamat-android-release.aar
filament\android\filament-android\build\outputs\aar\filament-android-release.aar
filament\android\filament-utils-android\build\outputs\aar\filament-utils-android-release.aar
filament\android\gltfio-android\build\outputs\aar\gltfio-android-release.aar

2)拷贝 aar

​ 将 aar 文件拷贝到【filament\out\aar】目录下。

copy filamat-android\build\outputs\aar\filamat-android-release.aar ..\out\aar\
copy filament-android\build\outputs\aar\filament-android-release.aar ..\out\aar\
copy filament-utils-android\build\outputs\aar\filament-utils-android-release.aar ..\out\aar\
copy gltfio-android\build\outputs\aar\gltfio-android-release.aar ..\out\aar\

​ 拷贝的 aar 文件如下。

3.4 导入依赖

1)自动导入

​ 在 app\build.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),将他们复制到【project\libs】或【project\app\libs】目录下。

​ 如果复制到【project\libs】目录下,在 app\build.gradle 中配置如下。

android {
...
aaptOptions { // 在应用程序打包过程中不压缩的文件
noCompress 'filamat', 'ktx'
}
} dependencies {
implementation fileTree(dir: '../libs', include: ['*.aar'])
}

​ 如果复制到【project\app\libs】目录下,在 app\build.gradle 中配置如下。

android {
...
aaptOptions { // 在应用程序打包过程中不压缩的文件
noCompress 'filamat', 'ktx'
}
} dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar'])
}

​ 声明:本文转自【Filament】Filament环境搭建

【Filament】Filament环境搭建的更多相关文章

  1. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  2. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  3. rnandroid环境搭建

    react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...

  4. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  5. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  6. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  7. Nexus(一)环境搭建

    昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...

  8. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

  9. appium+robotframework环境搭建

    appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...

  10. Linux测试环境搭建的学习建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...

随机推荐

  1. [转帖]AMD第四代宵龙 9174F 亮眼

    https://www.amd.com/zh-hans/processors/epyc-9004-series#%E8%A7%84%E6%A0%BC 型号规格   型号 CPU 核心数量 线程数量 最 ...

  2. [转帖]Shell~echo -e 颜色输出

    https://www.cnblogs.com/ElegantSmile/p/11144879.html echo -e 可以控制字体颜色和背景颜色输出 从一个例子开始: # echo -e &quo ...

  3. js中toString方法的三个作用

    toString方法的三个作用: 1.返回一个[表示对象]的[字符串] 2.检测对象的类型 Object.prototype.toString.call(arr)==="[object Ar ...

  4. 队列(Queue):先进先出(FIFO)的数据结构

    队列是一种基本的数据结构,用于在计算机科学和编程中管理数据的存储和访问.队列遵循先进先出(First In, First Out,FIFO)原则,即最早入队的元素首先出队.这种数据结构模拟了物理世界中 ...

  5. 4.2 Windows驱动开发:内核中进程线程与模块

    内核进程线程和模块是操作系统内核中非常重要的概念.它们是操作系统的核心部分,用于管理系统资源和处理系统请求.在驱动安全开发中,理解内核进程线程和模块的概念对于编写安全的内核驱动程序至关重要. 内核进程 ...

  6. 使用C++实现Range序列生成器

    在C++编程中,经常需要迭代一系列数字或其他可迭代对象.通常,这需要编写复杂的循环结构,但有一种精妙的方法可以使这一过程变得更加简单和可读.如果你使用过Python语言那么一定对Range语句非常的数 ...

  7. 19.0 Boost 基于ASIO网络编程技术

    Boost ASIO库是一个基于C++语言的开源网络编程库,该库提供了成熟.高效.跨平台的网络API接口,并同时支持同步与异步两种模式,ASIO库提供了多重I/O对象.异步定时器.可执行队列.信号操作 ...

  8. 设计模式-1 单例模式 SingletonPattern

    23种设计模式 一.创建型 1,AbstractFactory(抽象工厂,对象模式) 2,Builder(建造者,对象模式) 3,Factory Method(工厂方法,类创模式) 4,Prototy ...

  9. P6824 「EZEC-4」可乐 题解

    题目链接:可乐 一开始想着 0-1 Trie,枚举 \(x\) 去写,然后判断就行了.然后想起南京区域赛的 C 题,其实和这个也有点大同小异的感觉,可以用更朴素的办法,找到对于一个 \(a_i\) 而 ...

  10. P5501 [LnOI2019] 来者不拒,去者不追 题解

    题目链接:来者不拒,去者不追 直接在线查询题目所给的式子是很困难的,我们考虑单点考察贡献.对于一个已经确定的式子,我们发现加入一个数或者删除一个数的贡献如图所示: 如图所示,在原有的序列为 \((1, ...