【问题标题】:THREE.js - Texture mapping requirementsTHREE.js - 纹理映射要求
【发布时间】:2016-08-02 15:10:02
【问题描述】:

简介

我有一个 Web 服务,它返回一个包含图像路径的 json 结果。 这些图片不一定是方形图片(例如 200px x 250px)。

问题

纹理映射似乎不支持非方形图像。为了使纹理映射工作,我必须手动下载图像,调整它的大小,然后使用该图像进行纹理映射(它可以工作)。

问题

A) 有没有办法让 three.js/webgl 使用非方形图像进行纹理映射?

B) 有没有办法以编程方式加载和调整图像大小,然后加载它以进行纹理映射?

谢谢大家。

可能的解决方案?

我找到了可行的选择。让我知道你们对此的看法。

基本上,我将加载远程图像并绘制到一个正方形大小的 Canvas 元素。然后我可以从画布 (.getImageData) 中获取图像并将其保存到我的 Web 服务器的图像文件夹中(如果不能这样做,那么我可以将图像保留在画布上)。最后,加载图像进行纹理映射。

我知道这是相当模糊和简单化的。但是,嘿,越简单越好,对吧? 这行得通吗?

【问题讨论】:

  • three.js 确实支持无特殊处理的非方形纹理:jsfiddle.net/greggman/MZpx8
  • @gaitat。我不明白。此示例使用一个正方形的 .jpg。
  • 不,它不是正方形;它的大小是 1280x1202

标签: three.js texture-mapping


【解决方案1】:

不要以不合规的方式调整它的大小,只需取一个正方形部分(例如,如果图像是 250 X 220,只需切掉一个 220 X 220 的子图像)。纹理分类算法很可能取决于您的 skew-by-resize 可能会短路的角度和相关特征。

【讨论】:

  • 好吧,就我而言,这些图像是平面图。所以我不能拍摄子图像。相反,我“向上”调整大小。 “非正规方式”是什么意思?而且,这个“纹理分类算法”是什么?
  • 顺便说一句,我不会通过调整大小来调整大小,无论这意味着什么。我只是调整画布的大小。我不做任何倾斜、拉伸或缩放。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
相关资源
最近更新 更多