本文共 1449 字,大约阅读时间需要 4 分钟。
Blender Python UV 学习
1. bmesh面转换
bm = bmesh.from_edit_mesh(bpy.context.edit_object.data)bm.faces.ensure_lookup_table()
2. 面选择
# Index of face to textureface_ind = 0bpy.ops.mesh.select_all(action='DESELECT')bm.faces[face_ind].select = True
3. uv展开
# Unwrap to instantiate uv layer (对选择表面, 展开uv层)bpy.ops.uv.unwrap()
4. 得到uv BMLayerItem
# Grab uv layeruv_layer = bm.loops.layers.uv.active
bm.loops <bmesh.types.BMLoopSeq>
This meshes loops (read-only). Note: Loops must be accessed via faces, this is only exposed for layer access.
bm.loops.layers <bmesh.types.BMLayerAccessLoop>
custom-data layers (read-only).
bm.loops.layers.uv <bmesh.types.BMLayerCollection>
Accessor for BMLoopUV UV (as a 2D Vector).
bm.loops.layers.uv.active <bmesh.types.BMLayerItem>
The active layer of this type (read-only).
bmesh.types.BMLayerItem
Exposes a single custom data layer, their main purpose is for use as item accessors to custom-data when used with vert/edge/face/loop data.
5. 开始uv映射
# Begin mapping...loop_data = bm.faces[face_ind].loops
bm.faces <bmesh.types.BMFaceSeq>
This meshes face sequence (read-only).
bm.faces[face_ind] <bmesh.types.BMFace>
bm.faces[face_ind].loops <bmesh.types.BMElemSeq of BMLoop>
bmesh.types.BMLoop
This is normally accessed from BMFace.loops where each face loop represents a corner of the face.
# bottom rightuv_data = loop_data[0][uv_layer].uvuv_data.x = 1.0uv_data.y = 0.0
转载于:https://www.cnblogs.com/yaoyu126/p/8625914.html