当前位置: 首页 > wzjs >正文

网站数据搬家建设p2p网站

网站数据搬家,建设p2p网站,it外包服务商10强,小程序开发小程序制作BMesh 简介 BMesh 是 Blender 中用于表示和操作网格数据的底层数据结构系统,它是传统网格数据结构的高级替代品。 主要特点 灵活拓扑支持: 支持 n-gons(任意边数的多边形),而不仅仅是三角形和四边形允许边和顶点不属…

BMesh 简介

BMesh 是 Blender 中用于表示和操作网格数据的底层数据结构系统,它是传统网格数据结构的高级替代品。

主要特点

  1. 灵活拓扑支持

    • 支持 n-gons(任意边数的多边形),而不仅仅是三角形和四边形
    • 允许边和顶点不属于任何面
  2. 高效操作

    • 设计用于支持复杂的网格编辑操作
    • 提供丰富的 API 用于网格操作
  3. 数据结构

    • 基于半边数据结构(Half-Edge)
    • 包含三种基本元素:顶点(verts)、边(edges)和面(faces)

使用场景

BMesh 主要用于:

  • 编写 Blender 的网格编辑工具
  • 开发复杂的网格处理插件
  • 执行高级网格操作如布尔运算、细分等

基本元素

  1. BMVert:表示顶点
  2. BMEdge:表示边
  3. BMFace:表示面

BMesh 提供了比传统网格更强大的功能,特别是在处理复杂拓扑和非流形几何时表现优异。

访问方式

在 Python API 中,可以通过 bmesh 模块访问 BMesh 功能,通常用于编写网格处理脚本和插件。

创建一个bmesh后,可以贴图不同的材质吗?

是的,在一个 bmesh 对象中创建的多个面完全可以赋予不同的材质,只要你后续把 bmesh 写入 mesh,并对 mesh.polygons[i].material_index 设置正确即可。


✅ 关键点总结

操作目标是否可行方法
一个对象中多个面贴不同材质✅ 支持设置 face.material_index
bmesh 创建时直接贴材质❌ 不直接支持需要在 bmesh.to_mesh() 之后,通过 mesh.polygons[...] 设置
一个 Object 支持多个材质✅ 支持obj.data.materials.append(...) 添加多个材质槽

✅ 正确做法:一个 Object、多个材质、不同面贴图

1. 创建 bmesh 添加多个面

import bpy
import bmesh# 新建 mesh 和 object
mesh = bpy.data.meshes.new("MyMesh")
obj = bpy.data.objects.new("MyObject", mesh)
bpy.context.collection.objects.link(obj)bm = bmesh.new()# 顶点
v1 = bm.verts.new((0, 0, 0))
v2 = bm.verts.new((2, 0, 0))
v3 = bm.verts.new((2, 2, 0))
v4 = bm.verts.new((0, 2, 0))v5 = bm.verts.new((3, 0, 0))
v6 = bm.verts.new((5, 0, 0))
v7 = bm.verts.new((5, 2, 0))
v8 = bm.verts.new((3, 2, 0))# 两个面
face1 = bm.faces.new([v1, v2, v3, v4])
face2 = bm.faces.new([v5, v6, v7, v8])

2. 写入 mesh

bm.to_mesh(mesh)
bm.free()
mesh.update()

3. 添加两个材质到 obj

mat1 = bpy.data.materials.new("Red")
mat2 = bpy.data.materials.new("Green")mat1.diffuse_color = (1, 0, 0, 1)  # RGBA
mat2.diffuse_color = (0, 1, 0, 1)obj.data.materials.append(mat1)
obj.data.materials.append(mat2)

4. 给 mesh.polygons[i] 设置材质索引

# 给第一个面用第一个材质
obj.data.polygons[0].material_index = 0# 给第二个面用第二个材质
obj.data.polygons[1].material_index = 1

结果

在这里插入图片描述


🔁 所以流程是:

  1. bmesh 中构建所有顶点和面;
  2. bm.to_mesh(mesh) 把面数据写到 mesh.polygons
  3. 添加所有材质到 obj.data.materials
  4. 遍历 mesh.polygons[i],设置对应的 material_index = X

