当前位置: 首页 > 知识库问答 >
问题:

如何纹理一个三。使用ShapeGeometry创建js网格

孟和玉
2023-03-14

我正在尝试将位图纹理材质放置在由三个贴图创建的网格上。js形状测量学。

几何体是一个简单的八角形(我最终会添加曲线,使其成为一个圆角矩形)。

网格被创建并显示得很好,除了位图纹理显示为四个巨大的正方形,这似乎是加载图像的超复制低分辨率版本。

(加载的图像实际上是法国国旗的512x512照片)

如何获得纹理以使用加载图像的完整分辨率?(顺便说一句,将此纹理作为材质应用于由3.PlaneGeometry组成的网格时,效果良好。)

这是我的代码...

var shape = new THREE.Shape();
shape.moveTo(-width/2 + radius, height/2);
shape.lineTo(width/2 - radius, height/2);
shape.lineTo(width/2, height/2 - radius);
shape.lineTo(width/2, -height/2 + radius);
shape.lineTo(width/2 - radius, -height/2);
shape.lineTo(-width/2 + radius, -height/2);
shape.lineTo(-width/2, -height/2 + radius);
shape.lineTo(-width/2, height/2 - radius);
shape.lineTo(-width/2 + radius, height/2);
var myGeometry = new THREE.ShapeGeometry( shape );

var myMesh = new THREE.Mesh(myGeometry, myMaterial);

谢谢!!!

共有1个答案

楚志强
2023-03-14

挤压几何。WorldUVGenerator是默认的UV生成器为THREE. ShapeGeometry

此默认UV生成器将UV设置为等于顶点坐标。

您需要将您自己的UV生成器传递到THREE. ShapeGeometry。请参阅源代码了解其工作原理。

一个变通方法是将模型参数放大一个因子,比如10,然后通过设置mesh.scale.set(0.1, 0.1, 1 )进行补偿。

第三个选项是调整形状几何体,使其顶点覆盖[0,1]范围-然后应用网格。缩放,如果需要。

三js r.61

 类似资料:
  • 我能够使用javascript和three.js库创建一个球体。然而,我有一个图像,我想覆盖在球体的顶部,每当我这样做,球体变成一个黑色的球体,没有图像投射在上面。下面是我如何实现它:var渲染器=new THREE. WebGL渲染器();renderer.set大小(window.inner宽度,window.inner高度);document.body.append(renderer.dom

  • 本文向大家介绍使用js如何创建一个private方法?相关面试题,主要包含被问及使用js如何创建一个private方法?时的应答技巧和注意事项,需要的朋友参考一下 可以利用闭包实现这一点: 另外一提,根据tc39的私有方法提案目前已进入Stage 3阶段,目测很快就会在个大浏览器和node等其他js环境实装,其语法如下:

  • 从已经加载的纹理贴图集中创建精灵 通常Pixi给你三种方式从已经加载的纹理贴图集中创建精灵: 使用 TextureCache: let texture = TextureCache["frameId.png"], sprite = new Sprite(texture); 如果你是使用的 loader来加载纹理贴图集, 使用loader的 resources: let sprite = new S

  • 通过纹理贴图加载器TextureLoader的load()方法加载一张图片可以返回一个纹理对象Texture,纹理对象Texture可以作为模型材质颜色贴图.map属性的值。 材质的颜色贴图属性.map设置后,模型会从纹理贴图上采集像素值,这时候一般来说不需要再设置材质颜色.color。.map贴图之所以称之为颜色贴图就是因为网格模型会获得颜色贴图的颜色值RGB。 // 纹理贴图映射到一个矩形平面

  • 编辑:我已经决定将纹理应用于球体的一部分是正确的方法,但不知道如何实现它。我本打算提出一个新问题,但我觉得最好让后人来解决这个问题,这样其他人就可以得到帮助。 在这里看到原始问题... 我使用的纹理是使用画布元素创建的图像。将此纹理应用于整个球体很简单,但我尝试将此纹理仅应用于球体的一部分。 我已经能够通过增加画布的尺寸来实现这一点,用透明的空间接壤我的图像。然而,这也增加了纹理的大小,达到了不可