threejs ShapeGeometry 自定义贴图的uv坐标

问题描述:

由于一些原因,要绘制一个长方形,但是这个长方形并不是 PlaneGeometry,而是一个ShapeGeometry。但是同样的贴图,同样的形状,贴图贴在PlaneGeometry上时可以正常显示,但是贴在ShapeGeometry中却不可以正常显示。所以判断是贴图uv坐标问题。

问题排查:

PlaneGeometry默认顶点坐标和uv坐标对应关系如下,其中点1,2,3,4为geometry的vertex顺序

ShapeGeometry默认顶点坐标和uv坐标对应关系如下:

我们看到,uv是这样的,和他的顶点坐标是一致的,但是实际上,我们希望uv的对应关系和PlaneGeometry是一致的。所以我们手动修改uv和顶点的对应关系

解决办法:

javascript 复制代码
const uvs = [];

uvs.push(0, 1);
uvs.push(1, 1);
uvs.push(1, 0);
uvs.push(0, 0);

groud.geometry.setAttribute('uv', new THREE.Float32BufferAttribute(new Float32Array(uvs), 2));
groud.geometry.getAttribute('uv').needsUpdate = true;
相关推荐
爱看书的小沐2 天前
【小沐杂货铺】基于Three.js渲染三维无人机Drone(WebGL / vue / react )
javascript·vue.js·react.js·无人机·webgl·three.js·drone
小猫咪yi4 天前
1、绘制点
webgl
小猫咪yi7 天前
7、三角形旋转
webgl
CG_MAGIC7 天前
写实皮肤材质PBR渲染:核心流程与关键参数
3d·材质·贴图·渲云渲染·3d软件
宸迪8 天前
【python】使用uv管理项目包依赖
linux·python·uv
小猫咪yi8 天前
3、绘制线
webgl
小猫咪yi8 天前
6、drawElements绘制多个三角形
webgl
njsgcs8 天前
blender导出fbx没有贴图问题
blender·贴图
云上空10 天前
腾讯云使用对象存储托管并分享WebGL小游戏(unity3d)(需要域名)
unity·腾讯云·webgl·游戏开发·对象存储·网页托管
全栈王校长10 天前
WebGL三角形绘制:掌握缓冲区与基本图元
前端·webgl