【问题标题】:Three.JS and WebGL texture automatic resize三.JS和WebGL纹理自动resize
【发布时间】:2019-04-11 15:03:26
【问题描述】:

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

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

亚历克斯

【问题讨论】:

    标签: javascript three.js webgl 360-panorama


    【解决方案1】:

    你不能超过这个限制。这就是限制背后的全部想法。您可以访问http://webglreport.com/ 以查看您的目标设备上的最大功能(在纹理 > 最大纹理大小下),然后削减您的纹理以很好地适应这些尺寸。

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

    您可以做的另一件事是,您可以使用 6 个较小的图像并将其映射到 Cube 或 CubeTexture,而不是使用映射到球体上的一个巨大的 equirectangular 图像。您可以使用任何立方体贴图转换器工具执行此操作,例如:HDRI to CubeMap converter。这样你就可以加载 6 张图片,然后让 Three.js 负责;如果您的设备可以处理它,它会显示更高的分辨率,但如果不能,它会根据需要缩小纹理。

    【讨论】:

    • 如果我使用 CubeMap,您认为可以将每 6 个纹理面分成 4 个较小的图像(整个立方体 24 个图块)以允许更高分辨率的图像吗?如果是,我需要在 ThreeJS 中使用什么?
    【解决方案2】:

    看看这个: http://glayve.com/relief/verdon.html 最好是分开,你可以多玩个人脸。

    您只需根据 24 种平面图尺寸设置个人面孔的 set.position(x,y,z) 和 set.rotation(x,y,z)。

    【讨论】:

    • 非常感谢,想象一个例子让我想到用 ThreeJS 创建一些东西!
    猜你喜欢
    • 2016-05-01
    • 2014-08-02
    • 1970-01-01
    • 2013-11-28
    • 2015-06-07
    • 2017-02-12
    • 2012-11-20
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多