gpt4 book ai didi

ios - 将整个 SceneKit 场景转换为适合纹理的图像

转载 作者:可可西里 更新时间:2023-11-01 01:23:03 25 4
gpt4 key购买 nike

我使用 CoreMotion、AV 和 SceneKit 编写了一个小应用程序来制作简单的全景图。当你拍照时,它会将照片映射到 SK 矩形上,并将其放置在相机面向的任何 CM 方向的前面。这工作正常,但是......

我希望用户能够单击“完成”按钮并将整个场景变成单个图像。然后我可以将其映射到一个球体上以供将来查看,而不是重新创建整个对象集。我不需要缝合或类似的东西,我希望单个图像保持独立的矩形,就像粘在球内部的照片一样。

我知道 snapshot 并尝试将其与非常宽的 FOV 一起使用,但这会导致鱼眼 View 无法正确映射回去(除非我做错了)。我假设我需要应用某种转换?或者也许有更简单的方法来做到这一点?

最佳答案

关键是“粘在球内部的照片”。你有一堆长方形,悬浮在太空中。将其转换为适合投影到球体上的图像需要一些工作。您必须将每个矩形投影到球体上,并相应地扭曲图像。

如果您只想重建场景以供将来在 SceneKit 中查看,请使用 SCNScene 的内置序列化,write(to: options: delegate: progress Handler: )SCNScene(命名:).

要计算图像到球体的映射,您需要进行一些坐标转换。对于每个图像,将角坐标转换为球坐标,原点在您的视点。将每个角坐标的半径更改为球体的半径,现在您在球体上有了投影角的位置。

很容易对输入矩形图像中的每个像素重复此过程。但这会在球形输出图像中留下空像素。所以你会反过来工作。对于球形输出图像中的每个像素(在 4 个角点内),计算从 POV 到该点的射线(在球坐标中简单地完成)。将该射线转换回笛卡尔坐标,计算其与矩形图像平面的交点,并在输入图像的该点采样。您需要进行一些像素加权,因为您的输出图像和输入图像将具有不同的像素尺寸。

关于ios - 将整个 SceneKit 场景转换为适合纹理的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42935245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com