Three.JS和WebGL纹理自动调整大小

时间:2019-04-10 21:03:29

标签: javascript three.js webgl 360-panorama

我需要一些帮助来解决问题:) 我使用Three.JS将非常高质量的矩形图像显示为一个球体(20000x10000像素)。质量对于我的Web应用程序非常重要,这里不考虑带宽。 我的问题是ThreeJS调整了图像的大小,因为超出了WebGL MaxTextureSize的限制。 有没有办法通过这个限制?也许通过将纹理切割成几个部分?哪个是最好的方法?

谢谢你,祝你有美好的一天!

亚历克斯

2 个答案:

答案 0 :(得分:1)

您无法通过此限制。这就是极限背后的整个想法。您可以做的是访问http://webglreport.com/,以了解目标设备上的最大功能(在“纹理”>“最大纹理大小”下),然后将纹理切碎以使其恰好适合这些尺寸。

例如,iPhone 6的限制为4096x4096,因此您需要并排平铺5个网格才能达到20480。这完全取决于设备的显卡限制,因此如何划分它会有所不同从一个用户到另一个用户。

您可以做的另一件事是,可以使用6个较小的图像并将其映射到多维数据集或CubeTexture中,而不是使用一个映射到球体上的巨大等角矩形图像。您可以使用任何立方体贴图转换器工具(例如HDRI to CubeMap converter)来执行此操作。这样,您可以加载6张图像,然后让Three.js承担责任;如果您的设备能够处理它,它将显示更高的分辨率,但如果不能,它将根据需要缩小纹理的比例。

答案 1 :(得分:0)

看看这个: http://glayve.com/relief/verdon.html 最好分开,您可以使用更多个人面孔玩游戏。

您只需要根据24个平面图的大小分别设置set.position(x,y,z)和set.rotation(x,y,z)。