3

我有一张我试图添加到 Screenview ARSCNView 会话的当前相机位置的图像。无论我做什么,它似乎都会将图像放在手机摄像头的当前位置后面,我必须将其移回才能看到它。我有以下代码:

var currentFrame = SceneView.Session.CurrentFrame;

if (currentFrame == null) return;

var threeVector = new SCNVector3(currentFrame.Camera.Transform.Column3.X + 0.005f, 
       currentFrame.Camera.Transform.Column3.Y - 0.02f, 
       currentFrame.Camera.Transform.Column3.Z - 0.05f);

var scaleFactor = imgToAdd.Size.Width / 0.05;
float width = float.Parse((imgToAdd.Size.Width / scaleFactor).ToString());
float height = float.Parse((imgToAdd.Size.Height / scaleFactor).ToString());

var box = new SCNPlane {
    Width = width,
    Height = height
};

var cubeNode = new SCNNode {
    Position = threeVector,
    Geometry = box
};
var mat = new SCNMaterial();
mat.Diffuse.Contents = imgToAdd;
mat.LocksAmbientWithDiffuse = true;
cubeNode.Geometry.Materials = new[] { mat };
SceneView.Scene.RootNode.AddChildNode(cubeNode);

只是尝试执行您现在在应用商店中看到的 ARKit 绘画应用程序的简单想法。因此,imgToAdd 是用户已经放在屏幕上的涂鸦的快照,并且在从涂鸦的视图创建图像后,该事件在 touchended 处触发。

关于我需要更改什么以使其与手机上相机的当前视图一致的任何想法?

4

0 回答 0