android - 如何使用 Android Studio、Vuforia 和 OpenGL 绘制简单的 3D 模型
问题描述
我有一个功能齐全的 iOS 应用程序,现在我正在 Android Studio 中开发 Android 版本。该应用程序不是 3D 游戏,它使用普通的列表视图等,但在一项活动中,该应用程序使用增强现实。我选择使用 Vuforia(获得比 ARCore+ARKit 更多的设备)并购买了这个简单的 3D 模型。
https://www.turbosquid.com/3d-models/blend-gift/977474
现在我只想在我的 Vuforia Image Marker 上展示我自己的模型。简单的!我想 ...
Vuforia 使用 OpenGL 来渲染他们的 3D 模型。它是一个茶壶(https://library.vuforia.com/articles/Training/Image-Target-Guide),它看起来像渲染茶壶所需的类,如下所示:
public class Teapot extends MeshObject {
private Buffer mVertBuff;
private Buffer mTexCoordBuff;
private Buffer mNormBuff;
private Buffer mIndBuff;
private int indicesNumber = 0;
private int verticesNumber = 0;
public Teapot()
{
setVerts();
setTexCoords();
setNorms();
setIndices();
}
private void setVerts()
{
double[] TEAPOT_VERTS = { 11.222200, 0.110300, 20.030291, 10.302300, ect. }
mVertBuff = fillBuffer(TEAPOT_VERTS);
verticesNumber = TEAPOT_VERTS.length / 3;
}
private void setTexCoords()
{
double[] TEAPOT_TEX_COORDS = { 0.608828, 0.354913, 0.609037, 0.414650, ect. }
mTexCoordBuff = fillBuffer(TEAPOT_TEX_COORDS);
}
private void setNorms()
{
double[] TEAPOT_NORMS = { -0.964496, 0.067011, -0.255454, -0.865037, ect. }
mNormBuff = fillBuffer(TEAPOT_NORMS);
}
private void setIndices()
{
short[] TEAPOT_INDICES = { 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4, 8, 9, ect. }
mIndBuff = fillBuffer(TEAPOT_INDICES);
indicesNumber = TEAPOT_INDICES.length;
}
}
所以我想 - 啊哈 - 如果我能找到我的 3D 模型的 Verts、TexCoords、Norms 和 Indices。我可以把它们贴在这里,然后画我很棒的圣诞礼物,而不是茶壶。
我有 3D 模型:
- 3D 工作室项目
- 科拉达
- 对象
- 其他纹理
- FBX
我也有搅拌机(但搅拌机技能几乎为零)。经过长时间的搜索,我认为如果我可以将模型转换为 j-son 文件。我可以获得正确的输入来绘制它。但是创建的 j-son 文件非常大!当我粘贴从文件中获得的数字时,应用程序崩溃并显示:错误:代码太大 - 我当然不想要:-(
所以现在我又被困住了……也许我的礼物太大了?还是我这样做的方式完全错误?
我认为 Android Studios 的创建者应该使 3D 导入和渲染更容易——但这对我现在没有帮助!
它只是一个简单的 3D 礼物,我想要它在简单的 3D 茶壶所在的地方。
解决方案
推荐阅读
- facebook-graph-api - API 看不到新的 Facebook 页面
- java - 使用 Java 为字符串生成唯一 ID
- events - CQRS+ES:对聚合无关的命令/事件,但对投影很重要
- javascript - 如何在php while循环中的特定div中附加数据
- html - (ngx-openlayers) - 悬停在线串时显示工具提示
- javascript - 在对象中查找 2 个最高值 - Javascript
- java - IntelliJ IDEA 2018.2、openjdk 11 和 openjfx 11(没有 maven,不是模块化项目):找不到模块 javafx.controls
- label - 我需要一个基于 PHP 的产品标签设计器
- r - Speed up rendering of large heatmap from ggplot in R
- powershell - Powershell:Net.Webclient - 取决于机器没有从Intranet获得回复