我正在构建一个相当复杂的3D环境在Three.js (FPS-a-类)。为此,我想以一种物体的方式来构造纹理和材料的装载。例如,materials.wood.brownplank是一种具有特定纹理和其他属性的可重用材料。下面是一个简化的可视化过程,其中模型使用材料和材料使用纹理。
loadTextures();
loadMaterials();
loadModels();
//start doing stuff in the scene我想把这种材料用在不同大小的物体上。然而,在Three.js中你不能(AFAIK)设置一个特定的纹理比例。您必须设置“重复”,以便将其缩放到您的对象。但我不想对我使用的每一个物体的每一个平面都这么做。
现在的情况如下
正如你所看到的,纹理在尺寸上并不均匀。
有什么简单的方法可以做到这一点吗?因此,每次克隆纹理和/或材料,并根据几何图形设置重复的内容都是行不通的:)
我希望有人能帮我。
结论:
没有真正简单的方法可以做到这一点。最后,我更改了加载方法,在这里,像materials.wood.brownplank这样的东西现在被实例化了,例如函数中的getMaterial('wood', 'brownplank')。
发布于 2013-07-09 15:01:12
你应该能够做到这一点,修改你的几何紫外线坐标,根据“真实”尺寸的每一张脸。
在Three.js中,UV坐标是相对于脸和纹理的(如在0.0 =一个边缘,1.0 =其他边缘),无论纹理或脸的实际大小。但是,通过修改几何中的UVs (根据面部的物理尺寸乘以它们的某些因素),您可以在不同的尺寸(和方向)中使用相同的材料和纹理。
你只需要弄清楚UV,几何比例和你想要的工作单位之间的映射(例如。毫米或米)。对不起,我没有,或知道一个现成的算法来做,但这是你可能需要采取的方法。应该可以做一些实验和google-fu。
https://stackoverflow.com/questions/17530350
复制相似问题