关于安卓手机安装obb软件包的一个小问题

本文详细介绍了如何处理和安装手机游戏中的obb数据包,包括修改文件后缀、解压、正确放置路径以及安装对应apk的方法。同时,还附带了手机连接U盘的实用技巧。

注:文章来自于我的博客shawnluo.com,欢迎访问~!

首先,讲一个题外话:手机如何连接U盘

  1. 外部设备:OTG数据线,U盘
  2. 内部准备:打开手机开发者模式
  3. 具体步骤:设置→更多设置→关于手机→进入安卓系统界面→快速点击三次软件版本号→打开开发者模式<外补:快速点击三次Android版本进入彩蛋???>→打开OTG→打开开发者选项→打开USB调试
  4. 最后:将USB接上U盘,插入手机即可

 

正题:大部分安卓软件将obb数据包放在apk中,可直接安装软件,但对于某些数据包较大的软件,为了避免,将会将obb数据包与apk分开。这时候,如果手动下载,如何安装就成了一个问题。下面,以安装一款较大的手机游戏为例,讲解一下当碰到obb数据包时如何做。

1.下载下来obb数据包。将后缀.obb改为.zip并解压;

2.讲解压后的文件放入手机的存储路径为:Android/obb/com.xxx.xxx/main.xxx.xxx.xxx.obb

其中com.xxx.xxx需要自己创建,然后将.obb放入其下<obb数据文件对安装路径要求较高,不能随意乱放>

有些手机需要将.obb放入SD卡中才能行

3.按mian.xxx.obb搜索并下载对应的apk<有的时解压后就有>,然后安装apk就可以了

注:文章来自于我的博客shawnluo.com,欢迎访问~!

OBB算法(Oriented Bounding Box)用于获取3D模型的最小包容盒。以下是使用C++实现的OBB算法: ```cpp #include <iostream> #include <vector> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/type_ptr.hpp> using namespace std; const int MAXN = 100; // 3D点类 class Point3D { public: float x, y, z; Point3D(float _x = 0, float _y = 0, float _z = 0) : x(_x), y(_y), z(_z) {} }; // 3D模型类 class Model3D { public: int n; // 顶点数 Point3D p[MAXN]; // 顶点坐标 // 计算OBB盒的中心和半边长 void calcOBB(Point3D& center, glm::mat3& axis, Point3D& halfSize) { // 计算协方差矩阵 glm::mat3 covariance; for (int i = 0; i < n; i++) { glm::vec3 v(p[i].x, p[i].y, p[i].z); covariance += glm::outerProduct(v, v); } covariance /= n; // 计算特征值和特征向量 glm::vec3 eigenValues; glm::mat3 eigenVectors; glm::eigen(covariance, eigenValues, eigenVectors); // 计算OBB盒信息 axis = eigenVectors; center = Point3D(0, 0, 0); for (int i = 0; i < n; i++) { center.x += p[i].x; center.y += p[i].y; center.z += p[i].z; } center.x /= n; center.y /= n; center.z /= n; halfSize = Point3D(0, 0, 0); for (int i = 0; i < n; i++) { glm::vec3 v(p[i].x - center.x, p[i].y - center.y, p[i].z - center.z); v = glm::transpose(axis) * v; halfSize.x = max(halfSize.x, abs(v.x)); halfSize.y = max(halfSize.y, abs(v.y)); halfSize.z = max(halfSize.z, abs(v.z)); } } }; int main() { Model3D model; // 读入模型信息 cin >> model.n; for (int i = 0; i < model.n; i++) { cin >> model.p[i].x >> model.p[i].y >> model.p[i].z; } Point3D center, halfSize; glm::mat3 axis; model.calcOBB(center, axis, halfSize); cout << "OBB盒中心:" << center.x << " " << center.y << " " << center.z << endl; cout << "OBB盒半边长:" << halfSize.x << " " << halfSize.y << " " << halfSize.z << endl; cout << "OBB盒轴向:" << endl; for (int i = 0; i < 3; i++) { cout << axis[0][i] << " " << axis[1][i] << " " << axis[2][i] << endl; } return 0; } ``` 在实现中,我们使用了glm库进行矩阵计算。该库可以通过以下命令安装: ``` sudo apt-get install libglm-dev ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值