3

我正在使用three.js 来建造房子,我有墙壁和墙壁的纹理。

墙壁基本上是 CubeGeometry。

我采用了独特的比例:1cm = 1px

纹理可以是砖块或任何其他建筑材料,但纹理文件始终为 512x512,其中包含细节。例如:纹理文件中的一块砖将是每 4px 10px。

我需要保持这个比例来保持场景的真实性。

var texture = THREE.ImageUtils.loadTexture("images/wall.jpg");

texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;

texture.repeat = new THREE.Vector2(0.2 , 0.2);

var wall = new THREE.Mesh(new THREE.CubeGeometry(100, 100, 10), new THREE.MeshBasicMaterial({ map: texture }));

这很好用,因为情况很简单;),为每面墙(可以有任何尺寸)制作一个比例也很简单

但实际上我有很多其他几何图形(程序生成等等),是否有任何机会像:“THREE.KeepMyTextureSizeAndRepeat”包装?还是我需要为每个自定义几何图形制作比率?

如果您对这个用例有任何建议,我会很高兴:)

非常感谢

编辑:最终目标是在 2D 画布中做类似“模式”的事情

var pattern = context.createPattern(imageObj, repeatOption);
context.fillStyle = pattern;
context.fill();

当你做这样的事情时,例如在一个矩形上,模式将被重复保持纵横比(例如http://www.html5canvastutorials.com/tutorials/html5-canvas-patterns-tutorial/

4

1 回答 1

0

您必须自己计算每个比率,因为纹理对像素一无所知。它只知道紫外线。

于 2013-01-04T08:56:11.520 回答