osg android学习--经验记录

这篇博客记录了作者在学习osg在Android平台上的使用经验,特别是关于纹理图片格式的探索,包括成功支持的格式如peg, tif, bmp, tga,并提到了tif格式可以实现透明效果。" 108877840,7242996,现实世界强化学习: RWRL 套件助力强化学习算法应对现实挑战,"['算法', '深度学习', '机器学习', '编程语言', '人工智能']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来自论坛威总,阿威-耳机威


1. 关于纹理图片的格式,包括支持性和半透明

peg tif  bmp tga
这几个是用过的,成功了

tif也可以透明

 1  你没有必要在安卓上支持n多格式  你可以在pc上做一次预处理
 2 存储可以压缩也可以不压缩  这要根据实际情况考虑  处理过程参考1
3  没有哪个工程是直接输出就作为release资源的  除非你只是为了毕业设计
 4  为了兼容性和稳定性考虑  支持越多成本和风险越高
 4种格式 作为原始数据
既可以调试的时候 直接使用  又方便以后的处理
 因为你以后会遇到最大的问题就是半透明
 png 处理这个问题上  非常蛋疼  不是你蛋疼  是美工蛋疼

 我们现在都不支持bmp
 我们现在流程 只支持tga和tif
 前端输入 不是这两种格式 一律转换成tga32
最终发布格式 都是定制的

 理论上 tga32 是兼容性最高的  ps插件输出只有24和32两种选择 
tif是为了多通道存储和压缩数据用的
启动压缩的tif和png没有大小差别
理论上是一样大的
所以 你根本就没有任何理由去使用png

 处理流程尽量少的输入  是最高效率的 

 我们更倾向于两种格式
处理格式和发布格式
发布格式是考虑到实际项目用途的
比如plod的格式  是针对加载时间优化的
 或者界面格式  直接就保存热区分割数据
所以 就算安卓什么格式都不支持  也没关系

 我们只用osg核心库而已 

 我强调的是整个项目的流程  不是只有程序员在工作
你要考虑到其他人的工作压力
最直接就是美工
 你要考虑到他们的能力和智商 

 模型材质颜色相互影响的情况么? 
你没有强制ss
所以传染了


### osgEarth 缓存功能的数据种子初始化 osgEarth 是一个用于地球可视化和地理空间数据处理的强大库。它支持多种数据源以及高效的缓存机制来优化性能。以下是关于如何配置和使用 osgEarth 的缓存功能进行数据种子初始化的相关说明。 #### 配置缓存路径 在 osgEarth 中,可以通过 `earth.xml` 文件中的 `<cache>` 节点定义缓存的位置和其他属性。例如: ```xml <cache type="filesystem"> <path>/path/to/cache</path> </cache> ``` 此配置指定了文件系统的缓存存储位置[^4]。如果未指定,则默认会使用操作系统的临时目录作为缓存路径。 #### 数据种子初始化命令 为了预加载特定区域的地图瓦片或其他资源到缓存中,可以使用 osgEarth 提供的 `seed_cache` 工具。该工具允许通过命令行参数设置范围、缩放级别以及其他选项来进行批量缓存填充。 基本语法如下: ```bash seed_cache --config earth.xml --bounds minx,miny,maxx,maxy --levels start_level:end_level ``` - **--config**: 指定包含地图配置的 XML 文件。 - **--bounds**: 定义感兴趣区域的边界框(以经纬度表示)。 - **--levels**: 设置需要缓存的缩放级别范围。 例如,假设希望为某个城市创建离线地图并预先缓存第 1 到第 15 层级的数据,可运行以下命令: ```bash seed_cache --config city_map.xml --bounds 120.7,31.0,121.8,32.0 --levels 1:15 ``` 这将触发 osgEarth 对指定区域内所有对应层级的地图瓦片请求,并将其保存至本地磁盘上的缓存目录中[^5]。 #### 自动化脚本示例 对于更复杂的场景或者频繁更新需求的情况,编写自动化脚本来管理多个任务可能是更好的选择。下面给出 Python 实现的一个简单例子: ```python import subprocess def run_seed_command(config_file, bounds, levels): command = [ 'seed_cache', '--config', config_file, '--bounds', ','.join(map(str, bounds)), '--levels', f'{levels[0]}:{levels[1]}' ] result = subprocess.run(command, capture_output=True, text=True) if result.returncode != 0: raise Exception(f"Error seeding cache: {result.stderr}") print(result.stdout) if __name__ == "__main__": try: run_seed_command('city_map.xml', [120.7, 31.0, 121.8, 32.0], [1, 15]) except Exception as e: print(e) ``` 以上代码片段展示了如何利用标准库模块 `subprocess` 来执行外部程序,并捕获其输出以便进一步分析或记录日志信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值