如何定义要应用到面的纹理区域(aface definition)

我有一个用 Three.JS 制作的立方体,我想在每个面上应用纹理的一部分。具体来说,我正在寻找一个采用 4 个参数的函数:x1,y1,x2,y2指定要应用于面部的纹理区域。例如,对于输入[1,0,15,16]

我有一个用 Three.JS 制作的立方体,我想在每个面上应用纹理的一部分。具体来说,我正在寻找一个采用 4 个参数的函数:x1y1x2y2指定要应用于面部的纹理区域。
例如,对于输入[1, 0, 15, 16]

Example of uv

如果我指定 [16,0,0,16] ',我的纹理是翻转。
我想我必须用 UV(因为是相对于纹理而不是立方体本身),但目前,我无法获得令人满意的结果。

我也希望每个面是的,所以如果我修改一个的纹理 UV,其他的纹理 UV 不会被修改(即使纹理是相同的)。

这里是我的立方体的最小版本(清理了我所有的测试和其他与我的问题无关的东西):https://jsfiddle.net/theogiraudet/djcnrte0/

谢谢你的回答!

1

纹理坐标从 0,0 到 1,1 从左下到右上。有关纹理映射的更详细说明,请访问the discover three.js website

在这里做了一个演示:
https://codepen.io/cdeep/pen/XWaXGYg?editors=0011

立方体有 6 个面,4 个顶点,每个 2 个坐标。uv 属性是一个大小为 48 的 BufferAttribute,可以更新它来控制每个顶点的纹理的相应部分。

geometry.attributes.uv.copyArray(<Array of size 48>);
geometry.attributes.uv.needsUpdate = true;

在 codepen 中,我重复数组以将相同的纹理应用于每个面。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(958)
如何在CSS中向上移动文本
上一篇
使用AppleScript在概念中打开页面(在Mac上)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(64条)