我试图动态创建一个使用arcores新的图像跟踪功能的图像数据库。
目前,我有一个服务器为我提供图像位置,我下载到我的设备的持久数据路径。然后,我使用这些图像创建新的数据库条目,如下所示:
公共变量:
public AugmentedImageDatabase newBD;
public AugmentedImageDatabaseEntry newEntry;
这里,我进行regex匹配,从datapath中获取图像,并将它们转换为Texture2D,以便填充AugmentedImageDatabaseEntry值。
Regex r1 = new Regex(@"https?://s3-([^.]+).amazonaws.com/([^/]+)/([^/]+)/(.*)");
// Match the input for file name
Match match = r1.Match(input);
if (match.Success)
{
string v = match.Groups[4].Value;
RegexMatch = v;
Texture2D laodedTexture = LoadTextureToFile(v);
laodedTexture.EncodeToPNG();
AugmentedImageDatabaseEntry newEntry = new AugmentedImageDatabaseEntry(v, laodedTexture, Application.persistentDataPath + "/" + v);
newEntry.Name = v;
newEntry.Texture = laodedTexture;
newEntry.TextureGUID = Application.persistentDataPath + "/" + v;
Debug.Log(newEntry.Name);
Debug.Log(newEntry.Texture);
Debug.Log(newEntry.TextureGUID);
newBD.Add(newEntry);
}
为了在android上工作,我必须稍微修改Arcore的unity实现的源代码,以便database.add()函数可以在编辑器之外工作。
所有这些似乎都工作得天衣无缝,因为我还没有得到任何错误。一旦我将场景更改为ARCore场景,我将实例化一个ARCore相机,并创建一个新的sessionconfig,其中包含对上面填充的数据库的引用。
下面是代码:
公共类NewConfigSetup:
public GameObject downloadManager;
public GameObject arcoreDevice;
// Use this for initialization
void Start () {
downloadManager = GameObject.Find("DownlaodManager");
TestModelGenerator generator = downloadManager.GetComponent<TestModelGenerator>();
GoogleARCore.ARCoreSessionConfig newconfig = new GoogleARCore.ARCoreSessionConfig();
GoogleARCore.ARCoreSessionConfig config = ScriptableObject.CreateInstance<GoogleARCore.ARCoreSessionConfig>();
config.AugmentedImageDatabase = generator.newBD;
Debug.Log("transfered db size --------------- " + config.AugmentedImageDatabase.Count);
arcoreDevice.GetComponent<GoogleARCore.ARCoreSession>().SessionConfig = config;
Instantiate(arcoreDevice,new Vector3(0,0,0), Quaternion.identity);
}
}
当我在编辑器中运行时,除非我在编辑器中查看数据库,否则不会出现错误,这时我会出现以下错误:
错误:标志'--input_image_path'缺少参数;标志说明:待求值图像的路径。目前只支持*.png、*.jpg和*.jpeg。
当我调试并查看AugmentEdimageDatabase的内存时。一切似乎都在那里,运转良好。而且,一旦我为android构建,就不会出现任何错误,而且当我在命令行中使用“ADB logcat-s unity”时,也不会抛出异常。
这可能是新ARCore特性的限制吗?AugmentedImageDatabases不允许在Android上进行动态创建吗?如果是这样,为什么会有创建它们的内置函数?
我知道这些功能是全新的,没有太多的文档,所以任何帮助都将非常感谢。
我在Arcore的Github页面上发布了一个问题,得到的回复是您所说的功能尚未在Unity API中公开:https://Github.com/google-ar/arcore-unity-sdk/issues/256
问题内容: 你好,我有这个设置 我需要为每个按钮获取以下内容 在Java中是否可以为我声明的每个按钮动态创建此按钮?因为当我有5个按钮时,我不需要3x5 = 15行代码,而是只有几行具有动态创建的按钮。 问题答案: 编写一个小循环并将您的按钮存储在数组中:
你好,我已经准备好了 我需要为每个按钮获得以下内容 在Java中,是否可以为我声明的每个按钮动态创建它?因为当我有5个按钮时,我不希望3x5=15行代码,而只希望有几行动态创建的按钮。
问题内容: 给定一个类名,我想动态创建一个Groovy类,向其添加属性和方法。我使用创建新类 对于我使用的方法 其中it.key是字符串(方法名),it.value是闭包。这很方便,因为我可以指定方法参数类型并进行类型检查。但是,如果不给它赋值,就无法指定动态创建的属性类型。我可以通过显式定义属性的getter和setter来解决此问题。这可行,但是metaClass.name = value或m
问题内容: 我在mysql上创建数据库。首先创建主体表,每个表平均有30列。日志表的标准是引用表的pk加上每列*2。像这样: 参考表: 日志表: 现在,我想要创建一个过程,在该过程中,我将表名作为参数传递,并生成表日志查询并执行它。 做这个的最好方式是什么? 问题答案: 为了使一个字符串代表一个表(或数据库)名称,您将需要用变量连接查询字符串,并在存储过程中准备/执行一条语句。这是一个基本示例。
问题内容: 我陷入GWT CellTable的问题。我需要动态创建单元表,而我没有实体(Bean)类。我已经看到了所有celltable的示例,并且在没有实体类的情况下进行了大量搜索。 我需要根据数据库中存储的一些元数据动态填充表。我可以创建表结构 考虑有两个类,一个是GRID,另一个是COLUMN,用于元数据和列定义。GRID将具有COLUMNS的列表作为列定义 现在,我需要从数据库中获取网格并
问题内容: 我需要动态创建一个类。为了更详细,我需要动态创建Django类的子类。 通过“动态”,我打算基于用户提供的配置创建一个类。 例如 我想要一个命名为该类的子类的类。 该类应具有所选属性的列表。 ....在这种情况下 有什么有用的提示吗?:) 问题答案: 您可以通过调用内置函数并传递适当的参数来动态创建类,例如: 它适用于新型类。我不确定这是否也适用于老式类。