移花接木(28)- 投影模式代码

krpano的投影模式实际上就是改变view元素的各种属性和设置,从而达到小行星、鱼眼、建筑等各种视觉效果。

 

krpano的默认皮肤的右键菜单中提供了各个投影模式的切换(vtourskin.xml)。

代码

如果是自定义皮肤,可以参考下面的代码,首先是各个投影模式的action。

其中最后一个是默认皮肤没有的模式。

people_fisheye_full

点击代码窗口最右侧按钮,在新窗口打开后复制代码

上面代码段最后一个skin_view_ball为水晶球投影,满足stereographic=false 以及 fisheye=1.5

可设置 view.distortion 为大于1的数值,这样水晶球会变得更小。如

下面是对应的右键菜单代码。

点击代码窗口最右侧按钮,在新窗口打开后复制代码

 

  • Normal Projection(正常投影)
    • 正常/标准3D投影,也叫做直线投影或心射投影
    • 视场小于100度时接近人眼的视觉
    • 如果视场比较宽,在边缘拉伸扭曲会很严重
    • view.fisheye设为0才能获得该投影。

 

  • Fisheye Projection(鱼眼投影)
    • 鱼眼视场之下可以避免正常视场在宽视角下的问题
    • 边缘扭曲情况会表现好很多,但所有“直线”在鱼眼投影下都不会从全景中部穿过
    • krpano可以控制鱼眼和正常视场之间的鱼眼投影程度
    • view.fisheye为0时为非鱼眼投影,1时为完全鱼眼投影,0.35为默认值
    • view.fisheyefovlink为第二个控制鱼眼的参数,这个参数控制fov与fisheye的关系,0时则不会根据视场的变化来改变fisheye,如果你使用较大的值,这样在大视角时就会应用到fisheye,默认为0.5

 

  • Stereographic Fisheye Projection(球极平面鱼眼投影)
    • 更加极致的鱼眼投影,更大的视场
    • 可以实现小行星投影
    • 将view.stereographic设置为true,将fisheye设置为1,可实现小行星,也就是最极端的情况
    • 只有normal或者stereographic两种鱼眼类型
    • 也可以通过fisheye和fisheyefovlink来控制投影强度

 

  • Architectural Projection(建筑投影)
    • 取代 视角的上下旋转,而是发生视角的偏移。
    • 这种漫游近乎直上直下
    • 在直上直下漫游时垂直线始终竖直
    • 当然是不可能完全的直上直下进行浏览
    • 通过view.architectural来控制,同样是0和1之间进行设定,设定为1时实现该投影效果
    • 也可以通过architecturalonlymiddle使得该投影只出现在全景中央。

 

风景类型的不同视场比较(点击图片可看krpano全景效果)

 

landscape_normal

landscape_fisheye

landscape_stereographic

landscape_littleplanet

 

 

 

人像的比较(点击图片可看krpano全景效果)

正常视角

people_normal

 

0.45的fisheye(点击图片可看krpano全景效果)

people_fisheye

完全鱼眼(点击图片可看krpano全景效果)

people_fisheye_full

 

球极平面鱼眼(点击图片可看krpano全景效果)

people_stereographic

 

建筑投影的比较(点击图片可看krpano全景效果)

向上看

archi1_normal (1)

archi1_architectural

 

向下看

archi2_normal

archi2_architectural

 

正交投影模式