首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Three.js中的固定纹理大小

Three.js中的固定纹理大小
EN

Stack Overflow用户
提问于 2013-07-08 15:24:07
回答 1查看 3.1K关注 0票数 4

我正在构建一个相当复杂的3D环境在Three.js (FPS-a-类)。为此,我想以一种物体的方式来构造纹理和材料的装载。例如,materials.wood.brownplank是一种具有特定纹理和其他属性的可重用材料。下面是一个简化的可视化过程,其中模型使用材料和材料使用纹理。

代码语言:javascript
复制
loadTextures();
loadMaterials();
loadModels();

//start doing stuff in the scene

我想把这种材料用在不同大小的物体上。然而,在Three.js中你不能(AFAIK)设置一个特定的纹理比例。您必须设置“重复”,以便将其缩放到您的对象。但我不想对我使用的每一个物体的每一个平面都这么做。

现在的情况如下

正如你所看到的,纹理在尺寸上并不均匀。

有什么简单的方法可以做到这一点吗?因此,每次克隆纹理和/或材料,并根据几何图形设置重复的内容都是行不通的:)

我希望有人能帮我。

结论:

没有真正简单的方法可以做到这一点。最后,我更改了加载方法,在这里,像materials.wood.brownplank这样的东西现在被实例化了,例如函数中的getMaterial('wood', 'brownplank')

EN

回答 1

Stack Overflow用户

发布于 2013-07-09 15:01:12

你应该能够做到这一点,修改你的几何紫外线坐标,根据“真实”尺寸的每一张脸。

在Three.js中,UV坐标是相对于脸和纹理的(如在0.0 =一个边缘,1.0 =其他边缘),无论纹理或脸的实际大小。但是,通过修改几何中的UVs (根据面部的物理尺寸乘以它们的某些因素),您可以在不同的尺寸(和方向)中使用相同的材料和纹理。

你只需要弄清楚UV,几何比例和你想要的工作单位之间的映射(例如。毫米或米)。对不起,我没有,或知道一个现成的算法来做,但这是你可能需要采取的方法。应该可以做一些实验和google-fu。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17530350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档