纠正SCNCamera的“视野”

问题描述 投票:2回答:1

我试图找出ipad和iphone上场景工具包中视野的正确值。 60 degree的默认值对屏幕边缘的球体有不良影响。球体呈椭圆形。 34 degree的值使得天空盒变得像素化。 iPad和iPhone的正确值是多少?

_cameraNode = [SCNNode node];
_cameraNode.position = SCNVector3Make(0, 0, 500);

[scene.rootNode addChildNode:_cameraNode];

_cameraNode.camera = [SCNCamera camera];
_cameraNode.camera.automaticallyAdjustsZRange = YES;

#if TARGET_OS_IPHONE
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    _cameraNode.camera.yFov = 55;

} else #endif {
    _cameraNode.camera.xFov = 34;
}

scnView.pointOfView = _cameraNode;
ios camera scenekit scncamera
1个回答
5
投票

FOV不依赖于屏幕,而是取决于您希望用户看到场景的方式。

大多数3D程序的默认设置是36mm镜头,其视角大约为53°。使用鱼眼镜头,较低的值会放大,较高的值会缩小。没有神奇的数字,您必须考虑如何查看您的场景,然后解决出现的问题。

如果您的场景非常小,并且观看者很大(例如Sim City),那么低视野将看起来最好。

如果您的场景非常大,而且观众很小(大多数游戏都是从第一人称视角播放的话),那么高视野会让世界感觉很大。

尝试找到哪一个使您的场景看起来正确的比例,然后解决出现的问题:

如果您选择低视野,则需要更高分辨率的Skybox。没有办法解决它,因为它与FOV直接相关。

如果选择更高的值,任何高于50°的值都会开始失真。由于屏幕较宽,这在iPhone上会更加明显。您可以使用着色器来改善失真。有几种方法可以进行镜头校正,尤其是桶形失真。

这里有一些有趣的公式:http://paulbourke.net/miscellaneous/lenscorrection/

© www.soinside.com 2019 - 2024. All rights reserved.