WEB 3D技术 three.js 通过分组顶点 给同一个物体设置多个材质

上文 WEB 3D技术 three.js 集合体 讲解三角形构建图形 顶点概念 顶点值重用 我们讲到 一个元素是由多个面组成的
那么 我们是不是可以一个物体用多个材质? 简单说 一个面用一种材质

我们还是在官网中搜索 geome 如下图选择
在这里插入图片描述
然后 找到 groups 顶点组 它能够将我们的顶点 划分成多个组
在这里插入图片描述
我们编写代码如下

//创建集合体
const geometry  = new THREE.BufferGeometry();
// 创建顶点数据
const vertices = new Float32Array([
    -1.0 ,-1.0 ,0.0,
    1.0 ,-1.0, 0.0,
    1.0 ,1.0 ,0.0,
    -1.0 ,1.0, 0.0
])
geometry.setAttribute("position", new THREE.BufferAttribute(vertices, 3));
const indices = new Uint16Array([0 ,1 ,2, 0, 3, 2]);
geometry.addGroup(0, 3, 0);
geometry.addGroup(3, 3, 1);
const material = new THREE.MeshBasicMaterial({
   
    color: 0x08ffee,
    wireframe: false,
    side: THREE.DoubleSide
})
const material1 = new THREE.MeshBasicMaterial({
   
    color: 0x08ffe,
    wireframe: false,
    side: THREE.DoubleSide
})
geometry.setIndex(new THREE.BufferAttribute(indices, 1));
const cube = new THREE.Mesh(geometry, [material,material1]);
scene.add(cube)

首先 我们创建了两个组 addGroup 函数用于创建顶点分组 第一个组 设置 从第0个顶点开始 取 3个 就是 (0 1 2)下标顶点 然后 采用 第0个下标的材质
第二个组 从第3个下标顶点开始 取3个下标 用第一个下标的材质

然后 我们创建了两个材质 material1 和 material
THREE.Mesh第二个参数代表材质 我们传了一个数组
运行结果如下
在这里插入图片描述
这样 我们 012 345 下标顶点 分成了两个组 用了不同的材质

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-26 09:16:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-26 09:16:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-26 09:16:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-26 09:16:04       18 阅读

热门阅读

  1. 生成式对抗网络:GAN-Generative Adversarial Nets

    2023-12-26 09:16:04       36 阅读
  2. 查看docker映射数据卷

    2023-12-26 09:16:04       34 阅读
  3. 【头歌系统Python实验】Python面向对象之对象成员

    2023-12-26 09:16:04       34 阅读
  4. [hive] sql中distinct的用法和注意事项

    2023-12-26 09:16:04       46 阅读