【Filament】Filament环境搭建

news2024/11/15 22:54:07

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
  • 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 根目录下创建【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

         执行结束后,在【filament\android\filamat-android\build\outputs\aar】目录下会生成 filamat-android-release.aar 文件,如下。

        2)拷贝 aar

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

copy filament-android\build\outputs\aar\filament-android-release.aar ..\out\

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1284829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CefSharp 获取POST(AJAX)、GET消息返回值(request)

CefSharp作为专门为爬虫工具开发的库比Selenium这种开发目的是页面测试工具然后用来做爬虫的工具要贴心得多。我们操作网页的时候发送或者做了某个动作提交表单之后需要知道我们的动作或者提交是否成功,因为有的页面会因为网络延迟问题提交失败,需要准确…

2022 China Collegiate Programming Contest (CCPC) Guilin Site

A.Lily Problem - A - Codeforces 题意 思路 数所有周围没L的格子 #include <bits/stdc.h>using i64 long long;constexpr int N 2e5 10; constexpr int mod 1e9 7; constexpr int Inf 0x3f3f3f3f; constexpr double eps 1e-10;std::string s;int n;void solv…

Android Edittext进阶版(Textfieids)

一、Text fieids 允许用户在 UI 中输入文本&#xff0c;TextInputLayout TextInputEditText。 在 Text fieids 没出来(我不知道)前&#xff0c;想实现这个功能就需要自己自定义控件来实现这个功能。 几年前做个上面这种样式(filled 填充型)。需要多个控件组合 动画才能实现&a…

数据的力量:Web3 游戏运营指南

在充满活力的 Web3 游戏行业中&#xff0c;市场的起伏不定为开发者带来了挑战和机遇。利用数据的能力对于游戏开发者来说至关重要&#xff0c;能够实时监控游戏内的经济状况并分析玩家行为。这些功能可以帮助项目方获得宝贵的智慧洞察&#xff0c;优化游戏设计&#xff0c;提高…

2022年全国大学生数据分析大赛医药电商销售数据分析求解全过程论文及程序

2022年全国大学生数据分析大赛 医药电商销售数据分析 原题再现&#xff1a; 问题背景   20 世纪 90 年代是电子数据交换时代&#xff0c;中国电子商务开始起步并初见雏形&#xff0c;随后 Web 技术爆炸式成长使电子商务处于蓬勃发展阶段&#xff0c;目前互联网信息碎片化以…

python爬虫非对称加密RSA案例:某观鸟网站

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cDovL2JpcmRyZXBvcnQuY24vaG9tZS9hY3Rpdml0eS9wYWdlLmh0bWw’) 拿到网址&#xf…

Notepad++ 安装TextFx插件失败

据说TextFx插件是Notepad常用插件之一&#xff1b;有很多格式化代码的功能&#xff1b;下面安装一下&#xff1b; 插件管理里面看一下&#xff0c;没有这个TextFx&#xff1b; 根据资料&#xff0c;先安装NppExec&#xff1b; 然后下一个5.9老版本的Notepad&#xff0c;如下图…

iptalbes firewalld

一、IPtables介绍Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤(对OSI模型的四层或者是四层以下进行过滤)的防火墙工具&#xff0c;它的功能十分强大&#xff0c;使用非常灵活&#xff0c;可以对流入和流出服务器的数据包进行很精细…

通讯录管理系统(基于C语言)

模块设计 本通讯录管理系统功能模块共包括9个部分&#xff1a;1.输入数据、2.显示数据、 3.插入数据、4.删除数据、5.查看数据、6.修改数据、7.保存数据、 8.返回主菜单、9.退出系统. 一&#xff0e;总体设计 通讯录的每一条信息包括&#xff1a;姓名、性别、住址、联系电话…

VirtualBox安装Centos7.9

目录 1、下载Centos7.9镜像 2、新建虚拟电脑 3、虚拟电脑配置 3.1、配置CPU 3.2、设置启动顺序(光驱放在第一个) 3.3、设置存储 3.4、设置网络(桥接网卡) 4、启动 启动 等待 选择安装过程中语言 安装位置 开始安装 设置root账号密码 重启 输入用户名和密码登录…

传统制造业企业如何实现数字化转型?

传统制造企业的数字化转型涉及利用数字技术来提高效率、生产力和整体业务流程。以下是实现制造业数字化转型的关键步骤和策略&#xff1a; 1.当前流程的评估&#xff1a; 确定可以从数字化转型中受益的领域。这可能包括生产流程、供应链管理、库存控制和客户关系。 评估技术集…

StarRocks上新,“One Data、All Analytics”还有多远?

K.K在《未来十二大趋势》中认为&#xff0c;我们正处于一个数据流动的时代。商业乃数据之商业。归根结底&#xff0c;你在处理的都是数据。 的确&#xff0c;当数据成为新的核心生产要素之际&#xff0c;数据分析就犹如最重要的生产工具之一&#xff0c;决定着企业在数字化时代…

Chrome清除特定网站的Cookie,从而让网址能正常运行(例如GPT)

Chrome在使用某些网址的时候&#xff0c;例如GPT的时候&#xff0c;可能会出现无法访问这个网址的情况&#xff0c;就是点不动啥的 只需要把你需要重置的网址删除就好了

【未解决】huggingface模型文件下载地址为什么会变?

问题描述 上次我们已经分析了huggingface加载模型时候的文件目录应该是怎么样的&#xff1f;&#xff08;感兴趣的可以主页搜索“【经验分享】huggingface模型加载过程下载到cache文件目录具体是怎么组织的&#xff1f;以及都会有什么文件目录&#xff0c;每个文件目录是什么&a…

智能优化算法应用:基于黑猩猩算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑猩猩算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑猩猩算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑猩猩算法4.实验参数设定5.算法结果6.参考文献7.…

分布式搜索引擎elasticsearch(一)

5.1 初始elasticsearch elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。 5.1.1正向索引 5.1.2elasticsearch采用倒排索引: 文档(document):每条数据就是一个…

hikvision SDK使用学习/实践

函数介绍 //1. 枚举设备int MV_CC_EnumDevices(unsigned int nTLayerType, MV_CC_DEVICE_INFO_LIST *pstDevList); //2. 创建设备句柄int MV_CC_CreateHandle(void **handle, const MV_CC_DEVIEC_INFO *pstDevInfo); //参数&#xff1a;handle  [out]  //设备句柄&#xf…

简单了解传输层协议之TCP和UDP

目录 一、什么是端口号? 二、TCP协议 2.1 TCP报文格式 2.2 三次握手 2.3 四次挥手 2.4 窗口流量控制 三、UDP协议 3.1 UDP报文格式 3.4 传输过程 一、什么是端口号? 我们自己的一台电脑上有时可能会同时运行多个进程软件来进行上网。那么当网络上的服务器响应我们电…

python中的进制转换和原码,反码,补码

python中的进制转换和原码,反码,补码 计算机文件大小单位 b bit 位(比特) B Byte 字节 1Byte 8 bit #一个字节等于8位 可以简写成 1B 8b 1KB 1024B 1MB 1024KB 1GB 1024MB 1TB 1024GB 1PB 1024TB 1EB 1024PB 进制分类 二进制:由2个数字组成,有0 和 1 pyth…

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析

3 serverless数据分析 大纲 3 serverless数据分析3.1 创建Lambda3.2 创建API Gateway3.3 结果3.4 总结 3.1 创建Lambda 在Lambda中&#xff0c;我们将使用python3作为代码语言。 步骤图例1、入口2、创建&#xff08;我们选择使用python3.7&#xff09;3、IAM权限&#xff08;…