❗注意事项

  • 必须保证 obj.data.materials 中的材质数量 >= 所有 material_index 的最大值 + 1;
  • material_index 是一个整数索引(指向材质槽的位置),不是材质本身;
  • 所有 material_index 设置必须在 bm.to_mesh() 后进行,因为 bmesh 阶段没有 material_index 概念。

撰写该博文的原因是有一个需要用脚本来控制一个立方体不同面的贴图,其实现的基本原理和上述代码是一致的。


文章转载自:

http://8bPghlGk.rkmhp.cn
http://24bAhEob.rkmhp.cn
http://igdeNNlw.rkmhp.cn
http://99Bo6Pu5.rkmhp.cn
http://qEolbavR.rkmhp.cn
http://lEjxKwkm.rkmhp.cn
http://N8l0wMon.rkmhp.cn
http://f8pEWauM.rkmhp.cn
http://0F3FUubs.rkmhp.cn
http://tPwV2RTq.rkmhp.cn
http://fBApqOdU.rkmhp.cn
http://rbEtzzFi.rkmhp.cn
http://TnJX2wee.rkmhp.cn
http://vS3rSbFp.rkmhp.cn
http://qfOTOEo4.rkmhp.cn
http://eKUm71K2.rkmhp.cn
http://DU6ygZhr.rkmhp.cn
http://N0AICxHz.rkmhp.cn
http://XjTEgafF.rkmhp.cn
http://N7MDAEWP.rkmhp.cn
http://7wV3ZL7x.rkmhp.cn
http://75gpA77S.rkmhp.cn
http://jiCVFeaC.rkmhp.cn
http://ZjMtQYZ9.rkmhp.cn
http://eozPFWyc.rkmhp.cn
http://mvAXIrkK.rkmhp.cn
http://iqk5HLAC.rkmhp.cn
http://TZuihd2w.rkmhp.cn
http://uOCkRyJa.rkmhp.cn
http://UjtZTK4F.rkmhp.cn
http://www.dtcms.com/wzjs/770547.html

相关文章:

  • 永兴县网站建设公司郑州代做网站
  • 平面设计培训费用一般是多少优化大师官网登录入口
  • 郑州企业网站建设公司wordpress支持多个站点地址
  • 家政保洁服务网站模板网站主体注销
  • wordpress 默认主题站点网络营销人员招聘信息
  • 发帖网站百度收率高的网店运营推广实训系统
  • 免费的cms视频网站网页设计素材表格
  • 怎样做外贸网站建设纯图片网站
  • 杰奇网站地图怎么做360网站兼容模式
  • 公司网站建设方案建议企业品牌网站建设类型
  • 如何制作纯静态网站aspx 网站开发工具
  • 社区网站 租用服务器还是只需要购买空间怎么才能创建个人网站
  • 女生千万别学市场营销湖南竞价优化哪家好
  • 更改网站模板太原谁想做网站
  • 手机ps软件如何做ppt下载网站网站建设视频百度云
  • 哪个网站可以免费做招牌北京展台设计制作
  • 常州哪些网站公司做的好处家如何网站
  • 自己创建个人免费网站王野天津音乐广播电台
  • 自学网站建设要看什么书海外网站推广
  • 顺德公司做网站平面设计的网站有哪些网站
  • 网站更换空间对优化的影响在网站和网页的区别
  • 盐城哪家专业做网站装饰logo设计图片
  • wordpress 装饰公司seo投放是什么意思
  • 做网站是先做后台还是前端建设厅网站用户名和密码
  • 快速网站排名提升工具网络维护可以自学吗
  • 网站配色绿色微商商城系统开发
  • 加强学校网站建设的要求谷歌浏览器对做网站有什么好处
  • 做网站用什么版本系统wordpress微信缩略图不显示
  • 青色网站欣赏wordpress post_content
  • 台州手机网站开发wordpress搭建商城网站