Xamarin ARcore改变3D对象的位置

时间:2018-04-11 11:15:39

标签: android xamarin augmented-reality arcore

我正在尝试使用ARcore实施Xamarin,并希望在特定3Dgeolocation)中设置like in pokemongo个对象。我试图浏览一下我在这个论坛中找到的示例:https://blog.xamarin.com/augmented-reality-xamarin-android-arcore/但似乎我无法更改3d对象的位置,而是根据点按gesture进行设置在plane

有没有办法放置物体并跟踪它?我确实设法用ARkit执行此操作,但直到现在ARcore Android都没有成功。

任何想法都会有所帮助。

1 个答案:

答案 0 :(得分:1)

看起来ARCore的Xamarin包装器只是包装了OpenGL。因此,绘制对象需要设置多个矩阵(模型,视图和投影)矩阵:

objectRenderer.UpdateModelMatrix(anchorMatrix, scaleFactor);
objectRenderer.Draw(viewMatrix, projectionMatrix, lightIntensity);

如果您只是在foreach (var planeAttachment in planeAttachments) { 循环中删除此内容,则可以将anchorMatrix(又名modelMatrix)设置为固定/硬编码转换,然后修复本身相对于相机。

这是关于View矩阵的一篇不错的文章:https://www.3dgep.com/understanding-the-view-matrix/#The_View_Matrix

- 开始无耻的插件 -

但是,如果您愿意尝试新平台,我的团队已经构建了一个用于AR / VR开发的跨平台React-Native库(Viro React):https://viromedia.com/viroreact/

如果您对iOS上的SceneKit更熟悉,我们在Android w / AR / VR支持(ViroCore)上构建了一个类似的解决方案:https://viromedia.com/virocore/

任何一种解决方案都可以让您跳过OpenGL的复杂性,只需相对轻松地定位您的对象/模型。

即。

将你的模型放在你面前1米就像(在Viro React中)一样简单:

<Viro3dObject source={require("./res/model.obj")} position={[0,0,-1]} type="OBJ" />