当前位置: 首页 > 知识库问答 >
问题:

部分等矩形全景图三。js

孙朗
2023-03-14

我有完整的等矩形图像,可以很好地处理三个。js:

scene = new THREE.Scene();
geometry = new THREE.SphereBufferGeometry( 500, 60, 40 );
geometry.scale(-1, 1, 1);
material = new THREE.MeshBasicMaterial({ map: texture });
mesh = new THREE.Mesh(geometry, material);
mesh.rotation.y = Math.PI;
scene.add( mesh );

但我的图像实际上只包含180x180度(球体的一半),因此我尝试在不拉伸整个球体的情况下,在球形网格上部分应用方形纹理。我想这和纹理有关。抵消xyz参数,但我没有成功。虽然我可以继续填充图像以符合2x1等矩形标准,但我宁愿将此步骤从处理工作流中删除。

在下面,你会看到完整的等矩形图像和我正在努力工作的正方形图像。有人对如何做到这一点有任何线索吗?谢谢

共有2个答案

司徒茂实
2023-03-14

错误不在源代码中,而是在纹理图像中:它们都是错误的。

像这样的180度鱼眼:

重新投影到等矩形将如下所示:

你的纹理看起来像一个360x180等矩形和270°鱼眼的混合,看起来像这样(有错误的标签/数字,因为我使用相同的180 FOV鱼眼来创建它):

佴飞驰
2023-03-14

SphereBufferGeometry具有更多可选参数:

SphereBufferGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength)

radius — sphere radius. Default is 50.
widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8.
heightSegments — number of vertical segments. Minimum value is 2, and the default is 6.
phiStart — specify horizontal starting angle. Default is 0.
phiLength — specify horizontal sweep angle size. Default is Math.PI * 2.
thetaStart — specify vertical starting angle. Default is 0.
thetaLength — specify vertical sweep angle size. Default is Math.PI.

您可以使用phiStart、phiLength、Start和Talength来定义局部球体

所以要做一个半球体,你可以尝试这样的东西:

geometry = new THREE.SphereBufferGeometry( 500, 60, 40, 0, Math.PI, 0, Math.PI );

参考http://threejs.org/docs/#Reference/Extras.Geometries/SphereBufferGeometry

 类似资料:
  • 我想将立方体贴图[图1]转换为等矩形全景图[图2]。 从球形到立方体是可能的(通过以下步骤:将2:1等矩形全景图转换为立方体贴图),但在如何反转它上迷失了方向。 使用Unity将图2渲染成一个球体。

  • 我目前正在为一个网站开发一个简单的3D全景查看器。出于移动性能的原因,我使用了CSS3渲染器。这需要一个立方体贴图,分成6个单独的图像。 我正在用谷歌Photosphere应用程序或类似的创建2:1等矩形全景的应用程序在iPhone上录制图像。然后,我使用此网站调整这些大小并将其转换为立方体贴图:http://gonchar.me/panorama/(闪光) 更可取的是,我想自己做转换,如果可能的

  • 我正在寻找一个工具或库,将允许我生成一个等矩形全景图像预览图像。我正在使用pannellum图书馆[https://pannellum.org]展示全景,效果很好。然而,我想添加的是一种生成轻量级预览图像以在初始页面加载时显示的方法。我想有一个小尺寸的预览图像,不看扭曲。是否存在这样的工具/库/脚本? 非常感谢。 戴夫

  • 我计划为一个游戏的标记(PIN)建立一个在线地图,但我无法设置标记的正确纬度。 原始地图是一个2048*2048px的正方形 然后我得到了标记(成千上万) 地图坐标由0到100之间的x,y符号设置。0,0是地图的左上角,100,100是地图的右下角。x=50,y=50表示纬度=0°,lng=0°(图片中心)。 要将我的符号转换为经度,我使用这个JS函数,它工作得很好: 但对于纬度,它不起作用,因为

  • 我正在尝试使用raycaster使对象变得可点击。我已经看到了无数这样的例子,并且我已经多次尝试了这段代码,但都没有成功。我看到的例子和我遇到的其他例子之间的唯一区别是我在一个球体内。 我通过创建一些变量开始我的代码(有些变量可能不是使用过去例子剩下的)。 我继续设置init()函数,在其中设置摄影机并创建球体。 仍然在init()函数中,我创建了一个立方体几何体(这是我希望可以单击的)。 仍然在

  • 我正在用Java和JAVAFX开发一个国际象棋游戏。我的棋盘是一个JAVAFX组,包含一个正方形数组。我的正方形继承自JAVAFX rectangle类。我想在这些方块里面画一个图像(棋子的图像),但是我似乎找不到方法。当我使用setfill来绘制图案时,正方形的颜色消失了,这不是我想要的,我希望图像是透明的,并绘制在每个正方形的顶部。有什么想法吗?